コンポーネントの設定/Columns UI/Panel Stack Splitter

Last-modified: 2016-05-07 (土) 14:12:20
Counter: ?, today: ?, yesterday: ?

現在?人閲覧中

 

目次

 

これは何?

Columns UI用のパネルを配置するためのsplitter。
ボーダーなしや、パネルを重ねたりなど少しは自由度の高い設定が出来る。(Release.txtより)
http://foo2k.chottu.net/で配布されている
Columns UIが必要。

導入方法

foo_uie_panel_splitter.dllをcomponentsフォルダに入れ、
Columns UIのLayoutタブでSplitter>Panel Stack Splitterを選択、配置する。

操作方法

設定

関数

OPTIONSで複数の設定を指定する場合、区切り文字には半角スペースを使う。

フォント

$font()

$font(name,size,OPTIONS)
  • name: フォント名
  • size: フォントサイズ
  • OPTIONS
    • bold: 太字
    • italic: 斜体
    • underline: 下線
    • strikeout: 打消し線

フォント設定

例 $font(Tahoma,10,bold italic)

描画

$drawstring()

$drawstring(text,x,y,W,H,r-g-b-a,RESERVED)
  • text: 描画する文字列
  • r-g-b-a: 文字色(赤-緑-青-透明度)
  • OPTIONS
    • left: 左
    • hcenter :中央
    • right: 右
    • top: 上
    • vcenter: 中央
    • bottom: 下
    • nowrap: 描画の回り込みをしない
    • noaa: アンチエリアスをかけない(指定しなくてもかからないフォントもある)

文字列描画関数
文字列はこの関数と$drawtext()でしか表示できない。
textを座標(x,y)に出力
TrueTypeフォントしか使えないかも。

例 $drawstring(abcd,10,10,,,255-128-64-128,hcenter noaa)

$drawrect()

$drawrect(x,y,w,h,R1-G1-B1-A1,R2-G2-B2-A2,OPTIONS)
  • R1-G1-B1-A1: 内部色
  • R2-G2-B2-A2: 枠の色
  • OPTIONS
    • aa: アンチエリアスをかける

矩形描画関数
座標(x,y)にサイズ(w,h)で矩形を描画

例 $drawrect(0,50,50,50,255-128-64-128,,aa)

$gradientrect()

$gradientrect(x,y,w,h,r1-g1-b1-a1,r2-g2-b2-a2,OPTIONS)
  • r1-g1-b1-a1: グラデーション開始色
  • r2-g2-b2-a2: グラデーション終了色
  • OPTIONS
    • vertical: 垂直方向
    • horizontal: 水平方向
    • aa: アンチエリアスをかける

矩形内をグラデーションで塗りつぶす描画関数
座標(x,y)にサイズ(w,h)で矩形を描画

例 $gradientrect(0,50,50,50,255-128-64-128,255-255-255,vertical aa)

$drawroundrect()

$drawroundrect(x,y,w,h,w2,h2,R1-G1-B1-A1,R2-G2-B2-A2,RESERVED)
  • R1-G1-B1-A1: 内部色
  • R2-G2-B2-A2: 枠の色

角を丸めた矩形描画関数
座標(x,y)にサイズ(w,h)で角を丸めた矩形を描画。
角の丸みは、w2,h2で調整できる。
w > 4*w2 && h > 4*h2 を満たす必要がある。

例 $drawroundrect(10,20,50,50,4,4,255-255-128-255,,)

$drawellipse()

$drawellipse(x,y,w,h,R1-G1-B1-A1,R2-G2-B2-A2,RESERVED)
  • R1-G1-B1-A1 内部色
  • R2-G2-B2-A2 枠の色

楕円描画関数
座標(x,y)にサイズ(w,h)で楕円を描画

画像

$imageabs()

$imageabs(x,y,w,h,path,OPTIONS,n)
  • path: 画像へのパス
  • OPTIONS
    • nokeepaspect: アスペクト比を維持しない
    • left
    • right
    • top
    • bottom
    • nodisplay: メモリに読み込むだけで表示しない
    • artreader: pathのファイルに埋め込まれている画像を表示する
  • n: rotateflipのためのインデックス
    • 1: 90
    • 2: 180
    • 3: 270
    • 4: 左右反転
    • 5: 90 + 左右反転
    • 6: 上下反転
    • 7: 90 + 上下反転

座標(x,y)にサイズ(w,h)で pathで指定される画像を表示する。
最初にTFが評価されたとき(起動時など)のサイズ(w,h)にリサイズしてメモリ上にキャッシュする。
メモリ上にキャッシュした後で参照されなくなった画像は、速やかにメモリ上から削除される。
次に同じpathで画像が参照されれば、すべてメモリ上のリサイズ済み画像を使って表示する。
w,hが省略されると、オリジナルのサイズでキャッシュする。
メモリにキャッシュした画像については、$getimagewidth(path),$getimageheight(path)が使える。

この関数は、毎回画像ファイルをHDDに読みにいくことを回避したり、処理速度を上げる目的で使用する。
リサイズに関する処理が気にいらなければ、drawimageを使うこと。

※普通はこっち使っておけば問題ないはず。

例1 $imageabs(10,10,,,C:\%album%.jpg)
例2 $imageabs(10,10,50,50,C:\%album%.jpg)
例3 $imageabs(10,10,50,50,C:\%album%.jpg,left top)
例4 $imageabs(10,10,50,50,C:\%album%.jpg,,6)
例5 $imageabs(10,10,50,50,%_path%,artreader)

$imageabs_rc()

$imageabs_rc(rw,rh,srcx,srcy,srcw,srch,x,y,path,OPTIONS,n)
  • path: 画像へのパス
  • OPTIONS
    • nokeepaspect: アスペクト比を維持しない
    • nodisplay: メモリに読み込むだけで表示しない
  • n: rotateflipのためのインデックス(imageabsと同じ)

リサイズ後クリップして画像を表示する関数。
pathで指定される画像をサイズ(rw,rh)にリサイズ後に、その領域(srcx,srcy,srcw,srch)を
座標(x,y)にサイズ(srcw,srch)で 表示する。

$getimagewidth(), $getimageheight()

$getimagewidth(path), $getimageheight(path)
  • path: 画像へのパス

pathで指定される画像が$imageabs $imageabs_rcもしくは $imagebuttonでメモリにキャッシュ中の画像であれば、
そのリサイズ済みの水平幅、垂直幅を返す。

$drawimage()

$drawimage(x,y,w,h,path,OPTIONS,n)
  • path: 表示する画像へのパス
  • OPTIONS
    • nokeepaspect: アスペクト比を維持しない
    • left
    • right
    • top
    • bottom
    • artreader: pathのファイルに埋め込まれている画像を表示する
  • n: rotateflipのためのインデックス
    • 1: 90
    • 2: 180
    • 3: 270
    • 4: 左右反転
    • 5: 90 + 左右反転
    • 6: 上下反転
    • 7: 90 + 上下反転

座標(x,y)にサイズ(w,h)で path で指定される画像を表示
wとhを省略するとオリジナルのサイズで表示する
表示後処理後直ちにメモリ上から、削除される。
TFが評価されるたびに画像の再読み込みを行う。

※とてつもなく大きい画像を表示したり、画像を多く表示するのにメモリ占有量を減らしたかったり
imageabsのリサイズ処理が気に入らない人向け。

ファイル

$findfile()

$findfile(path)
  • path: 存在を調べるファイルへのパス

path(ワイルドカード可)で指定されるファイルが存在すれば、最初に見つかったファイルのパスを返す。
ファイルが無ければ何も返さない。

座標

$setparcentmode()

$setparcentmode(bx,by,bw,bh)
  • bx: x座標指定モード
    • 0:Splitter内の絶対座標で指定するモード
    • 1:Splitterのサイズに対する相対値(パーセント値)での指定とする。
  • by: y座標指定モード(同上)
  • bw: w座標指定モード(同上)
  • bh: h座標指定モード(同上)

座標の指定モードを設定する。
ウィンドウの表示領域が
(0,0) (%_width%, %_height%)であるところを、
パーセント値指定モードでは、(0,0) (100,100)にマッピングする。
x,y,w,h個別に設定できる。
x,y,w,hのいずれかを引数にもつ関数すべてに影響を及ぼす。

ボタン

$textbutton()

$textbutton(x,y,w,h,text,mover_text,command,options1,options2)
  • text: ボタンのラベル
  • mover_text: マウスオーバー時のボタンのラベル
  • command: 実行するコマンド
    • COMMAND:command_path
      command_pathで指定されるメニューコマンドを実行する。
      COMMAND:View/Equalizerや、
      COMMAND:File/Preferences;COMMAND:Playback/Play
      というように指定する。
      command_pathもTFとして評価されるので注意
      COMMAND:'View/Equalizer'としておくのを推奨。
    • CONTEXT:context_path
      context_pathで指定されるコンテキストメニューコマンドを実行する。
      コンテキストメニューの処理対象は現在の再生トラック。
      CONTEXT:Propertiesみたいに指定する。
      context_pathもTFとして評価されるので注意
    • WINDOWSIZE:cx:cy
      ウィンドウサイズを(cx,cy)にする。
      Splitter風情が、ウィンドウサイズを変更していいかは微妙。
    • PANELSHOW:cap:sh
      captionがcapである子パネルの表示/非表示を切り替える。
      sh
      0  非表示
      1  表示
      -1  表示/非表示のトグル
    • TFMODE:mode
      Per Trackのtitleformatのモードを変更する。
      mode
      0  nowplayingモード
      1  follow curosrモード
      -1  トグル
    • REFRESH
      TFのPerTrack, PerSecondを更新する。
  • options1: デフォルトの装飾指定 (スペースで区切って複数指定可)
    • fontcolor:r-g-b: テキストの色
    • brushcolor:r-g-b-a: ボタン矩形の塗りつぶし色
    • pencolor:r-g-b-a: ボタン外枠の色
    • left top bottom right: テキストの位置
  • options2: マウスオーバー時の装飾指定 (スペースで区切って複数指定可)
    • fontcolor:r-g-b: テキストの色
    • brushcolor:r-g-b-a: ボタン矩形の塗りつぶし色
    • pencolor:r-g-b-a: ボタン外枠の色
    • left top bottom right: テキストの位置

コマンドは"命令種別:引数"の書式で指定する
※余分なスペースを入れないこと
;で区切って複数命令指定可のつもり。
指定できる命令がまだ少ない。
すごく実装が面倒。。。
:や;はスプリッタ文字になっているので、これらの文字が含まれる引数は、
上手くパース出来ない可能性がある。

注意1: 処理時間のかかる命令を指定しないこと。
注意2: 複数命令指定されている場合、命令の実行順序は保証されない。

特にCOMMANDとWINDOWSIZEが指定される場合、WINDOWSIZEの方がおそらく先に実行される。
COMMAND,CONTEXT同士だと、順序が保証されるかも。

$imagebutton()

$imagebutton(x,y,w,h,path,mover_path,command,options1,options2)
  • path: ボタンに使用する画像へのパス
  • mover_path:マウスオーバー時のボタンに使用する画像へのパス
  • command: 実行するコマンド
  • options1 画像表示オプション
    • nokeepaspect
    • left top bottom right
  • options2: マウスオーバー時の画像表示オプション
    • nokeepaspect
    • left top bottom right

画像ボタンを作る。
Per Trackのみ有効。 Per Secondには記述しないこと。
画像の内部処理としては$imageabsと扱いが等しく、メモリ上にキャッシュされる。
w,hが省略されると、pathで指定される画像のオリジナルサイズになる。
commandはtextbuttonと共通。

GDI描画

GDIで描画する。 シンプルだけど処理が軽い場合がある。(特にWindowsXP)

$drawtext()

$drawtext(text,x,y,W,H,r-g-b,RESERVED)
  • option
    • left hcenter right
    • top vcenter bottom
    • noclip

文字列描画関数
textを座標(x,y)に出力

$drawtextex()

$drawtextex(text,x,y,W,H,r-g-b,OPTIONS)
  • OPTIONS
    • left hcenter right: 水平アライン指定
    • top vcenter bottom: 垂直アライン指定
    • noclip: クリップしない
    • wrap: ラップアラウンド許可指定(vcenter、bottomとは排他)
    • end_ellipsis: テキストがクリップされる場合、テキストの最後を...に置き換える

GDI文字列描画関数2
textを座標(x,y)に出力

例 $drawtextex(text,0,0,%_width%,%_height%,0-0-0,hcenter vcenter end_ellipsis)

$gettextwidth()

$gettextwidth(text)

GDIで描画したときのテキストの水平幅を返す。

$gettextheight()

$gettextheight()

GDIで描画したときのテキストの垂直幅を返す。

$fillrect()

$fillrect(x,y,w,h,r-g-b,RESERVED)

矩形塗りつぶし関数

パネル操作

$showpanel(),$showpanel_c()

$showpanel(i,sh),$showpanel_c(caption,sh)
  • i: 子パネルリストでの何番目か(0から数えて)
  • caption: パネルキャプション名
  • sh
    • 0: 非表示
    • 1: 表示

パネルの表示、非表示変更関数

$movepanel(),$movepanel_c()

$movepanel(i,x,y,w,h),$movepanel_c(caption,x,y,w,h)
  • i: 子パネルリストでの何番目か(0から数えて)
  • caption: パネルキャプション名

Force layout指定されたパネルのみ、座標(x,y) サイズ(w,h)に移動させる。

$getcaption()

$getcaption(i)
  • i: 子パネルリストでの何番目か(0から数えて)

子パネルリストでのi番目パネルに設定されているキャプションを返す。

$isvisible_c()

$isvisible_c(caption)
  • caption: パネルキャプション名

パネルの表示状態を返す。(表示されていれば真、非表示なら偽)