//ぷれいあ !母艦設計=「母艦の可視はオフ」 母艦のタイトルは「ぷれいあ」 標準文字色=白色//黒色//黒色 標準枠色=$356996//黒色//$d7d09e 標準背景色=$69a8c6//白色//$f0eed7 標準透過度=220 標準書体=「MS ゴシック|10|細字」//「メイリオ|9|細字」 標準行間=3//0 標準幅=320 フォント一覧取得を反復 もしそれが「メイリオ」ならば 標準書体=「メイリオ|9|細字」 標準行間=0 抜ける オリジナルエイリアス=「music{9000の乱数}g」 メインテキスト=母艦のタイトル サブテキスト=「ファイルをここにドラッグして再生。」 現在状態=「停止」 ファイルアドレス=「」 メディアタイトル=「」 メディアオーナー=「」 メディア詳細=「{母艦のタイトル}{\n}(c)2007 canot{\n}すくろーる」 最終時間=「」 時間位置=0 時間=「」 前回位置=0 再生曲番号=0 エントリーとは配列 エントリー数=0 ミュージックパレットとはフォーム コントロールパレットとはフォーム /* ミュージックフォームの設定 */ メインとはスムーズプログレスバー メインについて 親部品はミュージックパレット Xは5 Yは25 背景色は標準枠色//背景色//$f8f8cb 色は標準文字色//黒色 トジルとは画像ボタン トジルについて 親部品はミュージックパレット Xは0 Yは0 フラットはオン テキストは「r」 ヒントは「閉じる」 文字書体は「webdings|12|太字」 文字色は標準文字色 メインのマウス離した時は bf=((メインの最大値)*((メインのマウスX)/(メインのW)))の整数部分 オリジナルエイリアスを「{bf}」で「シーク」とMコン もし(現在状態=「再生」)ならば オリジナルエイリアスを「再生」とMコン 母艦の非アクティブ時は ミュージックパレットの透明度は標準透過度 コントロールパレットの可視はオフ ミュージックパレットのクリックした時は ミュージックパレットの透明度は240 コントロールパレットの可視はオン//NOT(コントロールパレットの可視) ミュージックパレットのファイルドロップされた時は ミュージックパレットのドロップファイルでファイル登録 現在状態=「再生」 再生曲番号=-1 次曲セレクト //0のファイル再生 ミュージックパレットについて スタイルは「枠なし」 クライアントHは90 クライアントWは標準幅 ドラッグ移動はオン 透明度は0 可視はオン ファイルドロップ許可はオン ポケットは0 /* コントローラフォームの設定 */ サイセイとは画像ボタン サイセイについて 親部品はコントロールパレット レイアウトは「全体」 フラットはオン テキストは「4」 ヒントは「再生/停止」 文字書体は「webdings|20|細字」 文字色は標準文字色 サイセイのクリックした時は もし(現在状態=「再生」)ならば 現在状態=「停止」 オリジナルエイリアスを「停止」とMコン 違えば 現在状態=「再生」 オリジナルエイリアスを「再生」とMコン マエヘとは画像ボタン マエヘについて 親部品はコントロールパレット レイアウトは「左」 フラットはオン テキストは「7」 ヒントは「前へ」 文字書体は「webdings|12|細字」 文字色は標準文字色 Wは50 マエヘのクリックした時は サイセイの可視はオフ もし(時間位置>(メインの最大値/10))ならば オリジナルエイリアスを「1」で「シーク」とMコン もし(現在状態=「再生」)ならば オリジナルエイリアスを「再生」とMコン 違えば 前曲セレクト ツギヘとは画像ボタン ツギヘについて 親部品はコントロールパレット レイアウトは「右」 フラットはオン テキストは「8」 ヒントは「次へ」 文字書体は「webdings|12|細字」 文字色は標準文字色 Wは50 ツギヘのクリックした時は サイセイの可視はオフ 次曲セレクト コントロールパレットのマウス移動した時は サイセイの可視はオン コントロールパレットについて 親部品はミュージックパレット スタイルは「枠なし」 透明度は0 可視はオン クライアントHは35 クライアントWは標準幅-26 Xは13 Yは25 ミュージックパレットのサイズ変更した時は UI総調整 /* タイマー */ ルーパーとはタイマー ルーパーについて 値は500 ルーパーの時満ちた時は 演奏制御 UI更新処理 /* 終了処理 */ 母艦の終了可能はオフ トジルのクリックした時は 終わる ミュージックパレットの閉じた時は オリジナルエイリアスをMコン ミュージックパレットの終了可能はオン 終わる 初期化関数 ●初期化関数 UI総調整 コントロールパレットの可視はオフ ミュージックパレットを中央移動 UI更新処理 ルーパーの開始 i=0 12回 i=i+20 ミュージックパレットの透明度はi 0.01秒待つ ミュージックパレットの透明度は240 //ミュージックパレットの最前面 ●演奏制御 時間位置=オリジナルエイリアスを「0」で「位置取得」とMコン もし((時間位置=-1)||(現在状態==「停止」))ならば 現在状態=「停止」 サイセイのテキスト=「4」 違えば 時間=「{(((時間位置*0.001)/60)の整数部分)を2でゼロ埋め}:{(((時間位置*0.001)%60)の整数部分)を2でゼロ埋め}」 サブテキスト=「{時間}/{最終時間}」 現在状態=「再生」 サイセイのテキスト=「;」 もし(前回位置==時間位置)ならば 次曲セレクト 前回位置=時間位置 もしメディア詳細が(-1)ならば メインテキスト=ファイルアドレスのファイル名抽出 違えば もし(ミュージックパレットのポケット<10)ならば メインテキスト=メディア詳細[0]の「{\n}」を「,」へ置換 違えばもし(ミュージックパレットのポケット<20)ならば メインテキスト=「Artist : 」&メディア詳細[1]の「{\n}」を「,」へ置換 違えば メインテキスト=「Album : 」&メディア詳細[2]の「{\n}」を「,」へ置換 ミュージックパレットのポケット=ミュージックパレットのポケット+1 もし(ミュージックパレットのポケット>30)ならば ミュージックパレットのポケット=0 ●前曲セレクト stat=-1 c=0 ルーパーの停止 (stat<0)の間 再生曲番号=再生曲番号-1 もし(再生曲番号<0)ならば 再生曲番号=エントリー数 c=c+1 もしc>2ならば 抜ける stat=再生曲番号のファイル再生 ルーパーの開始 ●次曲セレクト stat=-1 ルーパーの停止 (stat<0)の間 再生曲番号=再生曲番号+1 もしエントリー[再生曲番号]が空ならば 再生曲番号=0 再生曲番号のファイル再生 stat=1 抜ける stat=再生曲番号のファイル再生 ルーパーの開始 ●UI更新処理 ミュージックパレットのウィンドウレンダリング 文字書体は標準書体 文字色は標準文字色 ミュージックパレットの(((ミュージックパレットのクライアントW)-(メインテキストの文字幅取得))/2),(23+標準行間)へメインテキストを文字表示 ミュージックパレットの(((ミュージックパレットのクライアントW)-(サブテキストの文字幅取得))/2),(23+(メインテキストの文字高さ取得)+(標準行間*2))へサブテキストを文字表示 メインの値は時間位置 ミュージックパレットの描画処理反映 ミュージックパレットの(コントロールパレットのX),(コントロールパレットのY),(コントロールパレットのW),(コントロールパレットのH)をコントロールパレットの0,0へ画像部分コピー もし(サイセイの可視==1)ならば コントロールパレットに1の画像ボカシ コントロールパレットの描画処理反映 ●UI総調整 メインについて Xは50 Yは(ミュージックパレットのクライアントH-25) Hは10 Wは(ミュージックパレットのクライアントW-(メインのX*2)) 値は100 コントロールパレットについて クライアントHは35 クライアントWは標準幅-26 Xは((ミュージックパレットのクライアントW-コントロールパレットのW)/2) Yは25 UI更新処理 ●ウィンドウレンダリング({グループ=?}OBJの) 線太さは1 線色は標準枠色 塗り色は標準背景色 OBJの0,0から(OBJ→クライアントW),(OBJ→クライアントH)へ四角 ●ファイル登録({参照渡し}Fで) エントリー=F エントリー数=エントリーの配列要素数 ●ファイル再生(Nの) ミュージックパレットのポケット=0 オリジナルエイリアスを「停止」とMコン オリジナルエイリアスをMコン stat=オリジナルエイリアスを(エントリー[N]の「{\n}」を「,」に置換)で「開く」とMコン もし(stat<0)ならば //現在状態=「停止」 statを戻す 違えば ファイルアドレス=エントリー[N]の「{\n}」を「,」に置換 オリジナルエイリアスを「0」で「シーク」とMコン メディア詳細=ファイルアドレスのMタグ確認 メインの最大値はstat 最終時間=「{(((メインの最大値*0.001)/60)の整数部分)を2でゼロ埋め}:{(((メインの最大値*0.001)%60)の整数部分)を2でゼロ埋め}」 もし現在状態==「再生」ならば オリジナルエイリアスを「再生」とMコン 現在状態=「再生」 Nを戻す /*タグ関係---------------------------------------------------------------------*/ ●Mタグ確認({参照渡し}Sの) Mタグとは文字列=「」 バッファ1とは文字列=「」 バッファ2とは文字列=「」 詳細タイトル=Sのファイル名抽出 詳細アーティスト=「no data」 詳細アルバム=「no data」 詳細ビットレート=「」 詳細チャンネルモード=「」 エラー監視 Mタグ=Sのメディアタグ取得 Mタグを反復 バッファ1=それ バッファ2=バッファ1の「=」まで切り取る バッファ2で条件分岐 「Title」ならば 詳細タイトル=バッファ1の0から1文字削除 「Artist」ならば 詳細アーティスト=バッファ1の0から1文字削除 「Album」ならば 詳細アルバム=バッファ1の0から1文字削除 「BitRate」ならば 詳細ビットレート=バッファ1の0から1文字削除 「ChannelMode」ならば 詳細チャンネルモード=バッファ1の0から1文字削除 「FileLength」ならば 詳細ファイルサイズ=バッファ1の0から1文字削除 「{詳細タイトル}{\n}{詳細アーティスト}{\n}{詳細アルバム}{\n}{詳細ビットレート}{\n}{詳細チャンネルモード}{\n}{詳細ファイルサイズ}」を戻す エラーならば (-1)を戻す /*------------------------------------------------------------- 関数:Mコン MCIの動作をラップしています。 ここでクッションを作ることにより メンテナンス性やカスタマイズ性を向上させることができます。 転載、利用、改造はご自由に 説明:Conは制御、Exは制御オプション、Obは対象(エイリアス)をあらわします。 Sコマンド表 「開く」: open(ObへExを開く、成功すれば開いたファイルのlengthが返ってきます。[ミリ秒]) 「再生」: play(ObにオプションExをつけて再生) 「停止」: pause(Obを一時停止) 「シーク」: Seek(ObをExへシーク) _:close //共通 ex「開く」: 「music」を「{File}」で「開く」とMコン ex「再生」: 「music」を「repeat」で「再生」とMコン ex「停止」: 「music」を「停止」とMコン ex「シーク」: 「music」を「10」で「シーク」とMコン ex「閉じる」: 「music」をMコン //ビデオ専用 ex「ウィンドウ設定」: 「video」を「{Handle}」で「ウィンドウ設定」とMコン ex「サイズ設定」: 「video」を「0 0 100 100」で「サイズ設定」とMコン (c)2007 canot ---------------------------------------------------------------*/ ●Mコン(Obを{参照渡し=「」}Exで{文字列=「」}Conと) mconSとは文字列=1 エラー監視 Conで条件分岐 「開く」ならば 「{Ex}」が存在 もしそれがはいならば 「open "{Ex[0]}" alias {Ob} type mpegvideo {Ex[1]}」をMCI送信 「set {Ob} time format milliseconds」をMCI送信 mconS=「status {Ob} length」をMCI送信 違えば mconS=-1 「位置情報フォーマット」ならば 「set {Ob} time format {Ex}」をMCI送信//milliseconds mconS=「status {Ob} length」をMCI送信 「再生」ならば "play {Ob} {Ex}"をMCI送信 「停止」ならば "pause {Ob}"をMCI送信 「シーク」ならば "seek {Ob} to {Ex}"をMCI送信 「位置取得」ならば mconS="status {Ob} position"をMCI送信 「ウィンドウ設定」ならば "window {Ob} handle {Ex}"をMCI送信 「サイズ設定」ならば "put {Ob} destination at {Ex[0]}"をMCI送信 「ボリューム設定」ならば "setaudio {Ob} volume to {Ex}"をMCI送信 「速度設定」ならば "set {Ob} speed {Ex}"をMCI送信 違えば "close {Ob}"をMCI送信 エラーならば mconS=-1//「{エラーメッセージ}」 mconSを戻す /*------------------------------------------------------------- クラス:スムーズプログレスバー スムーズに表示されるプログレスバーです。 縦方向、横方向の切り替え、色の変更、文字の表示も可能です。 転載、利用、改造はご自由に (c)2007 canot ---------------------------------------------------------------*/ ■スムーズプログレスバー +GUI部品 +背景色プロパティ +最大最小プロパティ +値プロパティ +マウスプロパティ +キーボードプロパティ ・{イベント}クリックした時 ・{イベント}ダブルクリックした時 ・最大値{=100} ・値{=0} ←値設定 →値取得 デフォルト ・値{=0} ←バー描画処理 ・クリック位置{=0} ・背景色{=0} ・色{=0} ・値位置X{=0} ・値位置Y{=0} ・テキスト位置X{=3} ・テキスト位置Y{=1} ・テキスト{=「」} ・テキスト色{=0} ・{非公開}F透明化{=0} ・{非公開}透明化設定(Vを)〜 F透明化はV VCL_COMMAND(オブジェクト, "透明化設定", V) ・{非公開}透明化取得〜それはF透明化 ・透明化 ←透明化設定 →透明化取得 ・方向{=「横」} //方向が横なら横に伸び、縦なら横に ・反転{=0} //反転が0ならX,Yにしたがって、1なら逆に ・作る〜 オブジェクトは、VCL_CREATE(自身, 名前, VCL_GUI_IMAGE) 背景色=ウィンドウ背景色 色=アクティブ色 背景色で画面クリア //透明化=1 ・バー描画処理(HF)〜 背景色で画面クリア 線太さは1 線色は背景色 塗り色は色 もし(方向==「縦」)ならば 値位置Y=(H*(HF/最大値)) もし(反転==1)ならば 値位置Y=H-値位置Y 0,(H-値位置Y)からW,Hへ四角 違えば 0,0からW,値位置Yへ四角 違えば 値位置X=(W*(HF/最大値)) もし(反転==1)ならば 値位置X=W-値位置X (W-値位置X),0からW,Hへ四角 違えば 0,0から値位置X,Hへ四角 文字色はテキスト色 テキスト位置X,テキスト位置Yへテキストを文字描画 ・四角(X1,Y1からX2,Y2へ)〜 自身のX1,Y1からX2,Y2へシステム:四角 ・文字描画(XX,YYへSを)〜 //2011.1.10 debug thanks! 自身のXX,YYへSをシステム:文字表示 ・画面クリア({=$FFFFFF}RGBで)〜 自身をRGBでシステム:画面クリア