Columns UI
foobar2000 skript(w
つ〜ことで、まずfoobar2000側の変数から・・・よりも、foobar2000 skript(wについて。
注意:まだ、自分もfbsを学び中なので、以下には虚偽とかが書かれてるかもしれません。なので、自分で書いてみて確かめるように。
まずいろいろな変数を$set_global()や$putsで定義していく。変数名はfbs側のローカル変数/予約語に合わないような名前であればどんな名前でも良い。
$puts(color_normaltext, #000000) $puts(color_selecttext, #FFFFFF)
この場合、#000000の値を持つ変数color_normaltextと、#FFFFFFの値を持つ変数color_selecttextを定義していることになる。
ここでふたつ注意点!色の値はRGB24(0xRRGGBB=24bit)ではなく、BGR24(0xBBGGRR)なので注意。
後、もうひとつは、ここで定義した変数はあくまでも新規に定義した変数なので、その変数の値を変えても、その変数を使ってるローカル変数が無ければ何も変わらないので注意。
それを後で、
$set_style(text,$get_global(color_normaltext),$get_global(color_selecttext))
でtextに登録していく。
つまり、$set_styleに対して引数を渡しているのではなく、textに渡していることになる。
アヤシイ・・・よくよくソース見ると二つしか登録していない。
$set_style(back, $ifequal( $mod(%_playlist_number%, 2), 0, $get_global(cBgStd), $get_global(cBgAlt)), $get_global(cBgSel) )
$modは%_playlist_number%で展開した値と、2でmodulo(剰余)している。%_palylist_number%は多分、プレイリストの上から下までの合計値だろう。
$ifequalについて説明する前に、$ifの説明から。
$ifはfbsの取説によると、
If X contains at least one present field, executes/displays Y, otherwise executes/displays Z.
ということだ。つまり、XとYを比較し、XがYと合っていれば(true)Yが表示/展開され、合っていなければ(false)Zが表示/展開される。
以下を実行してみると分かりやすい。
$if(%artist%, %artist%, Unknown artist)
%artist%はタグ情報のARTISTを展開するマクロだ。
もし以下の場合、
$if(hoge, %artist%, Unknown artist)
ARTISTタグがhogeで無い場合、Unknown aritstが表示される。
そして、$ifには$ifequalのようなoperatorを付けれる。(equalの部分がoperator)
fbs取説には$equal()の説明は無いが、equalということだから、何かと比較する関数か、展開された場合、変数に対して何かしらの値を代入する関数だろう。
・・・orz
そういえば日本語ヘルプがあるんだった・・・Title Formatting Help - foobar2000 Wiki
まぁ、いろいろと分からないことがあればここを参照すると良い。(偉そうw
f2kwikiによると、$ifequal()は
$ifequal(a,b,c,d): もし数字aが数字bと等しい場合、cを実行/表示します。それ以外の場合dを実行/表示します。
ということだ。
つまり、
$set_style(back, $ifequal( $mod(%_playlist_number%, 2), 0, $get_global(cBgStd), $get_global(cBgAlt)), $get_global(cBgSel) )
これは$mod()の返値と0とを比較し、trueであれば$get_global()で展開されたcBgStdの値を、falseであれば、$get_global()で展開されたcBgAltの値をbackに登録してるってことになる。
続き
う〜む、大体分かった。
まず以下のコード、
$puts(b_active,FFFFFF) $puts(b_backgr,C0CCB4)
# Set Color $set_global(gl_bs,$get(b_active)) $set_global(gl_bg,$get(b_backgr)) # Set Single Flag # if アルバムでは無いか、Track Numberが0では無いか(またはTrがあるか/それかTr1以外であるか)、Single Trackである場合 # singleを1に、 # そうでない場合0にする。 $if($or($not(%album%),$not(%tracknumber%),%singletrack%), $puts(single,1), $puts(single,0) ) #1) $ifequal($get(single),1, $set_global(gl_bn,$get(b_normal)), #2) $ifequal(%tracknumber%,1, $set_global(gl_bn,$get(b_1st_track)), #3) $ifequal($mod(%_playlist_number%,2),0, $set_global(gl_bn,$get(b_stripe_even)), $set_global(gl_bn,$get(b_stripe_odd)) )))
このコードはgl_bs、gl_bn、gl_bgについて設定していて、後でそれらの変数を
$set_style(back,$get_global(gl_bn),$get_global(gl_bs),$get_global(gl_bg))
でbackに登録している。
だが、backには三つ登録してあるのに、textには二つしかない。
$set_style(text,$get_global(gl_tn),$get_global(gl_ts))
これはbackの最初の引数が通常の状態、二番目がカーソルがアクティブな状態、三番目がカーソルで選択してない(アクティブじゃない)状態だからで、textには最初の引数が通常の状態、二番目がカーソルがアクティブな状態だからだろう。
gl_bn: Global Background Normal
gl_bs: Global Background Active selected
gl_bg: Global Background Non-Active selected
gl_tn: Global Text Normal
gl_ts: Global Text Active selected
ってことだろう。
ちなみに、sugar5.1の場合、$set_style()関連のコードは以下に示す場所にある。
Display+ | +Columns UI | +--Playlist switcher +--Playlist view+ |*ここからタブ +General +Colour and Fonts +Colmns <-の各Colmnsにある。さっきのコードはTitleのStyleタブにある。
ふむふむ・・・大体分かってきたので昨日の続きを書いてみる。
Globalが最終的に$set_style()で使われる変数名。
Group | Global | Name | Description |
---|---|---|---|
Text | gl_tn | Global Text Normal: 最終的に通常時のテキストの色を変える。 | |
gl_ts | Global Text Select: 最終的に選択時のテキストの色を変える。 | ||
t_normal | 通常時のテキストの色を変える。 | ||
t_select | 選択時のテキストの色を変える。 | ||
t_hiding | 選択されていない時のプレイリスト(PL)であれば一桁、トラックリスト(Tr)であれば二桁、タイム(Time)であれば一桁か二桁、リプレインゲイン(RG)であれば一桁の、例えば、"01"であれば、本来表示されない"0"の部分の色を変える。(長っw | ||
t_shadow | t_hidingとは逆で、選択されて無い時のt_hidingの色を変える。 | ||
t_white | トラックナンバーによって変動する。具体的にはcolor_highlightに使われてるのと、Tr1、Tr2の時の色を変える。 | ||
t_album | トラックナンバーによって変動する。具体的にはcolor_highlightに使われてるのと、Tr1、Tr2の時の色を変える。 | ||
t_various | う〜ん・・・設定はされてるんだけど、色に変化が無い・・・ | ||
t_varisel | こっちも同じ | ||
Background | gl_bn | Global Background Normal: 最終的に通常時の背景の色を変える。 | |
gl_bs | Global Background Select: 最終的にアクティブ時の背景の色を変える。 | ||
gl_bg | Global Background: 最終的に選択時の背景の色を変える。 | ||
b_normal | 通常時の背景の色を変える。 | ||
b_active | アクティブ時の背景の色を変える。 | ||
b_backgr | 選択時の背景の色を変える。 | ||
b_1st_track | Tr1の背景の色を変える。 | ||
b_2nd_track | Tr2の背景の色を変える。 | ||
b_3rd_track | Tr3の背景の色を変える。 | ||
b_4th_track | Tr4の背景の色を変える。 | ||
b_stripe_even | プレイリストナンバーが偶数の背景の色を変える。 | ||
b_stripe_odd | プレイリストナンバーが奇数の背景の色を変える。 | ||
r_lv1 | R(ランク)が1のトラックの背景の色を変える。 | ||
r_lv2 | R(ランク)が2のトラックの背景の色を変える。 | ||
r_lv3 | R(ランク)が3のトラックの背景の色を変える。 | ||
r_lv4 | R(ランク)が4のトラックの背景の色を変える。 | ||
r_lv5 | R(ランク)が5のトラックの背景の色を変える。 | ||
Codec | co_d | Codec Display: 最終的にコーデックの色を変える。 | |
c_mp3 | コーデックがmp3の時のコーデック情報の色を変える。 | ||
c_wma | Windows Media Audio ~ | ||
c_wma_s | Windows Media Audio Stream?(asf?) ~ | ||
c_vob | Ogg Vorbis ~ | ||
c_mpc | MPC ~ | ||
c_aac | AAC ~ |