CSAWとCSXS

CS Extension Builder 1.5 now available on the Adobe Storeと言う事で買える様になりました。1年のサブスクリプションで10$/月となっております。もちろんFlashBuilderは別途購入する必要がありますが、AEDPから独立したためかなり利用し易くなっています。みなさん使いましょう。
本日はCreativeSuiteSDKの特徴的な2つのライブラリについての解説です。

CSAW(Creative Suite Application Wrapper)クラスの概要
CreativeSuiteの標準的なスクリプティング環境はいずれもscripting DOMに対しての処理となっています。
CreativeSuiteSDKに関しても同様で、アプリケーションのオブジェクトに対するアクセスを提供するのがCSAWクラスです。JavascriptやVB、AppleScript等では直接ScriptingDOMにアクセスするのですがCSエクステンションの場合はこのwrapperクラスを介してアクセスする事になります。もちろんExternalHostObjectなんて仕組みもございますからJSXのインターフェースを介しての処理も有効です。ですから、DOMが内包しているBugはそのまんま同様に動作してくれたりするので困ったものです。しかしながらこのflashインターフェースは中間コードにコンパイルされている為、インタープリタであるExtendScriptと比較すると倍以上高速に動作します。また、wrapperクラスが故、日頃からJavascriptに勤しむスクリプターにしてみると意外となじみ易いものです。

CSXS(Creative Suite Extensible Service)クラス概要

  • エクステンションは通常、ホストアプリケーションやプラットフォーム、ロケールなどの環境に対応させる必要があります。こういった情報を集めるにはCSXSInterfaceクラスを利用します。
  • 初期設定を保持したい場合もCSXSInterfaceクラスが利用出来ます。
  • パネルの状態等に関するイベントを取り扱うのもこのクラスです。
  • エクスターナルリソースに対する処理をサポートします。これは他のエクステンションを起動する等の機能を提供します。
  • PlugPlug-interfaceを介してのNativeAPIへのアクセスが可能。

CSXSクラスがどういった物か列挙してみました。このCSXSクラスはネイティブAPIにダイレクトにアクセスするクラスです。このため通常スクリプティングDOMがサポートしないレベルの情報にアクセス出来たりします。
特徴的なのはこのクラスがシングルトンであると言う事です。CSプロダクトを通してインスタンスは1つしか生成されません。そのためこのクラスへのアクセスの基本はgetInstance()メソッドを利用する事になります。例えば、ホスト情報を得るためには次のような構成となります。

var result:SyncRequestResult = CSXSInterface.getInstance().getHostEnvironment();
var hostEnv:HostEnvironment;
if(SyncRequestResult.COMPLETE == result.status && result.data)
{
   hostEnv = result.data as HostEnvironment;
}

初期設定はCS(x)ServiceManager(xは5,5.5,6)/preference/csxs2.prefに保存されます。初期設定の利用法とはかけ離れますがCSXSオブジェクトがシングルトンな為、色々な所からアクセスしても安定して取り出しが行えます。要はIllustratorとIndesignとPhotoshopでデータを更新しながら共有する等の芸当が出来たりします。
パネルの状態(アクティベート・ディアクティベート)やコンポーネントのオンライン・オフライン及びアプリケーションのオンライン・オフラインに関するイベントを扱います。シングルインスタンスなのでイベント処理を介してCSアプリケーション同士で通信する等の処理も可能です。ペイロードにはXMLを利用します。オブジェクトをやり取りしたい場合等はbase64エンコード処理を行った後XMLに収納したりすると良いようです。
又、他のエクステンションにはExtensionIDを利用してアクセスする事ができます。もちろんこちらでもイベントに絡めてペイロードをやり取りする事が出来ます。
最後にc++ライブラリへのアクセスです。これはPlugPlug-interfaceを介して行われます。要はネイティブAPI側でプラグインを作ってそのプラグインとやり取りするかたちですね。これはEBに含まれるcsHostAdapterクラスとプラグインの関係が代表的な例です。IllustratorSDKにもPlugPlug-interfaceの実装例が含まれています。

と、まあ上っ面なめた様な概要ですが、年明けから細かい事は解説します。それでは皆様、良いお年をw

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中