6.1 【続Export】 Exporter Componentの続き。カスタムセーブダイアログを使って書き出しルーチンを書いてみた。標準ダイアログに保存形式のポップアップメニューとオプションボタンを加えたもの。Importerで表示されるダイアログとほぼ同じ体裁のものにした(もちろんボタンの名前などは日本語)。 保存形式によってオプション設定があるものとないものがあるからそれをなんらかの方法で区別してやらなければいけない。コンポーネントのフラグかなにかで調べられるだろうと思ったのだがそれらしい特徴は見つからず、ドキュメントも読んでみたがこれこれのファイル形式にはオプションがありますといったことしか書かれていない。ということは、自分でオプションのある形式をチェックしておいてある場合はオプションボタンを使用可能に……という流れになるのか。この方法ではQuickTimeのバージョンがあがってファイル形式が増えた場合に対応できないが、そのときはまたマイナーバージョンアップするということでなんとかいけるかな。 それ以外の部分はさして難しいこともなくうまくいった。拡張子の変更は開いたインスタンスからデフォルトの拡張子を調べて……という感じであっさりと成功。フィルタルーチンのほうはアップデートイベントを処理できるようにするだけで完成かな。IconPartyの時は各ファイルタイプにショートカットを割り当てたのでもう少し複雑だったんだけど。 一応Importerとほぼ同じ形のダイアログができたが、いろいろやった割には見かけ上はほとんど変わっていない。保存ダイアログがムーバブルになったくらいの違いしかない。たしかにQuickTime 4.0+PPC環境でも正常に書き出しが行われるようになったが、それはただのバグフィックスとも言える。それだけの変更で新しいバージョンというのもちょっといやだなぁと思う(次のバージョンは1.20だと決めてあったし(笑))。 まず、ちょっと前から気になっていた「復帰」メニューを追加してみた。範囲選択の機能をつけたことによってスクリプトでいろいろなことができるようになったのだが、複雑なスクリプトを実行してしまうと元に戻す方法がないのだ(苦笑)。ファイルに保存してある場合はそれを開き直せばいいのだけど、メニューから一発でできるならそのほうが楽だ。そんなわけで、追加。 クリップボードから読み込んだ場合にはどうしようもないので保留。読み込んだ画像をどこか(テンポラリファイルにリソースの形などで、かな)に保存しておけばなんとかなりそうな気がするけど……。 また、復帰についてもスクリプト対応に。何度もやっていることだからさして難しいことはない。 そして、書き出しのスクリプト対応。今回のバージョンアップの目玉はここだ。QuickTime 4.0以降が必要なのはちょっといまいちだが(苦笑)、3.0で書き出すことができる形式はJPEG、PICT、BMP、QuickTime Imageだけだから4.0以降のみの対応でも実用上は問題ないだろうというわけ。3.0にはExporterがないからプログラムが面倒だったという理由もあるけど(汗)。 どんなスクリプトで書き出すことができるのかについてはドキュメントをみてもらえばわかるからここでは省略することにして、内部の話を少し。Exporter Componentには、書き出しの個々の設定を細かく設定したりその設定を読み込んだりする機能があるから主にはこれを使ってスクリプトとやり取りする。ファイル形式によって使用できるオプションが違うからややこしいかなと思ったが、まずい場合にはExporterがエラーを返してくれるからそれを使うだけでいいみたい。また、オプションによっては各画像形式に特化されたものがあって、そういうものには設定用のAPIが用意されていない。その場合は、設定をatom containerとして取り出し、自分で内容をいじるようにした。面倒だが、まあしかたがない(苦笑)。 めんどくさそうだったのでずっと保留してきた書き出しスクリプトだったけど、やってみたら案外楽にできてしまってちょっと拍子抜け。まあ、最初はImporterでやろうと思っていたんだからそれをExporterに変えただけでかなり楽になったというのもあるだろうけど。 書き出しがスクリプト対応になったことによって、画像形式間のコンバートが簡単に行えるようになったことは大きなポイントだ。なんらかの画像ファイルをドロップするとPNGに変換してくれるスクリプトなんてのも簡単に作ることができる。画像をスクリプトで処理したいと思っていた方には朗報かもしれない(笑)。GIFに対応していないのがちょっとさびしいが、そのあたりはclip2gifを使ってもらうということで(汗)。あ、あと、JPEG6への対応については、検討中と。 |