Titleformat(TF)はfoobar2000中で特殊な働きをするスクリプトです。 TFを用いる(Title Formatting)と、柔軟で高度な動作を行うことができます。 このページの理解に不可欠ですので、必ず目を通してください。
基本的には、入力された文字列をTFに従って上から順に整形して出力します。
あいうえお → 「あいうえお」と出力される %title% → トラックのタイトル名が出力される $greater(x, y) → xがyより大なら「真」と出力され、そうでないなら「偽」が出力される
これらの関数は、foobar2000の仕様に基づき処理されます。 また、コンポーネントが提供する関数が、TFを拡張します。 リファレンスに、関数とその書式、仕様が記載されています。 従って、リファレンスを見ながらTFを入力していくことになります。
但し、PSS/ELPLでは、出力しても表示はなされません。 代わりに、用意されている文字列表示関数を用いて描画します。
$drawtext(あいうえお,x座標,y座標,幅,高さ,色,オプション)
この$drawtext()関数はfoobar2000標準のものではなく、PSS/ELPLが 独自に実装しているので、仕様はPSS/ELPLのリファレンスに記載されています。
コンポーネントが提供するパネルを配置するUI
foobar2000の設定画面(Preferences)内のDisplay項目のUser Interface Moduleを ドロップボックスをクリックしてColumns UIに変更、foobar2000を再起動します。 Columns UI(以下CUI)は、パネルの配置でレイアウトを変更するUIです。 設定画面のDisplay-Columns UIのLayoutタブでパネルの配置を行います。
User interfaceから探す。 foobar2000はライブラリ指向。各機能でそれぞれ1個選ぶ。勿論複数でもかまわないが。
$puts(coverPath,$findfile($replace(%path%,%filename_ext%,cover.*))) $drawimage(0,0,150,150,$get(coverPath),nokeepaspect)これ見てぱっと意味がわからない場合、上記の資料見て理解してください。 説明はきちんと記載されているので理解できるはずです。 わかる気ないけどとりあえず反射したいとかいうのは愚の骨頂です。 $findfile(),$drawimage()はPSS/ELPLのTFですので各readme.txtかPSS解説を参照。
$puts(coverPath,$findfile($replace(%path%,%filename_ext%,cover.*))) $drawimage(0,0,150,150,$get(coverPath),nokeepaspect) $imageabs_rc(150,150,0,75,150,75,0,150,$get(coverPath),nokeepaspect,6,) $gradientrect(0,150,150,75,255-255-255-0,255-255-255-255,vertical)PSS,ELPLのTFの引数に色指定のAがある場合、透明度を指定できます(0=透明、255=不透明)。
$if($get(coverPath),,$puts(coverPath,$files_ex(0,$replace(%path%,%filename_ext%,),*.png))) $if($get(coverPath),,$puts(coverPath,$files_ex(0,$replace(%path%,%filename_ext%,),*.jpg)))
$ifgreater($calc($getimageinfo($get(coverPath),height)*1.75),$getimageinfo($get(coverPath),width), //正方形(表のみのジャケット) $puts(coverSize,150) , //横長の矩形(表裏ジャケット) $puts(coverSize,300) ) $drawimage(0,0,$get(coverSize),150,$get(coverPath),nokeepaspect)横が縦の1.75倍より大のとき横長と判断。
TFでデザイン可能な高機能Splitter
// 幅 $puts(PB_W,200) $puts(PB_P,$muldiv($get(PB_W),%_time_elapsed_seconds%,%_time_total_seconds%)) // PB_P<1のとき表示が変になるので1にする $ifgreater(1,$get(PB_P)),$puts(PB_P,1),) // 表示 $drawrect(0,0,$get(PB_W),20) $drawrect(0,0,$get(PB_P),20)演奏した長さ/全体の長さでどれだけ演奏したかの割合が求まるので、それにプログレスバーの長さを乗算すると位置が出ます。
Seek Panelを被せる(上記例では0,0,200,20)
SCPL Likeなグループヘッダ指向のプレイリスト パネル右クリック->Settings...より設定
TFを入力する
グループ化の設定。定義を何種類か作っておくと便利。 ソートは表示上のもので、実際の順序は保持される。 グループ化したくない場合、row number of group numberを0にする。
TFのプリプロセッサとして動作。
$ifequal($mod(%list_index%,2),0,偶数行,奇数行)