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に登録してるってことになる。