Sound Player Lilith for Unicode OSs (仮称) フェイスコマンド仕様書
Ver. 2011/12/26

特にパラメータが必要でないコマンドについては、
パラメータの説明を省略しています。

【１】アプリケーション制御系コマンド

・Exit
アプリケーションを終了します。

・Minimize
メインウィンドウを最小化します。
タスクバーに格納されるか、タスクトレイのアイコン化されるかは、
アプリケーション側の設定に依存します。
すでに最小化されている場合には、元のサイズに戻します。

・MainWindowDrag
メインウィンドウのドラッグモードに入ります。
どのアイテムも存在しない領域でボタンを押した場合、
メインウィンドウのドラッグモードに入り、
ウィンドウ位置を調節できますが、
フェイスアイテムにその属性を持たせるためのコマンドです。
Enable = True のアイテムを、特に効果のないアイテムで
覆い隠したい場合などに使用します。
何もコマンドを設定しないのではなく、
このコマンドを設定するほうが、操作に統一性が出ます。
このコマンドは単独で指定する必要があります。

・TopMost
メインウィンドウの最前面表示を切り替えます。
パラメータの種類は Bool で、
On または Off を指定してください。

または、パラメータの種類 String で、以下の指定も可能です。
Toggle : On/Off を入れ替えます。


【２】再生制御系コマンド

・Play
プレイリストの現在位置のファイルの再生を開始します。
既になんらかのファイルが読み込まれている場合には、それを再生します。
一時停止中であれば、一時停止を解除します。
既に再生中の場合には、何のアクションも行いません。

・Suspend
ファイルを再生中の場合、再生を一時停止します。
それ以外の場合には、何のアクションも起しません。

・Resume
ファイルが読み込まれていて、一時停止中のときに、
再生を再開します。
それ以外の場合には、何のアクションも起しません。
(Play と違い、新たに再生開始したりはしません)

・SuspendResume
ファイルを再生中の場合、再生を一時停止します。
または、ファイルが読み込まれていて、一時停止中のときに、
再生を再開します。
それ以外の場合には、何のアクションも起しません。
(Play と違い、新たに再生開始したりはしません)

・PlaySuspendResume
ファイルを再生中の場合、再生を一時停止します。
ファイルが一時停止中の場合には、再開します。
停止中の場合には、新規に再生を開始します。

・Stop
ファイルが読み込まれている場合、再生を停止し、
サウンドデバイスを解放します。

・Back
プレイリスト上の順番で、１つ前のファイルをロードします。
再生中であった場合には、現在のファイルを解放し、
新たにロードしたファイルを即座に再生開始します。
一時停止中または停止中であった場合には、
新たにロードしたファイルを一時停止状態で開始します。
１つ前のファイルがどのファイルになるかは、
再生モードに依存します。

・Next
プレイリスト上の順番で、次のファイルをロードします。
再生中であった場合には、現在のファイルを解放し、
新たにロードしたファイルを即座に再生開始します。
一時停止中または停止中であった場合には、
新たにロードしたファイルを一時停止状態で開始します。
１つ前のファイルがどのファイルになるかは、
再生モードに依存します。

・SeekRelative
ファイルがロードされている場合、
再生位置をパラメータで指定した量だけ相対的に移動します。
パラメータの種類は、Int で、
ミリ秒単位で入力してください。
先に進む場合は正の値を、巻き戻す場合は負の値を指定してください。
再生中であった場合には、位置変更後に、
新しい位置から即座に再生開始します。
uLilith では、旧 Lilith と違い、
一定量の巻き戻しや早送りをするコマンドは用意されていません。
このコマンドを使用し、巻き戻しボタンや早送りボタンを実装してください。

・SeekAbsolute
ファイルがロードされている場合、
再生位置をパラメータで指定した絶対位置に移動します。
パラメータの種類は、Int で、
ミリ秒単位で入力してください。
現在位置にかかわらず、パラメータで指定した再生時間の位置に移動します。
ファイルのトータルの再生時間を考慮して移動するわけではありませんので、
かなり特殊な使い方しかできないかと思われます。
先頭にまき戻すには、SeekAbsolute で 0 を指定するより、
Rewind コマンドを使う方がパフォーマンス的に有利です。
再生中であった場合には、位置変更後に、
新しい位置から即座に再生開始します。

・Rewind
ファイルがロードされている場合、
先頭に巻き戻します。
再生中であった場合には、巻き戻し後即座に
先頭から再生を開始します。

・RewindPlay
Play コマンドと Rewind コマンドの機能を併せ持ったコマンドです。
停止中の場合、プレイリストの現在位置のファイルをロードし、
先頭から再生を開始します。
一時停止中の場合、そのままの位置から再生を再開します。
再生中の場合は、先頭に巻き戻して、先頭から再生開始します。

・FadeOut
再生中の場合、パラメータで指定した時間をかけて、
フェードアウトしながら停止します。
一時停止中の場合、即座に停止します。
停止中だった場合には、何のアクションも起しません。
パラメータの種類は Int で、
ミリ秒単位で時間を指定します。

・FadeIn
停止中または一時停止中の場合、パラメータで指定した時間をかけて、
フェードインしながら再生を開始します。
再生中だった場合には、何のアクションも起しません。
パラメータの種類は Int で、
ミリ秒単位で時間を指定します。

・AddBookmark
現在の再生ファイル・再生位置をブックマークに追加します。

・OpenBookmark
指定した番号のブックマークを開きます。
パラメータの種類は Int で、
ブックマークの番号を 0 以上の整数で指定してください。

・OpenLastBookmark
最後に保存したブックマークを開きます。
パラメータはありません。

・SelectPlayList
設定の読み書き→読み込み→プレイリストフォルダが設定されているとき、
サブフォルダも含めたプレイリストファイルを順次読み込みます。
パラメータの種類は Bool で、True を指定した場合昇順、
False を指定した場合、降順に切り替えます。

・SelectPlayListByMenu
プレイリストフォルダ以下のプレイリストファイルを、
サブフォルダの構造どおりの多段メニューで表示し、
ダイレクト選択を可能にします。
表示されるのは、m3u / m3u8 / m3u16 のプレイリストファイルのみで、
cue シートなどは含まれません。

【３】状態操作系 (サウンド周り)

・VolumeRelative
ボリュームを現在値からの相対値で変更します。
パラメータで設定した分増加あるいは、減少します。
パラメータの種類は Int で、万分率で指定します。
(100 につき 1% です)
最低値 (0) または、最高値 (10000) の範囲からはみ出る場合には、
収まるように調整されます。

・VolumeAbsolute
ボリュームを絶対値で変更します。
パラメータで設定したボリュームにダイレクトに変更されます。
パラメータの種類は Int で、万分率で指定します。
100% へのリセットボタンなどに使用できるかと思われます。

・PanControlRelative
パン(左右の音量バランス)を現在値からの相対値で変更します。
パラメータで設定した分増加あるいは、減少します。
増加すると右寄りに、減少すると左よりにバランスが変わります。
パラメータの種類は Int で、万分率で指定します。
(100 につき 1 です)
最低値 (-10000) または、最高値 (+10000) の範囲からはみ出る場合には、
収まるように調整されます。

・PanControlAbsolute
パン(左右の音量バランス)を絶対値で変更します。
パラメータで設定したパン位置にダイレクトに変更されます。
パラメータの種類は Int で、万分率で指定します。
0 (中央) へのリセットボタンなどに使用できるかと思われます。

・CrossFade
再生切り替えモードをクロスフェード再生に切り替えます。

・NonStopMix
再生切り替えモードをノンストップミックス再生に切り替えます。
uLilith では、通常切り替えは廃止され、
ノンストップミックスが標準の切り替え方法になっています。

・PlayMode
再生モード (通常/単曲リピート/シャッフル/1ショット) を切り替えます。
パラメータで指定したモードにダイレクトで切り替えられます。
パラメータの種類は String で、以下の４つの文字列のいずれかを入力します。
Normal : 通常再生に切り替えます。
Repeat : 単曲リピート再生に切り替えます。
Shuffle : シャッフル再生に切り替えます。
1Shot : 1ショット再生 (再生終了後、次の曲には進まず停止) に切り替えます。
Toggle : 再生モードを順次切り替えます。Normal / Repeat / Shuffle / 1Shot の順で切り替わります。

・Equalizer
イコライザの ON/OFF を切り替えます。
ON にするか OFF にするかは、パラメータで指定します。
パラメータの種類は Bool で、以下の２つのいずれかを指定してください。
On : イコライザを ON にします。
Off : イコライザを OFF にします。

または、パラメータの種類 String で、以下の指定も可能です。
Toggle : On/Off を入れ替えます。

・PitchScaler
ピッチスケーラ (音程変更) の ON/OFF を切り替えます。
ON にするか OFF にするかは、パラメータで指定します。
パラメータの種類は Bool で、以下の２つのいずれかを指定してください。
On : ピッチスケーラを ON にします。
Off : ピッチスケーラを OFF にします。
または、パラメータの種類 String で、以下の指定も可能です。
Toggle : On/Off を入れ替えます。

・FreqScaler
周波数変更の ON/OFF を切り替えます。
ON にするか OFF にするかは、パラメータで指定します。
パラメータの種類は Bool で、以下の２つのいずれかを指定してください。
On : 周波数変更を ON にします。
Off : 周波数変更を OFF にします。
または、パラメータの種類 String で、以下の指定も可能です。
Toggle : On/Off を入れ替えます。

・TimeExpander
タイムエクスパンダ (再生速度変更) の ON/OFF を切り替えます。
ON にするか OFF にするかは、パラメータで指定します。
パラメータの種類は Bool で、以下の２つのいずれかを指定してください。
On : タイムエクスパンダを ON にします。
Off : タイムエクスパンダを OFF にします。
または、パラメータの種類 String で、以下の指定も可能です。
Toggle : On/Off を入れ替えます。

・PlayListLoop
プレイリストをループさせるかどうか、On/Off を切り替えます。
On にするか Off にするかは、パラメータで指定します。
パラメータの種類は Bool で、以下の２つのいずれかを指定してください。
On : プレイリストループを ON にします。
Off : プレイリストループを OFF にします。

または、パラメータの種類 String で、以下の指定も可能です。
Toggle : On/Off を入れ替えます。

・ShowEqualizerPreset
イコライザのプリセットをサブメニュー形式で表示します。
パラメータはありません。

・ResetEQBand
イコライザの各バンドまたは、プリアンプを 0 dB に初期化します。
パラメータの種類は、String または Int です。
プリアンプを初期化する場合、String で PreAmp を指定してください。
プリアンプを除くすべてのイコライザバンドを初期化する場合、String で AllBand を指定してください。
特定のイコライザバンドを初期化するには、Int で、0 〜 17 までのイコライザバンド番号を指定してください。


【４】サブウィンドウ表示系コマンド

・AddFile
サウンドファイルのロードウィンドウを表示します。
パラメータで、ロード後の動作を指定します。
パラメータの種類は String で、以下の４つのうちいずれかを指定してください。
New : 新規にプレイリストを作成し、登録だけを行います。
NewPlay : 新規にプレイリストを作成し、最初に登録したファイルの再生を開始します。
Add : 既存のプレイリストの末尾に追加だけします。
AddPlay : 既存のプレイリストの末尾に追加し、最初に追加したファイルの再生を開始します。

・AddFolder
フォルダを開くウィンドウを表示します。
パラメータで、ロード後の動作を指定します。
パラメータの種類は String で、以下の４つのうちいずれかを指定してください。
New : 新規にプレイリストを作成し、登録だけを行います。
NewPlay : 新規にプレイリストを作成し、最初に登録したファイルの再生を開始します。
Add : 既存のプレイリストの末尾に追加だけします。
AddPlay : 既存のプレイリストの末尾に追加し、最初に追加したファイルの再生を開始します。

・ShowPlayList
非ドッキングモード時、プレイリストウィンドウを開きます。

・ShowConvertList
ファイルの変換ウィンドウを開きます。

・ShowSettings
アプリケーションの設定ウィンドウを開きます。
※ 2008/10/13 現在、設定ウィンドウは未実装

・FileInfo
現在ファイルが開かれている場合、そのファイルの情報ウィンドウを開きます。
ファイルが開かれていない場合、PlayListFileInfo コマンドと同じ動作をします。

・PlayListFileInfo
プレイリストで現在選択されているファイルの情報ウィンドウを開きます。
複数選択されている場合は、先頭の１つのみ表示します。

・FileProperty
現在ファイルが開かれている場合、そのファイルのプロパティを開きます。
ファイルが開かれていない場合、PlayListProperty コマンドと同じ動作をします。

・PlayListFileProperty
プレイリストで現在選択されているファイルのプロパティを開きます。
複数選択されている場合は、先頭の１つのみ表示します。

・ShowEqualizer
イコライザウィンドウを開きます。

・ShowPlayControl
再生コントロールウィンドウを開きます。

・ShowOpenFace
フェイスを開くウィンドウを開きます。

・ShowEffect
エフェクトウィンドウを開きます。

・ShowFaceSelector
フェイスセレクタを開きます。

・AddCDDA
CD を開く のウィンドウを開きます。
パラメータで、ロード後の動作を指定します。
パラメータの種類は String で、以下の４つのうちいずれかを指定してください。
New : 新規にプレイリストを作成し、登録だけを行います。
NewPlay : 新規にプレイリストを作成し、最初に登録したファイルの再生を開始します。
Add : 既存のプレイリストの末尾に追加だけします。
AddPlay : 既存のプレイリストの末尾に追加し、最初に追加したファイルの再生を開始します。

・PopupQueryMenu
ビューの選択のポップアップメニューを表示します。
プレイリストのメニューで、ビューを選択したときと
同じメニューが単体で表示されます。

・CreateSubFace
指定した名前のサブウィンドウを作成し、指定したフェイス定義を読み込ませます。
パラメータの種類は、String です。
サブウィンドウ名, フェイス定義ファイルの相対パス, X, Y
の形式でパラメータを指定します。
サブウィンドウ名には、半角スペースや半角カンマは含むことができません。
フェイス定義ファイルのパスは、このコマンドが記述されている
フェイス定義ファイルからの相対パスで記述します。
パスに半角スペースや半角カンマを含む場合には、
半角ダブルクォーテーションで囲ってください。
X, Y は、現在のフェイスからの相対座標で初期表示座標を指定します。
座標を省略した場合には、(X, Y) = (0, 0) となります。
指定した名前が既に使用されていた場合には、何も起こりません。
ドッキングプレイリストを持つことができるウィンドウは１つだけですので、
すでにドッキングプレイリストを持っているのに、
ドッキングプレイリストの含まれたフェイス定義を読み込んだ場合、
警告が表示されますので、ご注意を。
それ以外に関しては、サブウィンドウのフェイスは、メインのフェイスと同じ機能を持ちます。

・DeleteSubFace
指定した名前のサブウィンドウがあれば、そのサブウィンドウを閉じます。
自分自身を閉じることもできるので、サブウィンドウ用のフェイス定義では、
閉じるボタンは Exit ではなく、このコマンドにすることをお勧めします。

・ToggleSubFace
指定した名前のサブウィンドウが存在すれば、そのサブウィンドウを閉じます。
存在しない場合、指定したパラメータによって新しいサブウィンドウを作成して
指定したフェイス定義を読み込ませます。
パラメータの種類は String です。
書式は、CreateSubFace とまったく同内容です。
一番最初の項目であるサブウィンドウ名で存在判定し、
存在すれば DeleteSubFace を、
しなければ CreateSubFace が行われます。

・HideSubFace
指定した名前のサブウィンドウが存在すれば、
そのサブウィンドウを非表示状態にします。
見えないだけで、リソースはは解放されないし、
スペアナの処理も行われています。
通常は、DeleteSubFace / CreateSubFace / ToggleSubFace で表示/非表示を切り替えてください。
パラメータの種類は String です。
サブウィンドウ名を指定してください。

・ShowSubFace
指定した名前のサブウィンドウが存在し、非表示状態であれば、
再び表示状態に戻します。
パラメータの種類は String です。
サブウィンドウ名を指定してください。


【５】フェイス操作系コマンド

・SwitchShowItem
現在のアイテムを非表示化し、
代わりにパラメータで指定したアイテムを表示します。
パラメータの種類は String です。
代わりに表示したいアイテムのフィールド名を指定します。
再生時間 / 残り時間 の表示の切り替えなどに使います。
クリックするたびにイメージの変わるアイテムなども実装できますので、
使い方次第では結構面白いことができると思われます。

・ShowItem
パラメータで指定したアイテムを表示します。
パラメータの種類は String です。
表示したいアイテムのフィールド名を指定します。
アイテムのフィールドを直接指定する代わりに、
それらが列挙されたコンテナ名を指定することも可能です。

・HideItem
パラメータで指定したアイテムを非表示化します。
パラメータの種類は、String です。
非表示化したいアイテムのフィールド名を指定します。
アイテムのフィールドを直接指定する代わりに、
それらが列挙されたコンテナ名を指定することも可能です。
SiwtchShowItem を使用する場合には、
標準ではフェイスロード後にすべてのアイテムが表示されてしまうので、
初期状態で非表示のアイテムを実現するために、
[Preference] フィールドの初期化コマンドで、
初期状態では非表示にしたいすべてのアイテムに対して、
このコマンドを使用して非表示化する必要があります。
状態連動のアイテムに関しては、状態に合わないものは
自動的に非表示化されますので、このコマンドを使用する必要はありません。

・ChangeFace
現在のフェイスをアンロードし、
パラメータで指定したフェイスをロードして表示します。
ミニパネルへの切り替えなどに使用します。
パラメータの種類は、String です。
表示したいフェイスの定義ファイル名を、
現在のフェイス定義ファイルからの相対パスで指定してください。

・ChangeWindowArea
デスクトップ領域へのクリッピングや、アライメント位置の補正に使用する、
ウィンドウの領域を変更します。
パラメータのタイプは、String で、left, top, right, bottom の順で、
半角カンマか半角スペースで区切り、４つの数値を入れてください。
10 進数しか認識しません。-1 を入力すると、その項目は現在の値を使用します。
座標は、本来のウィンドウの左上座標からの相対位置になります。
このコマンドを使うと、ModifyPlayList や ModifyItem で変化した、
実際の表示領域に応じて、クリッピング位置などを修正できます。
プレイリストを Modify 系コマンドで出し入れするフェイスなどで、
予約領域分、画面の端から空白が生じてしまうのを解決できます。
このコマンドを実行すると、フェイス変更時と同様に、
自動的にアライメント補正が行われます。
(元の領域で、左右上下端へ接しているか判断し、
必要があれば移動して、変更後の領域でも接している状態を保持します)
フェイスロード直後のウィンドウ領域は、フェイスのサイズと同じになります。


・SetFaceUpdate
フェイスの再描画を一時的に停止/再開します。
パラメータのタイプは、Bool です。
False を指定すると、True を指定してこのコマンドを実行するまで、
フェイスの再描画が一時的に停止されます。
True を指定すると、再描画が再開されるとともに、
今まで予約されていた画面更新をまとめて行います。
コマンドシーケンスにより、複数のアイテムを ShowItem / HideItem / ModifyItem などする際に、
いったん False にして停止した後に ShowItem コマンドなどを
複数実行し、最後に True に戻すことにより、
無駄な再描画を減らして、コマンドをスムーズに実行することができます。
ShowItem / HideItem / ModifyItem コマンドは、
逐次画面を更新するので、１つずつ順次消えたり現れたりしていくのが見えてしまいましたが、
このコマンドで再描画を一時停止することで、
瞬時に切り替わったように見せることが可能です。
※注意：このコマンドはフェイスコマンド以外からの再描画も停止してしまいます。
False にしたままコマンドシーケンスを終えてしまうと、
True にするコマンドが含まれたボタンなどを押すまでは、画面が一切更新されなくなってしまいます。
コマンドシーケンスを抜ける前に True に戻すことを忘れないようにしてください。

・DisableItem
指定したアイテムを一時的に無効化し、コマンドを発行させないようにします。
パラメータのタイプは String で、対象アイテムのフィールド名またはコンテナ名を指定してください。
非同期コマンドシーケンスを実行する場合などに、
内容がバッティングするコマンドを割り当てられたボタンなどを
無効化するのに使用してください。
たとえば、いくつかのアイテムを順番に表示させるアニメーションを
非同期コマンドシーケンスで組んだとして、
トリガとなったボタンを非表示、表示したアイテムを非表示に戻すボタンを表示、
などといった処理を加えると思われますが、
コマンドシーケンスの先頭の方で、元に戻すボタンを表示したい場合など、
コマンドシーケンスが終わる前に元に戻すボタンが押せるようになっていまい、
即座に押されるとおかしな表示状態になってしまうことが考えられます。
こういったことを防ぐために、コマンドシーケンスの先頭で、
元に戻すボタンを無効化し、コマンドシーケンスの最後で無効化解除、
などといった使い方を想定しています。

・EnableItem
DisableItem で一時的に無効化したアイテムを解除し、有効な状態に戻します。
パラメータのタイプは String で、対象アイテムのフィールド名またはコンテナ名を指定してください。
フェイス定義のキー Enable の状態を変えるコマンドではなく、
あくまでも Disable アイテムコマンドでの一時的無効化を解除するだけの
コマンドであることに注意してください。

・MoveItem
アイテムの表示座標を移動するコマンドです。
指定したフィールド名 または コンテナ名と、X,Y 座標、
キャンバス内へのクリップを行うかどうかのフラグを指定します。
パラメータのタイプは String で、
フィールド名, X, Y, フラグ
といった半角カンマとスペースで区切った形で、
フィールド名またはコンテナ名と、X と Y 座標、フラグを指定します。
フラグは、NoClip または、ClipInCanvas のどちらかを指定します。
フラグは省略することも可能です。
省略した場合、あるいは、無効な文字列が指定された場合、NoClip が指定されたとみなします。
ClipInCanvas が指定された場合は、指定したアイテムが
キャンバスからはみ出ないように座標が補正されます。
コンテナを指定した場合には、コンテナ内のどのアイテムもはみ出ないように補正されます。
コンテナの領域がキャンバスより大きく、どうしてもはみ出てしまう場合には、
コンテナ内のアイテム群を囲う最小矩形の左上座標が、キャンバス内に収まるように補正されます。
ModifyItem コマンドで同じようなことができますが、
こちらは指定を簡略化し、擬似アニメーションなどでの使用を
容易にしたバージョンです。
処理速度もこちらの方が速いはずです。

※2000/03/29 以降の追加注記事項
MoveItem で OriginItem が指定されているアイテムを指定した場合、
OriginItem の参照先アイテムの座標を再取得し、
元の相対座標に基づいて座標を補正しなおすだけの動作をするようになりました。
相対座標そのものを変更したい場合には、このコマンドではなく、
ModifyItem コマンドを使用してください。
OriginItem を指定している相対座標アイテムでは、
単体での移動はしないと思いますので、あまり不都合はないかと思います。


・MoveItemRelative
アイテムの表示座標を相対移動するコマンドです。
指定したフィールド名 または コンテナ名と、相対 X, Y 座標を指定します。
パラメータのタイプは String で、
フィールド名, X, Y
といった半角カンマとスペースで区切った形で、
フィールド名またはコンテナ名と、X と Y 座標の移動値を指定します。
ModifyItem コマンドで同様のことができますが、
こちらは指定を簡略化し、擬似アニメーションなどでの使用を
容易にしたバージョンです。
処理速度もこちらの方が速いはずです。

・ZoomItem
アイテムの拡大縮小率を変更します。
パラメータのタイプは String で、
フィールド名, 横倍率, 縦倍率
といった半角カンマとスペースで区切った形で、
フィールド名と縦横の倍率を指定します。
倍率は、1.0 が等倍で、小数値で指定してください。
非同期コマンドシーケンスによるアニメーションでの使用を想定しています。
拡大縮小率が 1.0 以外の状態では、描画処理が大変重くなりますので、
1.0 倍以外の状態で表示し続けないでください。
(拡大縮小による処理負荷増に加え、MMX/SSE2 ルーチンが使用されません)
アイテムの大きさが変わる擬似アニメーションを作成するときに、
途中の大きさのアイテム画像を作成する手間を省くためだけのコマンドです。
なお、Width と Height を超えた分は、カットされます。
あらかじめ、拡大後のサイズで収まる領域で指定しておくか、
ModifyItem コマンドで変更してからサイズを変えてください。

・ResizeCanvas
キャンバスのサイズ (フェイス上の描画可能領域) を動的に変更します。
パラメータのタイプは String で、
幅, 高さ
といった半角カンマとスペースで区切った形で、
幅と高さを指定してください。
-1 を指定すると、その項目は変更されず、現在の値のままとなります。
サイズ変更後も、原点座標は (0, 0) のままなので、実質右下方向への拡張と考えてください。
大きさの異なる複数の形態を、１つのフェイスに内包する場合、
このコマンドを使うと、複数の形態のうちの最大サイズを常に確保しなくてもよくなります。
小さい形態では、メモリ消費と CPU 負荷の軽減のために、これを使って縮小してください。
なお、このコマンドを実行してもウィンドウのスナップ領域は変わらないので、
別途 ChangeWindowArea コマンドを実行して調整する必要があります。
コストの高いコマンドなので、アニメーションなどには組み込まないでください。


・ModifyGlobalOffset
すべてのアイテムの相対座標補正である、グローバルオフセットを変更します。
パラメータのタイプは String で、
X, Y
といった半角カンマとスペースで区切った形で、
新しい X, Y オフセットを指定してください。
使用すると、全アイテムを一律に移動するのと同じ効果があります。
キャンバスのサイズは、右下方向にしか拡張できないので、
左上方向へ拡張する代わりに右下方向へ拡張し、
同時にグローバルオフセットを変更して、
擬似的に左上への拡張を再現できます。

・DragItem
フェイスアイテムのドラッグを開始するコマンドです。
パラメータのタイプは String で、
ドラッグしたいアイテムのフィールド名または、コンテナ名を指定します。
このコマンドは、単体で指定する必要があります。

このコマンドが設定されたアイテム上でマウスの左ボタンを押すと、
指定されたアイテムまたはコンテナのドラッグモードに入り、
マウスの移動に応じて指定されたアイテム群が移動します。
マウスのボタンを離すと、その位置でアイテムが固定されます。
コンテナとフェイスの状態保存をうまく組み合わせることで、
情報ウィンドウの位置などを使い手がカスタマイズできるように作れます。
あくまでもキャンバス内での移動になりますので、
移動によりキャンバスからはみ出た部分は表示されません。
また、ドラッグ可能アイテムの優先度には気をつけてください。
ドラッグ不可能で、優先度の高いほかのアイテムの裏に隠れてしまい、
移動不可能になってしまう場合があります。
これを解決するには、コンテナ内のアイテムすべてについて、
移動できない他のすべてのアイテムより高い優先度を指定する必要があります。
他の移動できるアイテムよりは優先度が低くてもかまいません。
いったんそちらをどかしたあとに、移動しなおすことが可能ですから。

・DragItemInCustomClipArea
フェイスアイテムのドラッグを開始するコマンドです。
パラメータのタイプは String で、
ドラッグしたいアイテムのフィールド名または、コンテナ名と、
クリップ領域 (ドラッグ移動可能領域) を指定します。
アイテム名と、クリップ領域の左上座標、および幅と高さを、
半角スペースやカンマで区切って、次のように入力します。
いずれの項目も省略はできません。
また、アイテム名には、半角カンマやスペースを含むことができません。
CommandParam = ItemName, X, Y, Width, Height

このコマンドは、単体で指定する必要があります。

通常の DragItem コマンドは、キャンバスからはみ出ないようにクリップされますが、
こちらのコマンドでは、クリップ領域を独自指定することが可能です。
キャンバスからはみ出るように指定することも可能ですが、
ドラッグの際につかめる部分がすべて外に出てしまい、
元に戻せなくならないようにご注意をお願いします。
クリップは、コンテナを指定した場合、
コンテナ全体が指定領域に収まるように行われます。
ここで指定したクリップ領域は、GlobalOffset の影響を受けますので、ご注意ください。

・ChangeFaceAndExecute
現在のフェイスをアンロードし、
パラメータで指定したフェイスをロードして表示します。
またその直後に、メインフェイス上で、
パラメータで指定されたコマンドコンテナの内容を実行します。
１つの定義ファイルを、プレイリストありモード、プレイリストなしモード
などと、切り替えてロードすることが可能になります。
パラメータの種類は、String です。
定義ファイル名と実行したいコマンドコンテナ名を、
, (半角カンマ) で区切って指定してください。
ファイル名やコマンドコンテナ名に半角カンマが含まれていると、
正しく動作しませんので、使用しないでください。
ここで指定するコマンドコンテナは、
新しくロードされるフェイス定義の方になくてはいけません。
※ イメージ的には、コマンドラインオプションを使って、
※ 実行ファイルの動作を切り替えるみたいな感じです。

・ReloadFace
現在のフェイスを再読み込みします。
パラメータで、状態セーブを読み込むかどうか選択することができます。
パラメータの種類は、Bool です。
True を指定した場合、フェイス定義側で状態セーブが有効になっていれば、状態をロードします。
False を指定した場合、強制的に状態セーブロードを無効化します。
パラメータを省略した場合、True が指定されたとみなします。

・OpenCurrentFaceFolder
現在表示しているフェイスの定義ファイルがあるフォルダをエクスプローラで開きます。

・MoveFaceRelative
現在のサブウィンドウの位置を相対座標で移動します。
パラメータの種類は、String です。
XOffset, YOffset, [クリッピングの有無]
の書式で指定します。
[クリッピングの有無] に True を指定すると、
ユーザのドラッグ操作で移動されたときと同様、
デスクトップエリア内へのスナップ、およびサブウィンドウ同士のスナップ、重なり排除の処理が行われる可能性があります。
False を指定した場合、一切の座標補正は行われません。
省略した場合は、True が指定されたとみなします。

・ModifyMinMaxInfo
可変サイズフェイスでの最小の幅/高さ、および、最大の幅/高さを変更します。
パラメータの種類は String です。
minWidth, maxWidth, minHeight, maxHeight
の順に、半角カンマで区切って記述します。
空欄のまま次のカンマを記述するか、-1 を指定した場合、その項目は変更されません。
また、最大の方に 0 を指定した場合、無制限となります。
現在のフェイスの大きさが、このコマンドでの設定値の範囲外の場合、
自動的に縦横の幅が補正されます。

【６】プレイリスト操作系コマンド

・PlayListClear
プレイリスト上のアイテムをすべて削除し、プレイリストを空にします。

・PlayListDelete
プレイリスト上の現在選択されているアイテムを削除します。

・PlayListSaveAs
プレイリストを名前をつけてファイルに保存します。

・PlayListDeleteRedundant
プレイリスト上の重複アイテムを削除します。
CueSheet などからの部分再生アイテムの場合、
再生範囲が完全一致するものだけが削除対象になります。

・PlayListReloadTag
プレイリスト上の選択されているアイテムのタグを再取得します。
CueSheet などからのアイテムのように、実ファイルにタグがついているわけではない
アイテムについては、再取得は行いません。

・PlayListReloadTagAll
プレイリスト上の全アイテムのタグを再取得します。
CueSheet などからのアイテムのように、実ファイルにタグがついているわけではない
アイテムについては、再取得は行いません。

・PlayListRenumber
プレイリストの No. カラムに表示される番号を振りなおします。

・PlayListShuffle
プレイリスト上のアイテムをシャッフルし、
再生順をランダムに並び替えます。

・PlayListAdjustColumnWidth
プレイリストのカラムの表示幅を自動調節します。
ドッキングモード時や、プレイリストの幅固定オプションが使用されている場合でも、
強制的に自動調節します。
非表示カラムは、幅 0 のままで、自動調節処理されません。

・PlayListResetColumnOrder
プレイリストのカラムの並び順を、標準の設定にリセットします。

・PlayListMove
プレイリストの選択アイテムを、パラメータで指定した量上下に移動します。
パラメータの種類は、Int です。
負の値を指定した場合は、上方向に、
正の値を指定した場合は、下方向に移動します。

・SendToConvertList
プレイリスト上の選択アイテムを、ファイル変換ウィンドウへ送ります。

・ModifyPlayList
ドッキングプレイリストの設定を変更します。
パラメータが多数あるので、Parameters カテゴリを作成し、
それを使用してパラメータを引き渡します。
CommandParamType を String とし、
CommandParam に、使用する Parameters カテゴリのフィールド名を指定してください。

指定する Parameters カテゴリの方では、以下のキーが使用できます。

特殊なキーとして、EnableDockingMode キーがあります。
ドッキングモードの On / Off を切り替えるキーです。
省略した場合は、On と解釈されます。
Off を指定した場合には、他の設定はすべて無視され、
フェイス上からプレイリストが消え、非ドッキングモードに変わります。
On を指定した場合には、以下のキーが読み込まれ、
その内容に応じて設定が変更されます。
これらのキーを省略した場合は、
直前の値をそのまま使用します。
変更する必要のあるキーだけ書いてください。

FontSize / FontStyle / FontFace / AlternateFontFace / ConstAlpha

TextColorNormal / BackColorOdd / BackColorEven / TextColorPlaying /
BackColorPlaying / TextColorSelected / BackColorSelected /
HeaderColorText / HeaderColorBackNormal / HeaderColorBackSelected /
HeaderColorBackMouseOver / HeaderColorHighlight / HeaderColorShadow

FileNameLabel / FilePathLabel / TitleLabel / ArtistLabel /
AlbumLabel / DateLabel / TrackNumberLabel / GenreLabel /
CommentLabel / PlayTimeLabel / NumberLabel キー

PosX / PosY / Width / Height

FileNameWidth / FilePathWidth / TitleWidth / ArtistWidth /
AlbumWidth / DateWidth / TrackNumberWidth / GenreWidth /
CommentWidth / PlayTimeWidth / NumberWidth キー

FileNameOrder / FilePathOrder / TitleOrder / ArtistOrder /
AlbumOrder / DateOrder / TrackNumberOrder / GenreOrder /
CommentOrder / PlayTimeOrder / NumberOrder キー

TopLeftAnchor / BottomRightAnchor

・PlayListItemOpenParentFolder
プレイリスト上で選択されているアイテムのファイルのある
フォルダをエクスプローラで開きます。
複数選択されている場合は、すべてのアイテムについて処理しますが、
同じフォルダが２重に開かれることはありません。
大量のファイルを選択しているときに実行すると、
大変なことになるやも

・PlayListCheckSelected
プレイリスト上で選択されているアイテムをチェック状態にします。
パラメータはありません。

・PlayListCheckInvert
プレイリスト上のすべてのアイテムのチェック状態を反転します。
パラメータはありません。

・PlayListCheckAll
プレイリスト上のすべてのアイテムをチェック状態にします。
パラメータはありません。

・PlayListUncheckAll
プレイリスト上のすべてのアイテムのチェックをはずします。
パラメータはありません。

・CurrentFileDeleteFromPlaylist
現在再生中のファイルがプレイリストからのものである場合、
プレイリストから削除します。
パラメータはありません。

・ModifyItem
任意のアイテムの設定を変更します。
パラメータが多数あるので、Parameters カテゴリを作成し、
それを使用してパラメータを引き渡します。
CommandParamType を String とし、
CommandParam に、使用する Parameters カテゴリのフィールド名を指定してください。
Parameters カテゴリのフィールドを直接指定する代わりに、
それらが列挙されたコンテナ名を指定することも可能です。
対象アイテムは、指定した Parameters カテゴリのフィールドの方で、
TargetItem というキーを作り、対象とするアイテムのフィールド名を指定します。
フィールド名に記号などが含まれていると正しく動作しない可能性がありますので、
英数字のみを基本としてください。
TargetItem では、半角スペースまたはカンマで区切って、
複数のフィールド名を指定し、まとめて適用することも可能です。

現在のところ、以下のキーを指定し、設定を変更可能です。
これらのキーを省略した場合は、
直前の値をそのまま使用します。
変更する必要のあるキーだけ書いてください。

FontSize / FontStyle / FontFace / AlternateFontFace / ConstAlpha
Caption / UseStringEdge
PosX / PosY / Width / Height
ActiveType / IsHided / Enable
ImageFile / PushedImageFile / MouseOverImageFile
CommandCount/Command/CommandParam/CommandParamType
TextColor / ShadowColor / BackgroundColor / 
PushedTextColor / PushedShadowColor / PushedBackgroundColor / 
MouseOverTextColor / MouseOverShadowColor / MouseOverBackgroundColor
FrameBufferWidth / FrameBufferHeight
TopLeftAnchor / BottomRightAnchor

対象アイテムのカテゴリで使用できないキーは、
無視されますのでご注意ください。

2009/12/08 より、イメージファイルの置き換えができるようになりました。
各状態のイメージを差し替えるのではなく、無しにしたい場合には、
= の直後に改行して、空のキーを作成してください。
イメージファイルを置き換えても、Width と Height の自動調整は行われません。
サイズの違うイメージに差し替えた場合、
明示的に Width / Height キーで新しい表示領域の大きさを指定してください。
コマンドの置き換え機能も同時に追加されています。
ただし、制限があり、コマンドの数を 0 にすることはできません。
コマンドの数を 0 にする代わりに、何もしないコマンド None や、
ウィンドウドラッグポイント MainWindowDrag を設定することで対応してください。
コマンドの置き換えをする場合、Command / CommandParam / CommandParamType を
基本的にはすべて記述する必要があります。
変更前のコマンドの CommandParamType が String だったからといって、
CommandParamType を記述しなかったとき、String と解釈されるわけではありません。
通常のフェイスアイテムに記述した時と同様の解釈処理が行われます。

・ModifyItemContainer

アイテムコンテナの内容を、指定した別のアイテムコンテナの内容で置き換えます。
パラメータの種類は、String です。
置き換える先コンテナ名, 置き換え元コンテナ名
の書式で指定します。
置き換えた内容は、状態セーブファイルに保存されます。

・ModifyCommandContainer コマンドを追加

コマンドコンテナの内容を、指定した別のコマンドコンテナの内容で置き換えます。
パラメータの種類は、String です。
置き換える先コンテナ名, 置き換え元コンテナ名
の書式で指定します。
置き換えた内容は、状態セーブファイルに保存されます。
InitCommand から呼び出されるサブルーチンの中身を置き換えることで、
終了時の状態を復元するようなコマンドが、状態セーブに応じて実行されるようにするなどの用途が考えられます。


【６】その他

・EjectMountCDDrive
指定したドライブレターまたは番号の CD ドライブの開閉を行います。
既に開いている場合には閉め、開いている場合には閉めます。
パラメータは、String または Int で指定します。
String の場合は、対象とするドライブ文字を指定してください。
Int の場合は、対象とするドライブの番号 (0 ベースインデックス) を指定します。
ドライブの番号は、必ずしもドライブ文字順とはならないのに注意してください。
『CD を開く』で左下に表示されるドライブの順番となります。
パラメータの指定がない場合には、0 番ドライブを開閉します。
基本的には、ドライブが一台しかない標準的な PC 向けにInt で 0 番を指定し、
仮想ドライブも含めて複数ある人向けに、
対象ドライブの変更の方法を ReadMe などで、
ガイドしてあげるとよいと思います。


・Wait
このコマンドは、UseAsyncCommand = True のフェイスアイテムでのみ使用できます。
そうでない場合、フェイス読み込み時にエラーが表示されます。
パラメータは、Int で指定します。
待機したい時間をミリ秒単位で記述してください。
ShowItem/HideItem/ModifyItem あたりとうまく組み合わせると、
スライドして登場するボタンなど、今までにない効果が作成できるかと思います。

・ExecuteAsyncCommand
CommandContainer として定義されたコマンドシーケンスを非同期で実行します。
パラメータは、String で指定します。
起動したいコマンドシーケンスの定義された CommandContainer カテゴリの
フィールド名を指定してください。
このコマンドは、シーケンスを実行するスレッドを作成した後、すぐに制御を返します。
このコマンドよりあとのコマンドは、スレッド作成後、
起動したシーケンスの終了を待つことなく、すぐに実行されます。
このコマンドを使うと、フェイスロード時に擬似アニメーションを開始することも可能です。

・CallSubRoutine
CommandContainer として定義されたコマンドシーケンスをブロック処理で実行します。
パラメータは、String で指定します。
実行したいコマンドシーケンスの定義された CommandContainer カテゴリの
フィールド名を指定してください。
このコマンドは、シーケンスをブロック処理で実行します。
指定したシーケンス内のコマンドをすべて実行してから、制御を返します。
このコマンドよりあとのコマンドは、その後実行されます。
このコマンドを使うと、よく行う処理を分離してまとめることができ、
フェイス定義の記述の省力化が図れます。

・TerminateAsyncCommand
ExecuteAsyncCommand で起動した、非同期コマンドシーケンスを終了します。
ExecuteAsyncCommand で指定した、CommandContainer カテゴリのフィールド名を指定してください。
同一のコマンドコンテナを実行しているすべてのシーケンスが終了します。
このコマンドで終了する場合、コマンドシーケンスは、Wait コマンドでの待機のタイミングで終了します。
他のコマンドの実行の途中では、終了されることはありません。
このコマンドを実行する場合、どの Wait コマンドのタイミングでも終了される可能性があるため、
終了されたときの状態は、毎回変わる可能性があります。
Wait コマンドの挿入位置から、どのアイテムの状態が変更されている可能性があるか完全に把握し、
止めたあと何らかの形で意図した内容になるように、コマンドの整合性を取る必要があります。

・JumpTo
指定した番号のコマンドへジャンプします。
パラメータの種類は、Int です。
範囲外の番号を指定した場合、即座にコマンドシーケンスが終了します。
コマンドの性格上、非同期コマンドシーケンス以外では無視されます。
指定する番号は、1 から始まる、CommandXX= の XX 部分と同じです。
条件分岐は現在実装されていませんので、無限ループしか組み込めません。
TerminateAsyncCommand コマンドで終了することができますが、
終了されずにフェイスがアンロードされた場合、
自動的にコマンドシーケンスは終了されます。
このコマンドを使用する場合、アンロード時に不定な状態で終了する可能性があるため、
フェイスの状態セーブを On にする場合には、
InitCommand で、関連するアイテムを常に特定の状態にリセットするなどの工夫が必要かと思います。

・None
何もしないコマンドです。
コマンドシーケンスの書き換え時などに、何もしない動作に変更する際に使用します。

・MoveFocus
ドッキングモードプレイリストを表示時、キーボードフォーカスをプレイリストに移します。
パラメータはありません。



以下、今後大幅にコマンドが追加されるはずです。
要望は、特設 BBS で受け付けますので、
どしどしお寄せください。

