foo_uie_panel_splitter.dll v0.3.6.3 (alpha ver)
for foobar2000 v0.9.5.1+, Columns UI0.3+, WindowsXP+ 

Columns UI用パネルを配置するためのsplitter
ボーダーなしや、パネルを重ねたりなど少しは自由度の高い設定が出来る。
いい加減安定してきたか？



説明
パネルの追加と削除は基本的にはColumnsUIのレイアウト設定から行う。
コンテキストメニューから追加できたりもする。

パネルの配置は自動配置モードと、強制設定するモードがある。
自動配置するモードは、水平方向(Horizontal)に配置するか、垂直方向(Vertical)に配置するかを選べる。
forced layoutがonになっているパネルが強制配置モードで配置される。


size:         パネルの表示サイズ(Horizontalなら水平のサイズ、Verticalなら垂直のサイズ)
lock size:    スケーリングしないで配置する。
              offのときは各パネルのsizeにしたがって Splitterサイズに対して適当にスケーリングして配置する。
              現状 lockしても±1ピクセル分ぐらいぶれてしまうことがある。
              --> 修正が難しいので、修正しないかも。

forced layout: その下の left Top width rightで指定した範囲にパネルを強制的に配置する。
              (sizeとauto-scalingは無効になる)

              パネルを重ねた場合、パネルリストで上位のパネルほど前面に表示される
              (ただし子パネルの実装次第。やたら前面に出てくるパネルもあるみたい。)
              Title Formattingが有効。
              %_width%  %_height% でPanel Stack Splitterの水平幅、垂直幅を参照できる。
              設定例:
              left: $div(%_width%,4)
              top : $div(%_height%,4)
              width: $div(%_width%,2)
              height: $div(%_height%,2)

              また、Splitterのサイズに対する相対値で指定するモードもある。
              use parsentage valueがonのときは、Splitterのサイズに対するパーセント値[0-100]で指定すること。
              use parsentage valueのonのときの設定例:
              left: 25
              top : 25
              width: 50
              height: 50


padding:      パネルの周りにスペースを入れる。
              Title Formattingは無効なので固定の数値を入れること。
              パネルを自動配置した場合、paddingが設定されていればボーダーとしてマウスでリサイズできるようになる。
              enable resizable borderでon/off可能

caption :     パネルの名前、識別子
use background color: 指定した色で、背景を塗りつぶす。
use image:    固定の背景画像を指定する。TitleFormattingは無効。
pseudo transparent: splitterの背景を擬似的に透過する。(splitterを入れ子にした場合などに使用)

[注意]
  ColumnsUIのパネルの中には背景透過機能を持つパネルが存在するが、
  use background colorもしくはuse imageを使用しないとそのパネルの背景が透過しない場合が多い。


titleformat mode on startup:   起動時のPerTrackのTitleFormatのモード。
      now playing         TFの対象が再生トラック
      follow cursor       プレイリストで選択中のトラック
      last mode           前回終了時のモード(ボタンによるモード切り替えを保存する)
 

title formatting script:
ここにTitleformatを記述することで、背景を装飾できる。ただし、子パネルの上には描画することはできない。

拡張コマンドリファレンス
大文字の引数は、省略可能か、実装できてない。
注意:空白を無駄に入れないこと。(改行は可)

title formatting scriptが評価されるのは、
現在は
Per Track  :サイズが変更されたときと再生トラックや再生･一時停止状態が変わったとき。ボタン関数でREFRESHしたとき。
Per Second :毎秒、再生状態が変化したとき、ボタン関数でREFRESHしたとき。

[注意]
	特にPer Secondでは処理負荷の高い関数をできるだけ使わないこと。
	GDI描画関数を使用することを推奨する。

[フィールド]
%ps_width%
  Splitterの横幅を返す


%ps_height%
  Splitterの縦幅を返す


%ps_tfmode%
   TFのモードを返す。(Per Trackのとき有効)
   0  nowplayingモード
   1  follow cursorモード


%ps_isplaying%
	再生中か否か

%ps_ispause%
	一時停止中か否か


%ps_foobar2000_path%
	foobar2000実行ファイルのパス


[関数]
$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])
	文字列描画関数。
	textを座標(x,y)に描画する。
	[注意]文字列はこの関数とdrawtextとdrawtextexでしか表示できない。
	TrueTypeフォントしか使えないかも。

	OPTIONS : アライン指定、描画品質指定、クリップ指定などをする。
		left hcenter right       水平アライン指定
		top  vcenter bottom      垂直アライン指定

		nowrap                   ラップアラウンドしない

 		noaa                     ClearTypeもアンチエイリアスも無効。
		aa                       アンチエイリアスをかけるモード。ClearTypeが効かないフォントでもアンチエイリアスがかかる。
		hq                       最高品質で描画するモード。ClearTypeモード。(defaultにしました)
		glow_aa                  glowの特殊モードを使用するオプション。(noaa, aa, hqと排他)

		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の垂直方向のオフセット

		↓glow_aa指定のときだけ使えるもの
		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)
	    $gradientrect(0,50,50,50,255-128-64-128,255-255-255,,10)


$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を省略するとオリジナル画像サイズで表示し、キャッシュする。
	(ただし、w,hを省略してもメモリ上にすでにキャッシュされてる場合は、そのままキャッシュしてある画像サイズになる)

	複数の縮小率を扱いたい場合、
	縮小した後に拡大されると画質が悪い。
	nodisplayやnoexpansionなどを利用して、
	使用する縮小率の中で最も大きい縮小率で最初にメモリのキャッシュするのがよい。

	画像が存在すればtrue、しなければfalseを返す。

	dipsplays the image specified by path.
	after the image is resized, it is cached on the memory. 

	path: 画像の絶対パス (or 画像が埋め込まれた AudioFile の path)

	OPTIONS
		■ <appearance>
		nokeepaspect アスペクト比を維持しない(nodisplay,archive,icon以外のオプションと排他)。
		nodisplay    メモリに読み込むだけで表示しない。
		noexpansion  縮小はするが、拡大しない。

		■ <align>	それぞれ排他。
		left right   水平アライン指定。
		top bottom   垂直アライン指定。

		■ <misc>
		wc           wildcard(*,?) を有効にする。

		■ <read engine>	それぞれ排他。
		archive      archive reader経由でpathの画像を表示する。
		             pathの書式はarchive readerに依存するが、書庫の絶対パス|書庫内ファイルパス が基本。
		             例:  C:\aaa\image.zip|bbb/ccc.jpg
		icon         pathで指定されるiconファイル(*.ico)を表示する。

		artreader        pathで指定されるAudioファイルの埋め込み画像をfoobar2000のcoreのartwork readerで読み込む。
		                 埋め込み画像がなければ、Audioファイルのフォルダ画像を読み込む。ただし低速。		                
		artreader_front  pathで指定されるAudioファイルの埋め込み画像をfoobar2000のcoreのartwork readerで読み込む。
		artreader_back   pathで指定されるAudioファイルの埋め込み画像をfoobar2000のcoreのartwork readerで読み込む。
		artreader_disc   pathで指定されるAudioファイルの埋め込み画像をfoobar2000のcoreのartwork readerで読み込む。
		artreader_icon   pathで指定されるAudioファイルの埋め込み画像をfoobar2000のcoreのartwork readerで読み込む。
		(artreader*** are currently disrecommended options because these option seem to be slow)

	n   rotateflipのためのインデックス
		1: 90
		2: 180
		3: 270
		4: 左右反転 
		5: 90 + 左右反転 
		6: 上下反転 
		7: 90 + 上下反転 

	alpha  0-255
		不透明度

	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(10,10,50,50,%path%,artreader)


$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
        不透明度
    
	例:
	 $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,,,) )


$drawimage(x,y,w,h,path,OPTIONS,n,aplha)
	座標(x,y)にサイズ(w,h)で path で指定される画像を表示する。
	$imageabsとほぼ同じ。
	wとhを省略するとオリジナルのサイズで表示する。
	表示処理後直ちにメモリ上から、削除される。
	TFが評価されるたびに画像の再読み込みを行う。
 
   ※とてつもなく大きい画像を表示したり、画像を多く表示するのにメモリ占有量を減らしたかったり、
     imageabsのリサイズ処理が気に入らない人向け。

	OPTIONS: nokeepaspect アスペクト比を維持しない
			left
			right
			top
			bottom

   n : rotateflipのためのインデックス
       1: 90
       2: 180
       3: 270
       4: 左右反転 
       5: 90 + 左右反転 
       6: 上下反転 
       7: 90 + 上下反転 

    alpha  0-255
        透明度(transparency)

●描画補助

$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を適用していなければアスペクト比を計算できるかもしれない。


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

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

$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


$findfile(path,[path2,path3,...])
	path(ワイルドカード可)で指定されるファイルが存在すれば、最初に見つかったファイルのパスを返す。
	ファイルが無ければ何も返さない。(厳密には"偽"を返す)
	pathは複数指定可。


●ボタン関数

$textbutton(x,y,w,h,text,mover_text,command,options1,options2)
   ボタンを作る。
   Per Trackのみ有効。 Per Secondには記述しないこと。

   text :    ボタンのラベル
   mover_text :    マウスオーバー時のボタンのラベル

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

   注意1:    処理時間のかかる命令を指定しないこと。
   注意2:    複数命令指定されている場合、命令の実行順序は保証されない。
             特にCOMMANDとWINDOWSIZEが指定される場合、WINDOWSIZEの方がおそらく先に実行される。
             COMMAND,CONTEXT同士だと、順序が保証されるかも。

      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として評価されるので注意


      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   テキストの位置


   例   $textbutton(0,0,80,20,play,play,COMMAND:Playback/Play,fontcolor:64-64-64 brushcolor:192-192-192-128 pencolor:0-0-0,fontcolor:32-32-32)
	$textbutton(100,0,80,20,Resize,Resize,PANELSHOW:aaa:-1;REFRESH,fontcolor:64-64-64 left bottom,fontcolor:32-32-32)



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

      options1 画像表示オプション
               nokeepaspect
               left top bottom right
      options2: マウスオーバー時の画像表示オプション
                nokeepaspect
                left top bottom right


●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)
	矩形塗りつぶし関数


$fillroundrect(x,y,w,h,w2,h2,r1-g1-b1,r2-g2-b2)
	角の丸い矩形塗りつぶし関数


●Panel操作系関数
どうも描画関数とTFの枠が一緒だと効率が悪いので、
将来的には別枠にする予定。

$showpanel(i,sh)   or  $showpanel_c(caption,sh)
   パネルの表示、非表示変更関数
   i  子パネルリストでの何番目か(0から数えて)
   sh 0:非表示  1:表示


$movepanel(i,x,y,w,h)  or  $movepanel_c(caption,x,y,w,h) 
   i  子パネルリストでの何番目か(0から数えて)
   Force layout指定されたパネルのみ、座標(x,y) サイズ(w,h)に移動させる。


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


$isvisible_c(caption)
    パネルの表示状態を返す。



<<changelog>>
v0.3.6a
･%ps_isplaying%, %ps_ispause%追加。
･設定ダイアログの整理。
･設定できるTFの文字数を2倍にしたつもり。

･実行できないコマンドがあったのを修正したつもり。(v0.3.6.3)
･パネルの外にマウスが出たときにボタンがホバー状態のままになってしまうのを修正。(v0.3.6.3)
･実行ファイルパスを取得する%ps_foobar2000_path%追加。(v0.3.6.3)


v0.3.5a
･SDKを更新。
･拡張Titleformatの仕様をELPlaylistにあわせた。(結構変わっているので、なんか動かなくなってるかも)

v0.3.4a
･drawstringにglow オプションを実験的に追加。
･使えないfontがあったのを修正。
･seek時にPer Secondを評価するように修正。


v0.3.3a
･設定ダイアログからの各パネルのコンフィグを呼び出せるようにした。(パネルが対応していれば)
･Per Secondのちらつきをおさえるようにした。
 v0.3.3.1a
 + 致命的なバグを修正

v0.3.2a
･TFモードのalways now playingモードを廃止して、now playingモードで
 一回も再生していない場合に、follow cursorにしていたのをやめた。
･ボタン関数で、動的にコマンドが登録される場合にも対応した。
･関数いくつか追加。(drawtriangle,drawtextexなど)
･画像表示関数にalpha指定追加。


v0.3.1a
･splitterを入れ子にした場合向けに 背景透過オプションを追加。
･矩形グラデーション描画関数追加。
･follow cursorモードの挙動を少し変更。

v0.3.0a
･Per TrackのTFのモードとして follow curosrモード追加。
･TFのモード切り替え用にボタン関数のコマンド追加。
 TFのモードは、設定ダイアログか、ボタン関数でのみ切り替え可。
･パネル表示状態を返す関数追加。
･動的に登録されるメニューコマンド向けにメニューコマンドの取得タイミングを少し変えてみた。
 (根本的な対処ではない)
･テキスト系関数のアライン追加

v0.2.9a
･リサイズしてクリップする画像表示関数$imageabs_rc追加
･パネル非表示で起動するオプションをパネルごとに追加。(ボタンとかで表示非表示を切り替える人向け)


v0.2.8.1a
･ボタン関数にTFの更新の実行REFRESHを追加。

v0.2.8a
･imgageabsのrotateflipの動作を修正。
･$findfile関数追加

v0.2.7a
･ 画像表示関数を用途別にimageabsとdrawimageに分割。
･ 画像ボタン追加。
･ ボタン関数にコンテキストメニューの実行などを追加。
+･メニューコマンドリストの取得を少しだけ変更

v0.2.6a
･キャプションを変更した状態で、パネルレイアウトを変更すると落ちる場合があるのを修正。

v0.2.5a
･textbutton関数でCulumnsUIのレイアウトpresetを変更した場合落ちる不具合を修正。


v0.2.4a
･textbutton関数を少し実装してみた。こんな感じだろうか？


v0.2.3a
･ColumnsUIのレイアウト設定からパネル構成を変更したあとで、終了時などに子パネルがハングしてしまうことがあったのを修正。
･パネルサイズのリミットを反映しないオプションを追加。


v0.2.2a
･トラック単位(Per Track)のTitleformatと秒単位(Per Second)のTitleformatを分けた。
  秒単位のほうはくれぐれも重い処理を入れないこと。特にXPならGDI関数(今は2個しかないけど)が推奨
  全関数が使えるつもりだが、画像表示や透明色の使用は非推奨。
･Applyボタン実装
･サイズ変更可能なボーダーの機能 on/off選択可
･画像表示関数に回転反転など実装


v0.2.1a
･角を丸めた矩形描画関数を試しに作ってみた。(かなり適当)
 + 曲線を含む描画関数にアンチエイリアスを施すようにした。
･起動時の処理量を若干減らした。
･forced layoutでのpadding設定をオプションにした。


v0.2.0a
･パネル自動配置のときにボーダーを操作してもパネルサイズが変化して見えなかったのを修正。
･楕円描画関数追加


v0.1.9a
･パネルサイズの計算で、初期サイズをとてつもなく大きいサイズにしてしまうバグを修正。

v0.1.8a
･ButtonsやSeekbarなどの背景が透過しなかったのを修正。
･Force layoutのときに、splitterのサイズに対するパーセント値で、パネルの位置とサイズ指定できるようにした。

v0.1.7a
･細かいバグを修正
･Force layoutのときにpadding設定を無効にした、かつ パネルの最小、最大サイズを反映するようにした。

v0.1.6a
･色の指定でR-G-B-Aと透明度A(0〜255)を指定できるようにした。(R-G-Bの場合は不透明と解釈)
･showpanelが効かないバグを修正

v0.1.5a
･Splitter本体の描画カスタマイズ可能なようにした。
 PanelsUI ライクな関数を少しだけ実装。

v0.1.4a
･Force Layoutの項目でTitleFormattingが使えるようにした。
 %_width%、%_height%でPanel Stack Splitterの水平、垂直サイズを参照可能
･ColumnsUIのLayoutでルートのsplitterに設定したときに、
 最初に表示されるサイズが異常になってしまっていたのを修正。

v0.1.3a
･Paddingで設定したスペースをサイズ変更可能なボーダーとして扱えるように変更。
 クリックしたらマウスカーソルが変化するのでそのままドラッグアンドドロップでサイズ変更できるようにした。
･ColumnsUIのLayoutページでのConfigureボタンで設定ダイアログを呼び出せるようにした。

v0.1.2a
･Channel spectrum panelのFast pseudo-transparent modeが有効になるように対応。
 Panel Stack Splitterに設定した画像を背景にできるようになった。
･画像のアスペクト比 変更設定を追加。

v0.1.1a
･ use imageを有効かつuse color無効のときにリソースリークするのを修正
･ 不正なアスペクト比になるのを修正

v0.1a
･公開版