PSSdev/FreeDesign

順序番号なしのアイテム定義

itemXX 形式で定義されるアイテム要素から、順序番号 XX を削除する。

これを実現することで、変数名を多重に定義できる。 つまり、出てくる順番で(リテラルに)変数値を変更しながらitemを指定できるため、 同じ変数名(例えば x, y など)を複数の意味で使用することができる。

その際に定義すべき仕様を考える。

進行状況

Draft1 (2003-03-23)
item,stat,stat_and の仕様を考えた。
Draft2 (2003-03-23)
stat_and を stat2 に変更。
Alpha12 (2003-03-25)
Draft2 を実装

item の仕様

item = "hoge" という形式とする。

右辺値に対する仕様変更は行わない。

stat/stat2 の仕様

現状の statXX, statXXand をそれぞれ stat, stat2 に変更する。

stat 項目は直前にある item に対する状態定義とする。

stat は item の次の行、stat2 は stat の次の行に存在しなければならない。

まとめ

旧定義新定義制限備考
itemXXitem
statXXstatitemの次の行になければならない
statXXandstat2statの次の行になければならない

ローカル変数

スキン定義の便宜のために設ける(いわゆる)変数

個数制限はない

進行状況

Draft1 (2003-03-23)
varXXkey/varXXval 形式で定義
Draft2 (2003-03-23)
Draft1 ではスキンが書きにくかったので、$key=val 形式で再定義
v6.0 Alpha11 (2003-03-23)
Draft2 を実装

Notation

$key = val で定義される。

key で指定された名前を変数名と呼ぶ。変数名にはalphabet,number,_が使用できる。

item 項目に $key を指定することで変数として扱うことが出来る。

変数は 右辺値 で指定された値が展開される。

実際には C 言語の #define のようなプリプロセッサ型展開が行われる

$edit_x      = 170
$replyedit_y = 257
item26	= "str,  ($edit_x, $replyedit_y-17, $edit_x+80 , $replyedit_y   ), '回答',  Left, 0, 000000"
item27	= "edit, ($edit_x, $replyedit_y   , $edit_x+600, $replyedit_y+32), Reply"

ユーザ変数

オプション画面でユーザが変更できる変数

定義できるのは 20 個まで。

進行状況

Draft1 (2003-03-23)
userXXzz形式で定義
Draft2 (2003-03-23)
ローカル変数と組み合わせることにした。
Draft3 (2003-03-23)
背景イメージ BackgroundImageFile? に対応
Draft4 (2003-03-25)
user〜desc、user〜type、user〜key の組ではなく

userXX 一文で定義するように変更。 実装についての覚え書きを追加。

Draft5 (2003-03-25)
変数の個数を 20 個に変更。
v6.0 Alpha13 (2003-03-25)
Draft5 を実装。

設定可能な項目

ユーザ側の利便性とスキン作者によるデザインを考慮して、以下の項目を変更可能とする。

また、オプション画面では、デフォルト値を使うかどうかを指定できる

項目名変数のタイプオプション画面での設定項目備考
フォント関連項目fontフォント選択ダイアログ
フォント名fontnameフォント名選択コンボボックス実装は未定
フォントサイズfontsizeスピンコントロール実装は未定
カラーcolorカラーピッカー
背景色-カラーピッカースキンでは定義しなくてよい(デフォルト値の指定にはBackgroundColor?を用いる)
背景イメージ-参照ボタンスキンでは定義しなくてよい(デフォルト値の指定にはBackgroundImageFile?を用いる)

Notation

userXX によって定義される。(XXは二桁の数値)

item 系や font 項目と同様に、複数の項目を , で区切った形で記述する。

第1項
変数の解説文(オプション画面で変更する際に利用者に提示される情報)
第2項
変数のタイプ
第3項
変数名($hogeの形で記述する)
user00        = "'区切りの色', color, $bordercolor"
$bordercolor  = "7070ff"
item40	      = "border, (85, 20+20*0, 85+67, 20+20*0+20), $bordercolor"

注意事項

user〜 で指定された変数が上書きされる。

言い換えれば「この変数はユーザで変更してもいいですよ」という指定をすることになる。

ユーザが(オプション画面で)その変数を変更した場合は、スキンファイルで指定した値は無視され、 その変数値は全てユーザが変更した値で置き換えられる。

逆に言えば、ユーザがその変数を変更していない場合は、スキンファイルで指定した値が利用される。 (user〜で何が書いてあっても全く関係ない。「変数のタイプ」すら関係ない)

font の例

user00        = "'数値のフォント', font, $font_num"
$font_num     = "16, 1, 0, 0, 0, MS Pゴシック"
font09	      = "$font_num"

実装(ユーザ設定の保存)

ユーザがオプションで設定すると、skin/user.ini の [hoge] セクション(hoge はユーザ名)に

ahi00=30

のような記法で記述される。ahi はスキンの名称(DesignName?)、右辺はユーザが設定した変数値。

実装(覚え書き)

  • CFreeDesign?::UserVar?
    • スキンファイル上のユーザ変数を管理する
  • CFreeDesign?::UserVarMangaer?
    • ユーザが変更したユーザ変数を管理する。

学習画面起動時は、スキン読み込み前に UserVarManager? によって skin/user.ini のユーザ変数定義が読み込まれる。

その後、UserVarManager? が渡され、CFreeDesign? によってスキンが読み込まれる。 変数展開の際には UserVarList? にその値が存在するかどうかを確かめ、 UserVarList? 上にその変数値が存在すれば、スキンで定義されている変数値よりも UserVarList? で定義されている値を優先して展開される。

このエントリーをはてなブックマークに追加

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-03-07 (水) 20:22:18 (4609d)