月別2019年05月 一覧

Photoshop Extensionの開発22 フォームデザイン1

topcoatのライブラリーを使用すれば自作でcssを用意しなくても便利なフォームデザインが用意されているのは前回述べた通りです。それでも自前でデザインしてみたい場合のカスタマイズについて述べます。ちなみにtopcoatを使用ずる場合はdisabled時やチェック時のフォームの反応やクリックした時の反応等全て事前に用意されているのでこれら全て自前でカスタマイズするとなるとそれなりの労力になる事は覚悟してください。 まずhtml チェックボックスをふた通り用意しました。それぞれ大きくカスタマイズするのでlabel要素の中にdivも一緒に挟んでいます。labelで一緒に挟む事によりdivをクリック

Read more

Photoshop Extensionの開発21 CEPイベント2

前回一部CEP上のイベントを紹介したがさらに以下紹介する。 com.adobe.csxs.events.WindowVisibilityChanged Extensionパネルが出たり消えたりした時に発火 com.adobe.csxs.events.ExtensionLoaded Extensionパネルが読み込まれた時に発火?多分 com.adobe.csxs.events.ExtensionUnloaded Extensionパネルが読み込まれなかった時のイベント?多分。もしかしたら閉じた時のイベントかもしれません。すいませんよくわかっていません。 WindowVisibilityChan

Read more

Photoshop Extensionの開発20 CEPイベント

Extensionには既存のブラウザー向けのイベントは勿論Adobeのソフトで動く専用のイベントも用意されている。具体的にはドキュメントを閉じたり開けたりした時のイベントだ。Photoshop上でドキュメントが編集された時にイベントを発火させたい時など既存のクロームのイベントだけだと対応できない。但し登録のやり方自体ブラウザ向けのイベントとほとんど変わらない。 csinterfaceのインスタンスにaddEventlisternerを登録。documentAfterActivateはPhotoshop上で何かしらのドキュメントが開かれたりしたアクティブになった時に発火するイベント。コールバック

Read more

Photoshop Extensionの開発19 キーボードイベント

前回述べたとおりCEPの基本のイベントはブラウザ同様の手法で反応します。それではkeyイベントを登録すればExtension上のショートカットを登録できるのではないのだろうか?そう思っていた時期が私にもありました。 ウインドウにkeydownイベントを登録して準備完了。Photoshop上で何かしらキーを押す。 反応しない。ちなみにfキーを押すと Photoshopのデフォルトのショートカット通りフルスクリーンモードになりました。Photoshopのショートカットは反応するけどパネルには反応しない?そうです、キーイベント自体ウインドウに登録してもパネルそのものがウインドウになるのでパネルにフォ

Read more

Photoshop Extensionの開発18 イベント基本

何度も述べている通りCEP自体クロームベースのエンジンなのでイベントを定義する場合はブラウザ上で行う場合と全く同じでaddEventListenerを使用。CEP専用のイベントもaddEventListenerがベースになっているのでフロントエンドに慣れていればとっつきやすい。既に何度かイベント関連のコードはアップしているが再度載せておく。 html CSSはtopcoatを使用。switchのようなformはlabelとdiv要素でフォームがレイアウトが作られている。labelにfor属性を持たせて中のフォーム要素のidに同名の値を定義させるとlabelとfrom要素を関連つける事ができる。

Read more

Photoshop Extensionの開発17 画像データの取得

Extensionのパネル自体クロームベースであるためブラウザ同様Imageオブジェクトから画像サイズを取得できる事は前回述べたができる事がかなり限られてしまう。しかしCEP側からはNode.jsモジュールが使用できるので何かしらモジュールを使用すればパネル上で画像データの取得ができる。という事今回はNodeモジュールの使用方法も含めて画像データを取得方法を記載する。まずこちらで画像サイズを取得するimage-sizeというモジュールが公開されている。PSDも含めた幅広い拡張子に対応しているそうなので今回はこれを使ってみよう。 というわけでまずはpackage.jsonの作成。  

Read more