テスト項目資料


 これは開発版にテスト実装した項目の資料です。
 安定版に実装されるまでは、変更されたり削除される可能性があります。
 開発版の間ならいくらでも修正を行いますので、意見がある方は掲示板にお願いします。


エフェクトプラグインについて

 V0.5.2よりエフェクトプラグインが実装されました。
 これはCROWで合成が終わったサーフィス画像をDLLでさらに加工する物です。
 一定時間かけて連続して加工する方法と、サーフィスに変化があるたびに呼ぶ方法の2種類の使い方があります。

 連続して加工する方法は、たとえばフェードイン、フェードアウト、ワイプなどに使用します。
 入力画像は、現在表示されている画像のみのほか、もう一枚対象となるサーフィスを指定することが出来ます。
 なお、この使い方ではアニメーションは非対応です。
 タグは
\![effect,プラグイン名,(速度(100で元スピード)),(以降ユーザーパラメータ)]
\![effect2,プラグイン名,追加サーフィス番号,(速度(100で元スピード)),(以降ユーザーパラメータ)]
 というように指定します。

 サーフィスに変化があるたびに呼ぶ方法では、たとえばモノクロ化、モザイク等に使用します。
 サーフィスの一部に変化があるたびに呼び出されるため、この方式ではアニメーションするシェルでも使用可能です。
 タグは
  設定 \![filter,プラグイン名,(起動時間),(以降ユーザーパラメータ)]
  解除  \![filter]
 というように指定します。

 詳細は、エフェクトプラグイン仕様を参照してください。
 なお、V0.5.x系列の間は、仕様が微妙に変化する可能性があります。

 現時点の実装では、Regionモードでは外形が変化するエフェクトは正常に動作しません。
 今後対応するかどうかは未定です。

 これはDelphiでエフェクトプラグインのサンプルです。
 EffectSample.zip

 これはCROWを起動せずにテストするプログラムです。
 EffectTest.zip

 なお、現在ドラッグ&ドロップによるインストールはまだ対応していません。
 crow.exeと同じ階層にeffectフォルダを作り、そこにdllをコピーしてください。
 effectフォルダの下にさらにフォルダがあっても読み込みます。


スケールタグ

 V0.5.2よりスケールタグが実装されました。
 タグは
 \![set,scaling,(横倍率),(縦倍率),(変化時間)]
 のようになります。
 倍率は100で1倍となります。
 変化時間はms単位です。

 横倍率のみの指定があった場合は、縦横同じ値として設定されます。
 変化時間の指定がなければ瞬時に変わり、
 変化時間の指定があれば現在のスケールから指定したスケールへ変化時間をかけて変化します。


ゴーストフォルダの階層化について

 V0.5.0より、ゴーストフォルダを階層化することができるようになりました。
 その場合、下位フォルダは自動的に登録されるわけではないので、一つずつ登録する必要があります。
 従来の設定でも可能ですが、後述するゴーストエクスプローラを使用すると便利です。
 階層フォルダとして認識するには、親から順に登録する必要があります。
 間が抜けていたり、順番が逆転していると正常に認識しません。なお、順番の補正についてはあとで実装予定です。
 例えば、 c:\ghost
c:\ghost\ghost_1
c:\ghost\ghost_1\ゴーストAのフォルダ
c:\ghost\ghost_1\ゴーストBのフォルダ
c:\ghost\ghost_2
c:\ghost\ghost_2\ゴーストCのフォルダ
c:\ghost\ghost_1\ゴーストDのフォルダ
 のような構成の場合、
c:\ghost
c:\ghost\ghost_1
c:\ghost\ghost_2
 の3つを検索フォルダとして登録する必要があります。

ゴーストフォルダのショートカットについて


 V0.5.0より、ショートカットのゴーストフォルダを認識するようになりました。
 これにより実体を単一フォルダに登録し、ショートカットを使用して階層メニューを構成すると、
CROWでは階層メニューからアクセス可能になり、SSP,MATERIAからは単一フォルダとしてアクセスできるようになります。
 これも、ゴーストエクスプローラから作成可能です。

ゴーストエクスプローラについて


 V0.5.0より、ゴーストエクスプローラを内蔵しました。
 ただし、シェルやバルーンのエクスプローラ機能は持っていないため、従来の偽GEも同梱しています。
 なお、設定-互換性タブの設定により、従来通り偽GEも使用できます。

 このゴーストエクスプローラでは、ゴーストを選択して起動する以外にも、ゴーストの検索、ネットワーク更新、ゴースト表示順の入れ替え、
ゴーストフォルダの追加、ゴーストフォルダの新規作成、フォルダ・ゴーストの表示名称の変更、指定フォルダをエクスプローラで開く
ゴーストフォルダのコピー、ゴーストフォルダの移動、ゴーストフォルダのショートカットの作成などが出来ます。
 順に解説します。
・ゴーストへの変更
 右側のリストから選びたいゴーストをダブルクリックするか、右クリックメニューから切り替えを選ぶ、
もしくは上のゴーストメニューから切り替えを選びます。
・ゴーストの検索
 上の検索メニューから選ぶか、CTRL+Fで検索ダイアログが開きます。
 ここに入れた文字列がGhostName,SakuraName,KeroName,表示文字列のなかの一つの一部にヒットした物が選ばれます。
 また、F3か、上の検索メニューから次を検索で、条件に合う次の候補を探します。
・ネットワーク更新
 ゴーストを選び右クリックメニューの中のネットワーク更新か、上のゴーストメニューからネットワーク更新を選びます。
 なお、現在起動中のゴーストはここからはネットワーク更新をすることは出来ません。
 このネットワーク更新は、複数続けて実行することが出来、前のネットワーク更新が完了しなくても次の更新を指定できます。
 その場合特に表示は出ませんが、今実行中の更新が完了し次第次の更新が実行されます。
・ゴースト表示順の入れ替え
 右のゴーストメニューでドラッグ&ドロップをすることによりゴーストの表示順を入れ替えることが出来ます。
・ゴーストフォルダの追加
 上のファイルメニューよりフォルダ追加を行うことにより、ゴーストフォルダを新規に追加することが出来ます。
 このフォルダは事前に生成されている必要があります。
 親となるフォルダが存在すれば、自動的にその子として認識されます。
 従来の設定ダイアログのゴーストフォルダ追加と同じ動作です。
・ゴーストフォルダの削除
 上のファイルメニューよりフォルダ追加を行うことにより、現在選択されているフォルダの子として新規フォルダを生成できます。
 この場合、設定する名称は表示上の名称で、ファイル上の名称はghost?という感じになり、?には数値が順に入ります。
 この実際のゴーストフォルダ名をWindowsのエクスプローラ等でリネームすると再登録するまで認識されなくなるので注意してください。
 実フォルダリネーム機能も実装予定です。
・フォルダ・ゴーストの表示名称の変更
 CROW V0.5.0より、実際のフォルダ・ゴーストの名称以外にCROW上のみの表示名称をつけることが可能になりました。
 例えば、新旧ゴーストが同居している場合などで、区別をしたい場合等に使用してください。
 この表示名称を変更しても、フォルダ名やdescript.txtは一切変更されません。
 変更する場合は、ゴーストやフォルダを選択した状態でF2か右クリックメニューの名前の変更、または選択中にもう一度クリックしてください。
・指定フォルダをゴーストエクスプローラで開く
 フォルダやゴーストを選択し、右クリックメニューよりエクスプローラで開くを選ぶことにより、
実際のフォルダがある場所をWindowsのエクスプローラで開くことが出来ます。
・ゴーストフォルダのコピー、移動、ショートカットの作成
 これらの操作は、右のリストのゴーストをドラッグし、左のフォルダにドロップすることにより実行します。
 その際、どの操作を行うかは上のファイルメニューの設定から指定が出来ます。
 デフォルトでは左ドラッグでショートカット作成、右ドラックでメニューによる選択になっています。

動的SERIKO


 これはSERIKO定義をSakuraScript上で行うことにより、動的にアニメーションを定義する物です。
 従来のsurfaces.txtを置き換える物ではなく、それの補助として使用します。
 追加した分のアニメーショングループ番号は100から順に使われます。
 また、その動的に追加したアニメーションは次のサーフィス変更まで有効で、
同じアニメーションを行なう場合はサーフィスを切り替えるたびに設定する必要があります。
 基本は、サーフィス切り替えタグと一緒に使うが、あとから追加してもかまいません。

・タグの仕様
 \![anim,add,overlay,パラメータ]
 パラメータは可変長で、最小では一つです。
 下記のようなパターンで使用します。

 \![anim,add,overlay,SurfaceNo]
  この場合、指定したサーフィスを座標移動させずに重ね合わせます。

 \![anim,add,overlay,SurfaceNo,X,Y]
  この場合、指定したサーフィスをX,Y座標分移動させ重ね合わせます。

 \![anim,add,overlay,SurfaceNo,X,Y,Interval,SurfaceNo,X,Y,Interval,SurfaceNo,X,Y,Interval〜]
  この場合は単なる重ねあわせではなく、アニメーションの定義となります。
  Intervalの単位は1msです。

 \![anim,add,overlay,SurfaceNo,X,Y,Interval,SurfaceNo,X,Y,Interval,SurfaceNo,X,Y,Interval,IntervalType]
  アニメーションを繰り返した後に発生するタイミングを記述するパターンです。
  IntervalTypeには、runonce, alwaysの指定ができます。
  指定しなかった場合はalwaysとみなされます。

 同様な形で、\![anim,add,overlayfast,パラメータ]、\![anim,add,move,パラメータ]、\![anim,add,base,パラメータ]も存在します。
 baseの場合はX,Yが省略され、moveの場合、SurfaceNoが省略されます。
 なお、一つのアニメーショングループの中に、overlayやmove等の混在はできません。
・例
surfaces.txtの記述
    surface0
    {
    0interval,runonce
    0pattern0,0,10,base
    0pattern1,1,10,base
    0pattern2,2,10,base
    
    1interval,always
    1pattern0,0100,5,overlayfast,0,0
    1pattern1,0101,5,overlayfast,0,0
    1pattern2,0102,5,overlayfast,0,0
    1pattern2,0103,5,overlayfast,0,0
    }
スクリプト
  \s[0]\![anim,add,overlay,5]\![anim,add,overlay,10,20,5]\w5\![anim,add,overlay,200,0,0,50,201,0,0,50,202,0,0,50]
 
 このように指定した場合、アニメーショングループ100にサーフィス5の表示、アニメーショングループ101にサーフィス10をずらして表示、
 ウェイトをはさんでからアニメーショングループ102に新規アニメーションを追加という形になります。
 動的に追加したアニメーションに対しても、\iタグや、\![anim,stop]等のタグは有効です。

サーフィスへのテキスト描画


 これも動的SERIKOの一種ですが、このタグを使用することによりサーフィス上にテキストを描画することが出来るようになります。
 表示する場合はエリアを指定し、自動改行が行われます。
 その際、表示時間を指定することにより順に文字を表示することも可能です。

・タグ仕様
 \![anim,add,text,X座標,Y座標,横幅,縦幅,文字列,(表示時間),(色),(フォントサイズ),(フォント名)]
 文字列の部分まで必須で。それ以降は省略可能です。

サーフィス位置指定


 これはサーフィス同士をリンクさせたり、デスクトップ上の固定位置にサーフィスを表示する物です。
 CROW V0.5.0より最大スコープ数は64まで拡張されているため、これを使用することにより独自のフロートボタンや、
独自のバルーンもどきを作成することが出来ます。

・タグ仕様
\![set,position,X座標,Y座標,(基準とするキャラ)]
 現在のサーフィスを指定した座標に固定します。
 moveタグと違い、一瞬で移動し以降その場所に固定されドラッグを受け付けなくなります。
 \![reset,position]を指定することにより解除されます。
 X座標、Y座標は目的の座標を指定。負の値も指定可能です。

 基準とするキャラは、別のスコープの相対位置に移動する際に使用します。
 指定方法は0 1等のキャラクターを表わすIDの数値の他、スクリーン左上を起点とするscreenがあります。
 省略時はscreenが指定したとみなされます。

 なお、moveタグのような基準位置も実装予定です。

\![reset,position]
 \![set,position]を解除します。

プロパティシステム


・概要
 これは、CROWで使用している各種パラメータを設定したり取得したりするものです。
 かなり細かなパラメータにアクセスできるため、従来SAORIやファイル直アクセスをしなければならなかった情報を比較的簡単に入手、設定できます。

・アクセス方法
 アクセス方法は複数あり、タグ、環境変数、DirectSSTPが使用できまする。
 タグを使用してプロパティを取得する場合は、そのタグを実行した直後に発生するイベントで取得します。
 SHIORI側で入手せず、そのまま表示する場合は環境変数を使用します。

・プロパティの種類
 各プロパティは階層構造をもっており、.で区切ります。
 たとえば
  system.hour
  baseware.scope(0).surface.no
 などです。
 すべては文字列で管理され、存在しない物は空文字列が返ります。

・SHIORI変数アクセス
 このプロパティシステムは、CROW内部のパラメータ以外にも各種SHIORIのローカル変数にもアクセスできます。
 現在サポートしているのは里々、文、華和梨だけでです。
 ただし、変数ファイル名が違っていたり、暗号化されている場合は取得できず、また常に読み込み専用です。 
 なお、現在はコードが内部に埋まっているがプラグイン形式で追加できる形にする予定です。
 
・環境変数による取得
 環境変数で取得する場合は%property[]を使用します。
 例:
  %property[system.hour]
  %property[baseware.scope(0).surface.num]

・タグによるアクセス
 タグを使用して読み書きをすることも出来ます。
 取得する場合は、イベント名と一緒に指定することにより、Ref0に取得した値が入ったイベントが発生します。
 書き込む場合
\![set,property,プロパティ名,値]
 として使用します。

 読み込む場合
\![get,property,イベント名,プロパティ名,(プロパティ名),...]
 プロパティ名は複数指定することができ、複数指定した場合は順にRef0、Ref1に入ります。

・DirectSSTPによるプロパティシステムへのアクセス
 EXECUTE SSTP/1.1を拡張し、使用します。
 プロパティを書き込む場合
EXECUTE SSTP/1.1
Sender: プログラム名
Command: SetProperty[プロパティ名,値]
Charset: Shift_JIS

 として使用します。
 成功した場合、
SSTP/1.5 200 OK

が返ります。

 プロパティを取得する場合
EXECUTE SSTP/1.1
Sender: プログラム名
Command: GetProperty[プロパティ名,値]
Charset: Shift_JIS
 として使用すると
SSTP/1.5 200 OK

取得した値
として値が求められます。
ステータスコードのあと、空改行が1行あって実際のデータになります。
なお、現在取得できない場合は、空文字列になります。

・使用できるプロパティ
なお日本語表記の部分は適切な値を代入して使用します。
 プロパティ名は大文字、小文字を区別しません。
 "ゴースト名"の部分はname,sakuraname,ゴーストへのフルパスの3種が利用できます。
 "シェル名"の部分はname,シェルへの相対パスの3種が利用できます。
 リスト内index(番号)〜やcurrent.〜となっている部分は、〜の部分を上のリストの部分と同様に使えます。
 例:
  ghostlist.index(0).name
  shelllist.curremt.path
  currentghost.craftmanw

 また、現状ではsurface関連以外読み込みのみです。
 あくまでも、今使える物のみでまだ増える予定です。

 また、階層構造や名称はまだ変化する可能性があります。
 system.year
 system.month
 system.day
 system.hour
 system.minute
 system.second

 baseware.version
 baseware.name

 ghostlist.count
 ghostlist(ゴースト名).name
 ghostlist(ゴースト名).sakuraname
 ghostlist(ゴースト名).keroname
 ghostlist(ゴースト名).craftmanw
 ghostlist(ゴースト名).path
 ghostlist(ゴースト名).shiori.変数名
 ghostlist(ゴースト名).index

 ghostlist.index(番号).〜

 currentghost.〜

 currentghost.shelllist.count
 currentghost.shelllist(シェル名).name
 currentghost.shelllist(シェル名).sakuraname
 currentghost.shelllist(シェル名).keroname
 currentghost.shelllist(シェル名).path
 currentghost.shelllist(シェル名).index
 currentghost.scope(番号).surface.num
 currentghost.scope(番号).surface.x
 currentghost.scope(番号).surface.y

 currentghost.shelllist.index(番号).〜
 currentghost.shelllist.current.〜

旧資料

- back -

(c) 2002,2003 AQRS