Illustrator AIHostAdapterプラグイン

Extension

今まで何度も述べてきましたがAdobeCEPにはイベントというシステムがブラウザーのjsと同じように存在します。ただしCEPから生成できるイベントの種類はかなり限られていて例えばドキュメントが保存された後、アクティブなドキュメントが切り替わった後など数種類程度しかありません。詳しくは公式ドキュメントを参照。Photoshopの場合これに加えてアプリケーション側のイベントがいくつもあるのでレイヤーを操作した場合、ツールを切り替えた場合に発火するイベント等がを沢山使えます。Illustratorの場合はPhotoshop以外のアプリケーション同様こういったイベントは基本使えないのですがそれを可能にするプラグインが存在するというのが今回の本題です。

AIHostAdapterとcs_host_adapter-2.0.js

それでプラグインですが公式のGitHubに置いてあります。Win,Mac両方あるのでOSに応じてダウンロードしてください。Illustrator2022で動いたのでとりあえず最新の環境でも動くみたいです。ダウンロードしたらアプリケーションのプラグインフォルダーに入れます。これでIllustratorのアプリケーションのイベントがプラグインを通じて使えるようになりましたが現状サンプルコードもないのでどう使えばいいのか何もわかりません。実はこのプラグインのイベントをブラウザーのEventTargetオブジェクトのように使うためのコンストラクタが記述されたjsが存在します。これはAdobe公式のjsのはずなのですが2022年2月19日現在公式サイトやページのどこにも見つかりませんでした。コードの中身のコメントを読む限りおそらく公開しても大丈夫でしょう。おそらく。というわけでここにアップしておきました。(問題あったら消すかも)
それでこのプラグインですが実はどういった経由で作られたのかよくわかっていませんがかなり古くから存在しているようでcs_host_adapter-2.0.jsに2013年の記述があるのでプラグインができたのは2013年以前だと思います。googleで検索するとIllustrator2015の時に動かなかった報告も少し見つかったのでもしかしたらバージョンが上がるとまた動かなくなる事もありえます。以上の事を頭に入れて使ってみましょう。

使ってみる

開発するExtensionフォルダー内のindex.htmlで読み込んだら実際使ってみましょう。やり方はブラウザーのEventTargetとほとんど同じです。例えばイベントを追加する場合は以下のようにaddEventListenerで登録します。

もしくはAIEventオブジェクトのプロパティーに各イベントが既に格納されているのでそれを渡してもいいでしょう。

コンストラクター内部のインスタンスを間接的に呼び出してそこからaddEventListenerでイベントを呼び出します。イベントの中身ですが上のサンプルでは何かしらアイテムがペーストされた時のイベントですがその他にもレイヤーの操作、ドキュメント操作等かなりの種類のイベントがあります。詳しくはcs_host_adapter-2.0.js内に書いてありますが以下一部のイベントになります。

登録したイベントを外したい場合は簡単ですねremoveEventListenerです。

特定のイベントが登録されているかどうか確かめる場合はhasEventListenerで調べれらます。

イベントが登録されてなければundefinedを登録されている場合は登録されたメソッドをオブジェクトとして返します。
登録されたイベントを一覧として取得する場合はeventListeningプロパティーにイベントの一覧が格納されているのでそこから表示できます。(雰囲気的にgetEventlistメソッドとかありそうだけど見つからなかった)

ととりあえず今回AIHostAdapterプラグインに触れてみました。検索しても何も情報らしい情報が無かったので載せてみましたが他にもっと賢い使い方とかあるかもしれません。

Beer 寄付してサイトを応援する。