﻿Graphical Browser

●概要
	アクティブプレイリスト同期のブラウザ

●注意
	設定はパネル毎なので、パネルを消すと設定も消えます。

●ソート
	空欄の場合　→　適当
	* の場合　→　分類した文字列でソート
	
	プレイリストと同じように並べたいとき　→　$num(%gb_playlist_number%,10)

●ポップアップ
	Transparent mode
		このモードにすると、ピクセル毎に透明度を指定した描画ができます。（背景透明で文字や画像だけ表示とか）
		GDIは使えないと思うので、	GDI+だけ使ってください。
		GDI+でも、文字列の描画は$gp_set_text_rendering_hint(aa)にしないとうまく描画してくれないような…
		研究中。
	
	Per track
		描画順序は
		Popup → Per track(0) → Per track(1) → ...
		途中で描画の設定値（原点やペン、ブラシ、フォントなど）はリセットされません。

●Image cacheの方法
	Old
		rev011までの方法。全アイテムの画像をキャッシュします。
		アクティブプレイリストが切り替わると、全て削除されます。
	
	Default
		指定された容量の画像をキャッシュする方法。
		アクティブプレイリストが切り替わってもキャッシュは削除されません。
		現在の実装では指定された容量を超えると、全てのキャッシュが削除されます。

●変数
	%gb_group%
		[Item], [Popup], [Per track(Popup)]
			分類した時の文字列

	%gb_width%
		[Item]
			アイテムの幅
		[Popup], [Per track(Popup)]
			ポップアップの幅

	%gb_height%
		[Item]
			アイテムの高さ
		[Popup], [Per track(Popup)]
			ポップアップの高さ

	%gb_focused%
		[Item], [Popup], [Per track(Popup)]
			アイテムにフォーカスがあるか

	%gb_mouse_over%
		[Item]
			アイテムの上にマウスカーソルがあるか
		[Popup], [Per track(Popup)]
			多分常にtrue

	%gb_item_index%
		[Item], [Popup], [Per track(Popup)]
			アイテムの位置

	%gb_item_count%
		[Item], [Popup], [Per track(Popup)]
			アイテムの数

	%gb_track_count%
		[Sort], [Item], [Popup], [Per track(Popup)]
			アイテムが持ってる曲数

	%gb_playlist_number%
		[Sort], [Item], [Popup]
			アイテムの最初の曲のプレイリスト内の位置
		[Per track(Popup)]
			曲のプレイリスト内の位置

	%gb_col%
		[Item], [Popup], [Per track(Popup)]
			アイテムの列

	%gb_row%
		[Item], [Popup], [Per track(Popup)]
			アイテムの行

	%gb_col_count%
		[Item], [Popup], [Per track(Popup)]
			列の数

	%gb_row_count%
		[Item], [Popup], [Per track(Popup)]
			行の数
	
	%gb_isplaying%
		[Item], [Popup]
			再生している曲があればtrue
		[Per track (Popup)]
			再生している曲ならtrue
	
	%gb_track_index%
		[Per track (Popup)]
			アイテム内の曲の位置（0から）
	
	%gb_length%
		[Sort], [Item], [Popup], [Per track(Popup)]
			曲の長さの合計
	
	%gb_length_seconds%
		[Sort], [Item], [Popup], [Per track(Popup)]
			曲の長さの合計の秒
	
	%gb_calc_x%
	%gb_calc_y%
	%gb_calc_width%
	%gb_calc_height%
		[Item], [Popup], [Per track(Popup)]
			計算した大きさ。
			以下の関数によって値が変わる
			$calc_text
			$gp_calc_string
			$gp_calc_string_path
			$draw_image
	
●関数について
	図形の描画に関する関数はGDIとGDI+と分かれてます。
	両者は別の物で、ペン、ブラシ、フォントも別です。
	GDIの色指定は　"r-g-b"　と10進数で、もしくは　"rrggbb"　と16進数で指定で、
	GDI+の色指定は　"a-r-g-b"　と10進数で、もしくは　"aarrggbb"　と16進数で指定。
	透明度を指定した描画、アンチエイリアスのかかった描画をしたいならGDI+で。
	一部のフォント（多分、PostScriptアウトラインのOpenTypeフォント）はGDI+だと使えません。
	全角ハイフンもGDI+だと正しく表示されません。

●GDI関数
	$set_font(name,size,style)
		フォントを設定
		name - フォント名
		size - フォントサイズ
		style - スタイル
			組み合わせて指定
			"b" - 太字
			"i" - 斜体
			"u" - 下線
			"s" - 取消線

	$set_font_color(color)
		フォントの色を設定
		color - 色

	$draw_text(str,x,y)
		文字列を描画
		str - 文字列
		x - 始点のx座標
		y - 始点のy座標

	$draw_text(str,x,y,width,height,[option1],[option2],...)
		文字列を指定範囲内に描画
		str - 文字列
		x - 始点のx座標
		y - 始点のy座標
		width - 描画する幅
		height - 描画する高さ
		option - その他
			"bottom" - 下に描画。singleline必要
			"center" - 中央揃え
			"end_ellipsis" - はみ出す場合、...をつける
			"left" - 左寄せ
			"noclip" - クリップしない。widthとheightを指定しないのと同じ
			"path_ellipsis" - ファイルパス向け
			"right" - 右寄せ
			"singleline" - 1行で表示
			"top" - 上に描画
			"vcenter" - 縦方向に中央揃え。singleline必要
			"wordbreak" - 複数行で表示
			"word_ellipsis" - 収まらない場合、...をつける
			詳細は http://msdn2.microsoft.com/en-us/library/ms533909.aspx
	
	$draw_text_blur(str,x,y,strength,[deep])
	$draw_text_blur(str,x,y,width,height,strength,[deep],[option1],[option2],...)
		○概要
			ぼかした文字列を描画
		○引数
			str - 文字列
			x - 始点のx座標
			y - 始点のy座標
			strength - ぼかしの強さ(1..20)
			deep - 濃さ[1]
			option - see $draw_text
	
	$calc_text(str)
	$calc_text(str,width,height,[option1],[option2],...)
		文字列の大きさを求める。
		引数は、xとyがないだけで$draw_textと同じ。
		この関数の後に、%gb_calc_*%変数で値を得る。
					
	$set_pen(color)
	$set_pen(color,width)
	$set_pen(color,width,style)
		ペンを設定
		color - 色
		width - 太さ[1]。styleが"solid"の時のみ有効
		style - スタイル["solid"]
			"solid" - 実線
			"dash" - 破線
			"dot" - 点線
			"dashdot" - 一点鎖線
			"dashdotdot" - 二点鎖線

	$set_brush(color)
	$set_brush(color,style)
		ブラシを設定
		color - 色
		style - スタイル。指定なしの場合は単色のブラシ
			"bdiagonal"
			"cross"
			"diagcross"
			"fdiagonal"
			"horizontal"
			"vertical"

	$draw_rect(x,y,width,height)
		長方形をペンで描画
		x - 始点のx座標
		y - 始点のy座標
		width - 幅
		height - 高さ

	$fill_rect(x,y,width,height)
		長方形をブラシで塗りつぶし
		x - 始点のx座標
		y - 始点のy座標
		width - 幅
		height - 高さ

	$fill_draw_rect(x,y,width,height)
		長方形をペンとブラシで描画
		x - 始点のx座標
		y - 始点のy座標
		width - 幅
		height - 高さ
		
	$round_rect(x,y,width,height,ellipse_width,ellipse_height)
		角の丸い長方形をペンとブラシで描画
		x - 始点のx座標
		y - 始点のy座標
		width - 幅
		height - 高さ
		ellipse_width - 楕円の幅
		ellipse_height - 楕円の高さ
	
	$draw_line(x1,y1,x2,y2)
		直線をペンで描画。終点は描画されない
		x1 - 始点のx座標
		y1 - 始点のy座標
		x2 - 終点のx座標
		y2 - 終点のy座標

●GDI+関数
	ペン、ブラシ、フォントは初期化されてないので、使う前に$gp_set_*で準備してください。

	$gp_set_pen(argb,width)
	$gp_set_pen(argb,width,style,line_join)
		○概要
			ペンを設定
		○引数
			argb - 色
			width - 幅
			style - スタイル["solid"]
				"solid" - 実線
				"dash" - 破線
				"dot" - 点線
				"dashdot" - 一点鎖線
				"dashdotdot" - 二点鎖線
			line_join - 接合スタイル["miter"]
				"miter"
				"bevel"
				"round"
	
	$gp_set_brush(argb)
		○概要
			単色のブラシを設定
		○引数
			argb - 色
	
	$gp_set_brush(style,argb1,argb2)
		○概要
			ハッチブラシを設定
		○引数
			style - スタイル
				数字で 0 ～ 53。
				各スタイルは　http://msdn2.microsoft.com/en-us/library/ms534127.aspx　を参照。
			argb1 - 前景色
			argb2 - 背景色
	
	$gp_set_brush(argb1,x1,y1,argb2,x2,y2)
		○概要
			線形グラデーションのブラシを設定
		○引数
			argb1 - 色1
			x1 - 色1のx座標
			y1 - 色1のy座標
			argb2 - 色2
			x2 - 色2のx座標
			y2 - 色2のy座標
	
	$gp_set_font(name,size)
	$gp_set_font(name,size,style_1,style_2...)
		○概要
			フォントを設定
		○引数
			name - フォント名
			size - フォントサイズ
			style - スタイル
				"b" - 太字
				"i" - 斜体
				"bi" - 太字と斜体
				"u" - 下線
				"s" - 取消線
	
	$gp_set_string_format(alignment,line_alignment,[trimming])
		○概要
			文字列の描画方法を指定
		○引数
			alignment - 横位置
				"near" - 左
				"center" - 中央
				"far" - 右
			line_alignment - 縦位置
				"near" - 上
				"center" - 中央
				"far" - 右
			trimming - トリミング
				"character"
				"word"
				"ellipsis_character"
				"ellipsis_word"
				"ellipsis_path"
	
	$gp_set_smoothing_mode(antialias)
		○概要
			図形描画のアンチエイリアスの指定
		○引数
			antialias - アンチエイリアス
				0 - アンチエイリアスなし
				1 - アンチエイリアスあり
	
	$gp_set_text_rendering_hint(mode)
		○概要
			文字列のレンダリング方法を指定
		○引数
			mode - 方法
				"default" - 標準
				"sb+" - single bit per pixel grid fit
				"sb" - single bit per pixel
				"aa+" - anti alias grid fit
				"aa" - anti alias
				"ct" - clear type
	
	$gp_draw_arc(x,y,width,height,start_angle,sweep_angle)
		○概要
			円弧をペンで描画
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
			start_angle - 開始点（度）
			sweep_angle - 終了点（度）
	
	$gp_draw_ellipse(x,y,width,height)
		○概要
			楕円をペンで描画
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
		○設定
			$gp_set_pen
			$gp_set_smoothing_mode
	
	$gp_draw_line(x1,y1,x2,y2)
		○概要
			線をペンで描画
		○引数
			x1 - 始点のx座標
			y1 - 始点のy座標
			x2 - 終点のx座標
			y2 - 終点のy座標
		○設定
			$gp_set_pen
			$gp_set_smoothing_mode
	
	$gp_draw_pie(x,y,width,height,start_angle,sweep_angle)
		○概要
			扇形をペンで描画
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
			start_angle - 開始点（度）
			sweep_angle - 終了点（度）
		○設定
			$gp_set_pen
			$gp_set_smoothing_mode
	
	$gp_draw_rectangle(x,y,width,height)
		○概要
			長方形をペンで描画
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
		○設定
			$gp_set_pen
			$gp_set_smoothing_mode
	
	$gp_draw_string(str,x,y)
	$gp_draw_string(str,x,y,width,height)
		○概要
			文字列をブラシで描画
		○引数
			str - 文字列
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
		○設定
			$gp_set_font
			$gp_set_brush
			$gp_set_text_rendering_hint
			$gp_set_string_format
	
	$gp_calc_string(str)
	$gp_calc_string(str,width,height)
		○概要
			文字列の大きさを求める
	
	$gp_fill_ellipse(x,y,width,height)
		○概要
			楕円をブラシで塗りつぶし
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
		○設定
			$gp_set_brush
			$gp_set_smoothing_mode
		
	$gp_fill_pie(x,y,width,height,start_angle,sweep_angle)
		○概要
			扇形をブラシで塗りつぶし
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
			start_angle - 開始点（度）
			sweep_angle - 終了点（度）
		○設定
			$gp_set_brush
			$gp_set_smoothing_mode

	$gp_fill_rectangle(x,y,width,height)
		○概要
			長方形をブラシで塗りつぶし
		○引数
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
		○設定
			$gp_set_brush
			$gp_set_smoothing_mode
	
	$gp_draw_string_path(str,size,mode,x,y)
	$gp_draw_string_path(str,size,mode,x,y,width,height)
		○概要
			輪郭のある文字列を描画
		○引数
			str - 文字列
			size - 文字サイズ。単位px。（現在のフォントの文字サイズとは異なる）
			mode - 描画モード
				"" - 輪郭と塗りつぶし
				"stroke" - 輪郭だけ
				"fill" - 塗りつぶしだけ
			x - 左上のx座標
			y - 左上のy座標
			width - 幅
			height - 高さ
		○設定
			$gp_set_pen
			$gp_set_brush
			$gp_set_font
			$gp_set_string_format
			$gp_set_smoothing_mode
		○例
			$gp_set_font(Tahoma,9,b)
			$gp_set_pen(ff1500ff,2,,round)
			$gp_set_brush(ffddeeff)
			$gp_set_string_format(center,center)
			$gp_set_smoothing_mode(1)
			$gp_draw_string_path(%gb_group%,16,,0,0,%gb_width%,%gb_height%)	
	
	$gp_calc_string_path(str,size,mode)
	$gp_calc_string_path(str,size,mode,width,height)
		○概要
			輪郭のある文字列の大きさを求める
			
●画像描画関数
	$draw_image(x,y,width,height,path)
	$draw_image(x,y,width,height,path,alpha)
	$draw_image(x,y,width,height,path,alpha,option)
	$draw_image(x,y,width,height,path,alpha,option,rotate_flip)
		○概要
			画像を描画
		○引数
			x - 始点のx座標
			y - 始点のy座標
			width - 幅
			height - 高さ
			path - 画像の絶対パス。ワイルドカード使用可
			alpha - 不透明度[255]
			option - その他[""]
				"nokeepaspect" - アスペクト比を保持しない
				"top" - 上に寄せる
				"topright" - 右上に寄せる
				"right" - 右に寄せる
				"bottomright" - 右下に寄せる
				"bottom" - 下に寄せる
				"bottomleft" - 左下に寄せる
				"left" - 左に寄せる
				"topleft" - 左上に寄せる
			rotate_flip - 回転と反転[0]
				0 - なし＝180度回転上下左右反転
				1 - 90度回転＝270度回転上下左右反転
				2 - 180度回転＝上下左右反転
				3 - 270度回転＝90度回転上下左右反転
				4 - 左右反転＝180度回転上下反転
				5 - 90度回転左右反転＝270度回転上下反転
				6 - 180度回転左右反転＝上下反転
				7 - 270度回転左右反転＝90度回転上下反転
		○参考
			この関数を実行した後に、実際に描画した領域を
			%gb_calc_*%変数で得ることができる。

●その他の関数
	$set_size(width,height)
		○概要
			ポップアップのサイズを変更する。ポップアップの処理内でのみ有効。
			設定されたPopup sizeが上限で、それ以上は大きくならない。
			%gb_width%,%gb_height%の値はこの関数の後で変わる。
			widthもしくはheightが0以下の場合は、ポップアップは表示されない。
		○引数
			width - 幅
			height - 高さ

	$set_org(x,y)
		○概要
			原点の設定
		○引数
			x - 原点のx座標
			y - 原点のy座標
	
	$set_clip_rect()
	$set_clip_rect(x,y,width,height)
		○概要
			GDI、GDI+、画像の描画を、指定された長方形の範囲内のみにする。
			引数無しで解除。
	
	$sum(tf)
		○概要
			アイテムの各トラックごとにTitleFormatを適用して、その整数の和を求める
		○引数
			tf - TitleFormat
		○例（再生回数の合計を求める）
			$sum('%play_count%')

	$eval(expression)
		式を評価して計算
		expression - 式
			例：$eval(5+3)
			例：$eval({%gb_width%-10}/2)
		※ゼロ除算は0
		ソートで使用可能
	
●更新履歴
	2008/04/20	rev015
		追加 - $draw_text_blur関数
		追加 - $set_clip_rect関数
		追加 - "(show track menu)" action

	2008/03/16	rev014
		追加 - $set_size関数
		追加 - %gb_calc_x%変数
		追加 - %gb_calc_y%変数
		追加 - %gb_calc_width%変数
		追加 - %gb_calc_height%変数
		追加 - $calc_text関数
		追加 - $gp_calc_string関数
		追加 - $gp_calc_string_path関数
		修正 - $draw_image関数
		修正 - $gp_set_string_format関数(trimming引数)（ずっと前から使えてたけど、ここに書き忘れ…
		修正 - いくつかのバグ取り

	2008/03/12	rev013
		修正 - キー入力でアイテムを選択した際、落ちることがあるのを修正
		修正 - GDIで描画するとき、背景色が塗り潰されてしまうのを修正

	2008/03/11	rev012
		修正 - 致命的なリソースリーク
		追加 - 画像のキャッシュ方法の選択

	2008/03/10	rev011
		追加 - キー入力で、（%gb_group%の）先頭の文字と合うアイテムに移動するようにした
		追加 - 指定したプレイリストに「追加」できるようにした
		修正 - Windows2000でも動くようにした（多分…）

	2008/03/09	rev010
		修正 - なんとなく変数名の変更 %gb_subitem_count% → %gb_track_count% （前のも使えます
		追加 - $gp_set_brush(style,argb1,argb2)関数
		追加 - $set_org(x,y)関数
		追加 - ポップアップの透明表示モード
		追加 - ポップアップが表示されるまでの時間指定
		追加 - $sum(tf)関数
		追加 - %gb_isplaying%変数
		追加 - %gb_track_index%変数
		追加 - %gb_length%変数
		追加 - %gb_length_seconds%変数

	2008/03/02	rev009
		修正 - rotateflipが同じになってしまうバグを修正
		修正 - スクロールバーがない場合の挙動を修正
		追加 - ポップアップするものを付けてみた

	2008/03/02	rev008
		修正 - $draw_image関数でワイルドカード使用ができなかったバグを修正

	2008/03/02	rev007
		追加 - スクロールバーの常に表示/必要なら表示/非表示を設定可能に
		修正 - $set_font関数(style)
		修正 - $draw_image関数(rotate_flip)
		追加 - Middle button action
		追加 - 指定したプレイリストに送る機能

	2008/02/27	rev006
		追加 - ワイルドカードを使用した画像の読み込み
		修正 - スクロール量の上限を増やした
		修正 - ほとんどの関数の引数を負の値に対応した
		修正 - $gp_set_pen関数
		修正 - $gp_set_brush関数
		追加 - $gp_draw_string_path関数

	2008/02/25	rev005
		修正 - パネルサイズによって例外が出る仕様を修正
		追加 - スクロール量を設定できるように
		
	2008/02/23	rev004
		修正 - $gp_set_font関数でスタイルが効かないバグを修正
		修正 - 背景色が変だったバグを修正

	2008/02/23	rev003
		修正 - 致命的なバグを修正
		修正 - スクロールの挙動を修正

	2008/02/22	rev002
		修正 - 変数の名前を変えた
		追加 - %gb_subitem_count%変数
		追加 - %gb_playlist_number%変数
		追加 - %gb_mouse_over%変数
		追加 - $eval関数
		追加 - $draw_line関数
		追加 - $gp_set_pen関数
		追加 - $gp_set_brush関数
		追加 - $gp_set_string_format関数
		追加 - $gp_set_smoothing_mode関数
		追加 - $gp_set_text_rendering_hint関数
		追加 - $gp_draw_arc関数
		追加 - $gp_draw_ellipse関数
		追加 - $gp_draw_line関数
		追加 - $gp_draw_pie関数
		追加 - $gp_draw_rectangle関数
		追加 - $gp_draw_string関数
		追加 - $gp_fill_ellipse関数
		追加 - $gp_fill_pie関数
		追加 - $gp_fill_rectangle関数
		追加 - 曲が始まるとフォーカスを移動するようにした
		追加 - 曲が選択されるとフォーカスを移動するようにした
		追加 - ソートできるようにした
		追加 - クリックした際の動作を変更できるようにした
		修正 - Edgeのスタイルを正しくした
		追加 - キーボードショートカットを使えるようにした

	2008/02/19	rev001
		公開

●著作権
	TitleFormattingエディタ
		Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org> All Rights Reserved
		http://scintilla.sourceforge.net/
	