ELPlaylist解説(わかりづらいので少しずつ修正する予定)
$font(フォント名,8,)
$drawtext(%album% - %artist%,4,0,$sub(%el_width%,12),%el_height%,192-064-064,left vcenter)
$fillrect($add($gettextwidth(%album% - %artist%,フォント名,8,),8),$div(%el_height%,2), $sub(%el_width%,$add($gettextwidth(%album% - %artist%,フォント名,8,),16)),1,192-064-064,)
$setcoordinate(1) $fillrect($add($gettextwidth(%album% - %artist%,フォント名,8,),8),$div(%el_height%,2), $sub(%el_width%,10),$add($div(%el_height%,2),1),192-064-064,) $setcoordinate(0)
$font(フォント名,8,)
$if($findfile($replace(%path%,%filename_ext%,folder.jpg)), $puts(coverpath,$replace(%path%,%filename_ext%,folder.jpg)) , $puts(coverpath,./images//nocover.png) )
$imageabs(10,$sub(8,$mul(20,%el_item_index2%)),70,70,$get(coverpath),,) $imageabs(-6,$sub(-5,$mul(20,%el_item_index2%)),96,96,./images/cover/tape.png,,)
$setworldtransform(2) $imageabs(10,8,70,70,$get(coverpath),,) $imageabs(-6,-5,96,96,./images/cover/tape.png,,) $setworldtransform(0)
$if($findfile($replace(%path%,%filename_ext%,folder.jpg)), $puts(coverpath,$replace(%path%,%filename_ext%,folder.jpg)) , $puts(coverpath,./images/ibiza/cover/nocover.png) ) $enabledraw(%el_is_empty%) $imageabs(10,$sub(8,$mul(20,%el_item_index2%)),70,70,$get(coverpath),,) $imageabs(-6,$sub(-5,$mul(20,%el_item_index2%)),96,96,./images/cover/tape.png,,) $enabledraw(%el_is_valid%) $imageabs(10,$sub(8,$mul(20,%el_item_index2%)),70,70,$get(coverpath),,) $imageabs(-6,$sub(-5,$mul(20,%el_item_index2%)),96,96,./images/cover/tape.png,,)
$if(%el_isplaying%,,$drawtext(%length%,0,0,$sub(%el_width%,10),%el_height%,064-064-064,vcenter right)) $if(%el_isplaying%, $drawtext(%tracknumber%,96,0,%el_width%,%el_height%,064-064-255,vcenter) $drawtext(%title%,128,0,%el_width%,%el_height%,064-064-255,vcenter), $drawtext(%tracknumber%,96,0,%el_width%,%el_height%,064-064-064,vcenter) $drawtext(%title%,128,0,%el_width%,%el_height%,064-064-064,vcenter) )
$if(%el_selected%, $drawtext(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~, 91,12,$sub(%el_width%,0),%el_height%,192-064-064,vcenter) ,)
$font(フォント名,8,)
$drawtext(%playback_time% / %length%,0,0,$sub(%el_width%,10),%el_height%,064-064-255,vcenter right)
foo_uie_elplaylist.dll v0.4.5beta ●設定項目 << Style >> title format script : 描画を制御するTFを記述します。 Track list アイテム行の描画を制御するTF Group header グループヘッダの描画を制御するTF Per Second 再生トラック行で毎秒更新される描画を制御するTF (Now playing info系のTFが使用できます) デフォルトで入る記述では、アルバム画像が存在することが前提になっています。 General->Title format Processor->__ART_PATH__ に適切な画像のパスを設定してください。 title format scriptはpresetとして複数保存できます。 pseudo transparent : 擬似的な背景透過を行います。処理が重くなることが多いです。 (重い場合、表示領域を狭くするとマシになるかもしれません) system colour mode : 選択アイテムやフォーカスアイテムの背景をシステム定義の背景色でtitle format scriptの起動前に描画しておきます。 << General >> 主にグルーピングに関する設定ができます。 複数の設定をpresetとして保存できます。 group format : 各トラックをグルーピングするためのTitleformatを記述します。 これをTFとして評価した結果が同じになる一続きのトラックをグループとして扱います。 group formatの結果が同じでも、プレイリスト上で離れているトラックは異なるグループとして扱われます。 group formatを"|||"で分割することで、階層的にgroupを設定できます。 例: %album artist%|||%album% 子グループを持つグループには、トラックを割り当てられないという制約があります。 そのようなグループにトラックを割り当てようとすると、ダミーグループヘッダが挿入されます。 このテキストの最後に少し詳しく書いてあります。 sort format : プレイリスト内のsortを行うためのTitleformatを記述します。 sortの実行は、コンテキストメニューから行います。 [注意] 自動ではsortしません。自動でsortしたい場合は、プレイリスト生成側の方で対応する必要があります。 group row : "row height"を単位としたグループヘッダの高さを設定します。Titleformatが有効がです。 TFとして処理された結果が数値(0~16)を返さなければなりません。 このためグループヘッダの高さは、必ずrow heightの整数倍(0~16倍)になります。 [注意] グループ先頭トラックで、group rowは評価されます。 min item num : グルーピングした結果、グループ内のitemの数がこの設定値に満たない場合、ダミー行を挿入して水増しします。 Titleformatが有効で、TFとして処理した結果が0以上の数値を返さなければなりません。 (用途は、アルバム画像の表示範囲を確保することぐらい?) [注意] グループ先頭トラックで、min item numは評価されます。 ダミー行では、Track listで$enabledraw()を使わない限り、描画がoffになります。 他の有効行と同様に描画したい場合は、$enabledraw(1)などで、描画をonにしてください。 ダミー行のTitleformatはそのグループの最後の有効トラックとして処理されます。 playlist filter : enable playlist filterがonの場合、プレイリストが切り替わったときにプレイリストの名前から presetを自動で選択できるようにします。 enable all playlists すべてのプレイリストでpresetが有効。 enable only on 指定のプレイリスト名に一致した場合presetが有効。 disable on 指定のプレイリスト名に一致した場合presetが無効。 preset リストの順序で優先度が決まります。 指定するプレイリストの名前は、";"で区切ることで複数指定できます。TFやワイルドカードは無効です。 titleformat script : このpresetと関連付けたいtileformat scrpitsの名前を1つだけ設定できます。 enable playlist filter playlist filterを有効にして プレイリスト名からpresetを自動で選択するようにします。 prioritize current preset 有効なpresetを探すときに、まず今選択されているpresetを最優先にします。 row height : 1行の基本高さを設定します。 scrollbar : スクロールバーの表示状態の設定:default(自動で表示/非表示切り替え)/hide(常に非表示)/show(常に表示)、 およびスクール量を設定します(0はシステムのデフォルト)。 title format preprocessor : 各 Titleformat[Track list] [Group header] [Per Second] [Group row] [Min item num] を評価する前に、 テキストの置換を行います。 foo : C:\%album%.jpg と設定した場合、 各 Titleformatの %foo% が C:\%album%.jpg に置換されます。 デフォルトで設定されている__ART_PATH__なら %__ART_PATH__%となります。 << behaviour >> click action : リスト上でクリックしたときの動作を変更できます。 ただし、ダミー行では何もしません。 display only the focused group : フォーカスしたグループのみ表示します。他のプレイリスト表示パネル(Graphical Browserとか)との連携が前提。 hide all items when playlist is changed : デフォルトでグループヘッダのみの表示にして、アイテム行を隠します。 auto-collapse : フォーカスしたグループ以外アイテム行を隠します。 このオプションがonだと、グループヘッダでsingle clickするだけで アイテム行の表示/非表示が切り替わるようになります。 またクリックアクションで開いたグループは自動では閉じません。 再生トラックに追従させたい場合、Playback/Cursor Follows Playbackと組み合わせて使ってください。 hide items which have no group header : グループヘッダがない(group rowが0な)グループのitemでも隠すようにします。 update every second : 再生トラックのPer Secondを有効にする。より正確には、毎秒単位の描画の更新をon/offするだけです。 move items with drag and dop : 選択アイテムをDrag & Dropで移動できるようにします。 このオプションがoffでも、[Alt] 押しながらの Drag & Dropで移動できます。 ●ショートカットキーバインド Ctrl-c : Copy Ctrl-v : Paste Ctrl-x : Cut Ctrl-a : 全選択 Delete : プレイリストからトラックを除去 Alt-[Up]/[Down] : 選択トラックの移動 ("hide all items when playlist is changed" が offであること) [注意]: 本体のGeneral->Keyboard Shortcutsの設定が優先されます。 ##[Alt] + Drag & Drop でも選択トラックの移動できます。 ●拡張コマンドリファレンス (ここに書いてあるもの以外にもfoobar本体のデフォルトTFはだいたい使えます) //////////fields/////////// %el_width% 行の表示領域の横幅を返す [Track list] [Group header] [Per Second] %el_height% 行の表示領域の高さを返す。 ( グループ行は%el_height% = %el_group_row% * %el_row_height% トラック行は%el_height% = %el_row_height% ) $setworldtransform()の影響を受ける。 [Track list] [Group header] [Per Second] %el_isplaying% 再生中か否か [Track list] [Group header] [Per Second] %el_selected% プレイリスト上で選択中か否か [Track list] [Per Second] %el_focused% プレイリスト上でフォーカス中か否か [Track list] [Per Second] %el_row_height% 行の基本的な高さを返す。 (グループヘッダ行では%el_height%と異なる。) [Track list] [Group header] [Per Second] %el_group_row% グループヘッダ行の高さが%el_row_height%何個分か。 グループヘッダでは%el_height% = %el_group_row% * %el_row_height% の関係 [Track list] [Group header] [Per Second] %el_item_count% グループ内のトラックの個数 [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_item_count2% ダミー行を含むグループ内のトラックの個数 [Track list] [Group header] [Per Second] %el_direct_item_count% グループに直接割り当てられてるトラックの個数 特殊な場合を除いて、サブグループを持つグループでは0になる [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_item_index% グループ内のトラックのインデックス(0から数えて) ダミー行ではカウントアップは中止される。 [Track list] [Per Second] %el_item_index2% グループ内のトラックのインデックス(0から数えて) ダミー行でもカウントアップされる。 [Track list] [Per Second] %el_total_group_count% グループの個数(すべてのグループヘッダの個数) [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_total_group_index% グループのインデックス(リスト上でのグループヘッダのインデックス) [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_group_count% 同じ親グループに属しているグループの個数 [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_group_index% 親グループから見たときのグループのインデックス(0から数えて) [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_group_depth% 現在のグループの深さ(0から数えて) [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_subgroup_count% サブグループの数 子グループの数であり、孫グループの数などはカウントされない。 [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_subgroup_count2% サブグループの累積数 孫グループ以降も数にカウントされる。 [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_group_format% 現在のグループでgroup formatをTFで処理した結果を返す。 [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_is_collapsed% (%el_is_hide_item%) アイテム行を隠しているか否か。 (グループヘッダのみの表示かどうか) [Group header] [Group row] %el_is_empty% ダミー行か否か。 (単に%el_is_valid%と逆) [Track list] [Per Second] サブグループ構造を上手く構成できない場合に、ダミーとして入れられるグループ行か否か。 [Group header] [Group row] [Min item num] %el_is_valid% 有効な(ダミー行ではない)行か否か。 [Track list] [Per Second] [Group header] [Group row] [Min item num] %el_is_noheader% グループヘッダがあるかないか (%el_group_row%が0なら1) [Track list] [Per Second] %el_sum_length% グループのトラックの長さ合計 [hh:]mm:ss [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_sum_length_seconds% グループのトラックの長さ合計 (秒) [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_backcolour% 背景色をr-g-b形式で返す。 r-g-b-a形式したい場合は、 %el_backcolour%-192 などでalpha値を追加できる。 [Track list] [Group header] [Per Second] %el_preset_index% 現在のpresetのインデックスを返す。 [Track list] [Group header] [Per Second] [Group row] [Min item num] %el_preset_name% 現在のpresetの名前を返す。 [Track list] [Group header] [Per Second] [Group row] [Min item num] ////////functions/////// 描画制御関数 [Track list], [Group header], [Per Second] $font(name,size,OPTIONS) フォント設定 OPTIONS: bold italic underline strikeout 例 $font(Tahoma,10,bold italic) $drawstring(text,x,y,W,H,r-g-b-a,OPTIONS [,OPTIONS2]) 文字列描画関数 <<注意>>文字列はこの関数とdrawtextとdrawtextexでしか表示できない。 textを座標(x,y)に出力 TrueTypeフォントしか使えないかも。使えないフォントについてはdrawtextだと多分使える。 OPTIONS アライン指定、描画品質指定、クリップ指定などをする。 left hcenter right 水平アライン指定 top vcenter bottom 垂直アライン指定 nowrap ラップアラウンドしない noaa ClearTypeもアンチエイリアスも無効。 aa アンチエイリアスをかけるモード。 ClearTypeが効かないフォントでもアンチエイリアスがかかる。 hq 最高品質で描画するモード。ClearTypeモード。(default) glow_aa glowの特殊モードを使用するオプション trimchar trimword 表示範囲に収まらない場合のトリミングの設定 elipchar elipword 表示範囲に収まらない場合に最後を・・・に置き換える設定 mempos getlastposで、描画した座標を取得できるようにする。 OPTIONS2 (実験的オプション, experimental option) glow効果の条件を指定する。 OPTIONSでglow_aa指定の場合のみ、outlineとsemiboldは使用可能になります。 glow:expand:colour[:strength] glowオプション expand [0-5] colour r-g-b strength [0-3] glow_aaの場合は無効 offset:x:y x glowの水平方向のオフセット y glowの垂直方向のオフセット outline:colour 文字の縁取りを薄く指定の色で描画します (if glow_aa) colour r-g-b semibold 文字を少しだけ太めにする (if glow_aa) ※ これらの仕様は変更される可能性があります。 特にglowの描画方法の変更、およびoutlineとsemiboldの廃止の可能性があります。 ※ glow処理は重いです。(特にpseudo transparentのとき) 例 $drawstring(abcd,10,10,,,255-128-64-128,) $drawstring(abcd,10,10,,,255-128-64-128,left vcenter,glow:2:255-255-255) $drawstring(efgh,10,10,,,255-255-255,vcenter glow_aa,glow:1:32-168-268 semibold) $drawstring(wxyz,10,10,,,255-255-255,glow_aa,glow:0:32-168-268 semibold offset:2:1 outline:32-168-268) $drawstring(wxyz,10,10,,,255-255-255,,glow:2:32-168-268:1) $drawstring(wxyz,10,10,,,255-255-255,elipchar) $drawrect(x,y,w,h,R1-G1-B1-A1,R2-G2-B2-A2,OPTIONS) 矩形描画関数 座標(x,y)にサイズ(w,h)で矩形を描画 R1-G1-B1-A1 内部色 R2-G2-B2-A2 枠の色 OPTIONS aa:アンチエリアスをかける 例 $drawrect(0,50,50,50,255-128-64-128,,aa) $gradientrect(x,y,w,h,r1-g1-b1-a1,r2-g2-b2-a2,OPTIONS,peak_point) 矩形内をグラデーションで塗りつぶす描画関数 座標(x,y)にサイズ(w,h)で矩形を描画 r1-g1-b1-a1 グラデーション開始色 r2-g2-b2-a2 グラデーション終了色 OPTIONS vertical 垂直方向グラデーション horizontal 水平方向グラデーション aa アンチエリアスをかける nonlinear グラデーションの仕方が非線形 peak_point: 0-100 グラデーションの変化の仕方をずらす。 0はデフォルトで、r1-g1-b1-a1 --> r2-g2-b2-a2 50のときは、r1-g1-b1-a1 --> r2-g2-b2-a2--> r1-g1-b1-a1、となる。 例 $gradientrect(0,50,50,50,255-128-64-128,255-255-255,vertical aa) $drawblurrect(x,y,w,h,colour,level) 輪郭をぼかして矩形を塗りつぶす描画関数 level:1-7 $drawfocusrect(x,y,w,h) 指定の矩形にフォーカスを示す枠を点線で描画する関数。 $drawthemerect(x,y,w,h,control_name,partId,stateId) VisualStyleを使って矩形内にコントロール(ボタンやプログレスバー)を描画する関数。 画像として描画するだけなので実用性は低いかもしれない。 VisualStyleで定義されていないコントロールは描画されない。 少なくともWindowXP以上必須。 control_name : 描画したいコントロールの種類の名前を指定する。以下のいずれか。 window button rebar toolbar status listview header progress tab trackbar tooltip treeview spin scrollbar edit combobox taskbar taskband startpanel explorerbar partId: 描画したい部品のID。目安としてコントロールごとに以下の範囲の数値が使用出来る可能性が高い。 ほとんどの場合、定義されているものの方が少ないみたい。 window: 1-37 button rebar listview tooltip: 1-5 toolbar: 1-6 status treeview taskband: 1-3 header spin: 1-4 progress: 1-4 tab trackbar scrollbar:1-10 edit: 1-2 combobox: 1 taskbar: 1-8 startpanel: 1-11 explorerbar: 1-12 stateId: 選択などの状態のID。 状態を持たない部品の場合は0を指定する。 stateIdが0か1で描画されないなら、その部品は定義されていない。 例: $drawthemerect(0,0,%el_width%,%el_height%,tab,10,0) //tabのbody部分を描画 $drawthemerect(,,,,progress,3,0) //プログレスバーのバーを描画 $drawroundrect(x,y,w,h,w2,h2,R1-G1-B1-A1,R2-G2-B2-A2,RESERVED) 角を丸めた矩形描画関数 座標(x,y)にサイズ(w,h)で角を丸めた矩形を描画。 角の丸みは、w2,h2で調整できる。 w > 4*w2 && h > 4*h2 を満たす必要がある。 R1-G1-B1-A1 内部色 R2-G2-B2-A2 枠の色 例 $drawroundrect(10,20,50,50,4,4,255-255-128-255,,) $drawellipse(x,y,w,h,R1-G1-B1-A1,R2-G2-B2-A2,RESERVED) 楕円描画関数 座標(x,y)にサイズ(w,h)で楕円を描画 R1-G1-B1-A1 内部色 R2-G2-B2-A2 枠の色 $drawtriangle(x1,y1,x2,y2,x3,y3,R1-G1-B1-A1,R2-G2-B2-A2,OPTIONS) (x1,y1),(x2,y2),(x3,y3)を頂点とする三角形描画関数 R1-G1-B1-A1 内部色 R2-G2-B2-A2 枠の色 OPTIONS aa:アンチエリアスをかける 例 $drawtriangle(10,5,20,10,10,15,200-100-100,,aa) $imageabs(x,y,w,h,path,OPTIONS,n,alpha,OPTIONS2) 座標(x,y)にサイズ(w,h)で path で指定される画像を表示する。 リサイズ後の画像をメモリ上に保持して、次に参照された場合の処理効率をあげる。 参照されなった画像は、そのうちメモリ上から削除される。 w,hを省略するとオリジナル画像サイズで表示し、キャッシュする。 (メモリ上にすでにキャッシュされてる場合は、キャッシュしてある画像サイズ) 複数の縮小率を扱いたい場合、 縮小した後に拡大されると画質が悪い。 nodisplayやnoexpansionなどを利用して、 使用する縮小率の中で最も大きい縮小率で最初にメモリのキャッシュするのがよい。 画像が存在すればtrue、しなければfalseを返す。 dipsplays the image specified by path. after the image is resized, it is cached on the memory. path: 画像の絶対パス(ワイルドカード不可) OPTIONS nokeepaspect アスペクト比を維持しない(nodisplay,archive,icon以外のオプションと排他) left right top bottom nodisplay メモリに読み込むだけで表示しない noexpansion 縮小はするが、拡大しない archive archive reader経由でpathの画像を表示する。 pathの書式はarchive readerに依存するが、書庫の絶対パス|書庫内ファイルパス が基本。 例: C:\aaa\image.zip|bbb/ccc.jpg icon pathで指定されるiconファイル(*.ico)を表示する。 (archiveとは排他) n rotateflipのためのインデックス 1: 90 2: 180 3: 270 4: 左右反転 5: 90 + 左右反転 6: 上下反転 7: 90 + 上下反転 alpha 0-255 透明度(transparency) OPTIONS2 (shadow effect) glow:expand:colour offset:x:y 例 $imageabs(10,10,50,50,C:\%album%.jpg) $imageabs(10,10,50,50,C:\%album%.jpg,left top) $imageabs(10,10,50,50,C:\%album%.jpg,,6) $imageabs(10,10,50,50,C:\%album%.jpg,bottom,,128) $imageabs(10,10,50,50,C:\%album%.jpg,bottom,,,glow:2:0-0-0 offset:4:4) $imageabs_rc(rw,rh,srcx,srcy,srcw,srch,x,y,path,OPTIONS,n,alpha,OPTIONS2) リサイズしてクリップした画像を表示する。 path で指定される画像をサイズ(rw,rh)にリサイズ後、 その部分領域(srcx,srcy,srcw,srch)を座標(x,y)にサイズ(srcw,srch)で表示。 メモリ上に(rw,rh)でキャッシュする。 TFを評価したときに(rw,rh)が変化すると、画像を再読み込みする。 そのため、rw, rhは固定値で指定すべき。 画像が存在すればtrue、しなければfalseを返す。 OPTIONS (imageabs参照) nokeepaspect アスペクト比を維持しない nodisplay メモリに読み込むだけで表示しない archive icon ( left hcener right top vcenter bottom ) n rotateflipのためのインデックス 1: 90 2: 180 3: 270 4: 左右反転 5: 90 + 左右反転 6: 上下反転 7: 90 + 上下反転 alpha 0-255 透明度(transparency) 例 $imageabs_rc(200,100,0,0,100,50,10,10,C:\%album%.jpg,,6,192) $imageabs_rc(200,100,0,0,200,100,10,10,C:\%album%.jpg,,) ( = $imageabs(10,10,200,100,C:\%album%.jpg,left top,,) ) $imageabs_rc(150,120,0,0,150,120,20,15,C:\%album%.jpg,hcenter vcenter,) ( = $imageabs(20,15,150,120,C:\%album%.jpg,,,) ) ///////描画補助///////// $getlastpos(elem) 画像表示関数imageabs, imageabs_rcの直後で、実際に画像を描画した座標を取得する。 また、measurestringの結果を取得するときにも使う。 drawstringの場合は、mempos指定した場合のみ直後に座標を取得できる。 elem 取得したい要素を指定する。 x : left y : top w : width h : height r : right b : bottom 例: $setworldtransform(2) $puts(img_path,C:\%album%.jpg) $imageabs(10,4,100,100,$get(img_path),top noexpansion,) $imageabs($getlastpos(x),$getlastpos(b),$getlastpos(w),20,$get(img_path),top nokeepaspect,6) $gradientrect($getlastpos(x),$getlastpos(y),$getlastpos(w),$getlastpos(h),%el_backcolour%-128,%el_backcolour%-255) $setworldtransform(0) $measurestring(text,x,y,W,H,OPTIONS) $drawstringで文字列を描画した場合の表示領域を計算する。 また、結果として、表示領域の水平幅を返す。 表示領域の結果は$getlastposで取得する。 OPTIONSは$drawstringと同じ。 また、drawstringで、glow_aaでglow効果をかけた場合、その表示範囲はmeasurestringの結果とは一致しないことがある。 $getimagewidth(path), $getimageheight(path) pathで指定される画像が$imageabs $imageabs_rcで メモリにキャッシュ中の 画像であれば、そのリサイズ済みの水平幅、垂直幅を返す。 つまり$imageabs $imageabs_rcの後ろでしか使用できない。 nokeepaspectを適用していなければアスペクト比を計算できる。 $setcoordinate(mode) $setcoordinate(0,X,Y,W,H) $setcoordinate(1,X,Y,R,B) 描画関数で引数に "(x,y,w,h)" 指定を持つものを、(x,y,right,bottom)指定に変える。 $imageabs_rcや$drawtriangleに対しては無効。 またX,Y,W,Hを指定すると、描画関数で座標指定を省略した場合のデフォルト描画位置を変更することができる。 $imageab, $imageabs_rcや$drawtriangleに対しては無効。 X,Y,W,Hを省略した場合は、デフォルト値にリセットされる。 mode : 座標の指定モード 0 default (x,y,w,h) 1 (x,y,right,bottom) (x,y)<------w-------> |----------------| | | h | | | | |________________| (right,bottom) $setworldtransform(mode) 座標系を変更する。 座標系を変えても別の行に描画できるわけではない。 Group全体や複数のトラックをまたいだ描画を行うときに便利なはず。 特に画像を表示する場合に有効。 (例は初期TFを参照。) mode 0:default 各トラックの原点(x,y)=(0,0)は、それぞれのトラックの左上。 1:group 共通座標系 Groupと各トラックの原点(x,y)=(0,0)をGroup行の左上とする。 %el_height% = (%el_item_count2% + %el_group_row%) * %el_row_height%になる。 2:item list共通座標系 各トラックの原点(x,y)=(0,0)を同グループの最初のトラック行の左上とする。 %el_height% = %el_item_count2% * %el_row_height%になる。 default (0,0) |----------------| |________________| (el_width,el_height) group 共通座標系 (0,0) |----------------| | group header | |----------------| |----------------| |----------------| |----------------| |________________| (el_width,el_height) item list共通座標系 |----------------| | group header | (0,0)|----------------| |----------------| |----------------| |----------------| |________________| (el_width,el_height) $enabledraw(mode) 描画系関数($draw**** や$imageabs**)の描画を行うかどうかを制御する。 この関数が再び呼ばれるまでの描画をon/offする。 主にダミー行での描画の制御に使う。 mode 0: 描画系関数無効 1: 有効 例: $enabledraw(1) $enabledraw(%el_is_valid%) $getsyscolour(index) システムカラーをr-g-b形式で返す。 index:[0-30] システムカラーのインデックス $averagecolour(colour1,colour2[,・・・]) r-g-b-a形式の色の平均する。 (colour1 + colour2 +・・・)/N $blendcolour(colour1,w1,colour2,w2,[,・・・]) r-g-b-a形式で重みつき平均を返す。 (w1*colur1 + w2*colour2 + ・・・ + wN * colourN)/ (w1 + w2 + ・・・ + wN) $addcolour(colour1,colour2[,・・・]) r-g-b-a形式の色を加算する。 colour1 + colour2 + ・・・ + colourN $subcolour(colour1,colour2[,・・・]) r-g-b-a形式の色を減算する。 colour1 - colour2 - colour3 ・・・ - colourN /////////////その他///////////////// ここの関数は、[Track list] [Group header] [Per Second] [Group row] [Min item num]で使える。 $getgroupformat(group_index) group_indexで指定されるグループでgroup formatをTFとして処理した結果を返す。 group_index : 指定するgroupが何番目か(0から数えて) %el_group_format% = $getgroupformat(%el_total_group_index%)の関係 $findfile(path) path(ワイルドカード可)で指定されるファイルが存在すれば、最初に見つかったファイルのパスを返す。 ファイルが無ければ何も返さない。 $el_scale(val,factor[,DIV]) val * factor/100 または val * factor / DIVを返す。 valとfactorが大きすぎるとオーバーフローします。 ///////////////////////////// <<GDI系描画関数>> GDIで描画する。シンプルだけど処理が軽い場合がある。 $drawtext(text,x,y,W,H,r-g-b,OPTIONS) GDI文字列描画関数 textを座標(x,y)に出力 OPTIONS left hcenter right 水平アライン指定 top vcenter bottom 垂直アライン指定 noclip クリップしない $drawtextex(text,x,y,W,H,r-g-b,OPTIONS) GDI文字列描画関数2 textを座標(x,y)に出力 OPTIONS left hcenter right 水平アライン指定 top vcenter bottom 垂直アライン指定 noclip クリップしない wrap ラップアラウンド許可指定(vcenter、bottomとは排他) end_ellipsis テキストがクリップされる場合、テキストの最後を...に置き換える 例 $drawtextex(text,0,0,%_width%,%_height%,0-0-0,hcenter vcenter end_ellipsis) $gettextwidth(text,FONTNAME,SIZE,OPTIONS) GDI(drawtext,drawtextex)でtextを描画したときのテキストの水平幅を返す。 fontの指定も可(オプションは$font参照)。font指定は省略可 $gettextheight(FONTNAME,SIZE,OPTIONS) GDIで描画したときのテキストの垂直幅を返す。 fontの指定も可(オプションは$font参照)。font指定は省略可 $fillrect(x,y,w,h,r-g-b,RESERVED) 矩形塗りつぶし関数 //////////////////////////// ============================================================================== [注意]: drawstringとdrawtextとdrawtextex はそれぞれ違う方法で文字を描画しており、それぞれ一長一短があります。 各関数で出来ることと出来ないことがあっても(おそらく)バグではないです。 とりあえずdrawtextを使っておけば問題はないと思います。 [余談]: 関数の中で色を引数にとるところでは r-g-b-a形式以外にも $rgb(r,g,b)で指定したりできる(はず)。 またdrawtextのみ、引数のtext部分に、$rgb関数や$transition関数を使用して色の指定をすることが出来る(はず)。 ============================================================================== Appendix グループ構成の制約 このような子グループを持つグループ(group1)がtrackを持つ構成はとれません。 group1 |-group2 | |-track1 | |-track2 | |-group3 | |-track3 | |-track4 | |-track5 | |-----track6 |-----track7 この場合、上の構成は下のように変換されます。 group1 |-group2 | |-track1 | |-track2 | |-group3 | |-track3 | |-track4 | |-track5 | |-group4(dummy) | |-track6 | |-track7