本サンプルアプリケーションでは、データブラウザに登録されたファイル一覧のダブルクリック(もしくは表示ボタンクリック)で、その画像をスクロールバー付きのウィンドウへ表示(オープン)することが可能です。今回からは、自作アプリケーションへの画像表示用ウィンドウの実装について解説していきたいと思います。
Mac OS X 10.2から、Carbon Frameworkには「HIView」という仕組みが導入されました。その仕組みの一部として、「Image View」や「Scroll View」といった新しいユーザインターフェースユニット(旧コントロールの一種)が用意されています。これらと、Carbon Event Handlerををうまく利用することで、画像をスクロールバー付きのウィンドウに表示する機能を簡単に実現することが可能となりました。本サンプルは、このImage ViewとScroll Viewを使うことで、画像ファイルをウィンドウに表示させます。
画像を独立したウィンドウに表示(オープン)させるには、データブラウザの画像ファイル一覧をダブルクリックするか、表示させたい画像ファイルを選択しておいてから、カタログウィンドウの「表示」ボタンをクリックします。後者の場合には、同時に複数の画像ファイルをオープンすることが可能です。前者は、「データブラウザ・コールバックルーチン」を解説した時に紹介した、myNotification()ルーチンが実行していますので、そちらを参照してみてください。後者の場合は、以下のopenSelectedImageFile()ルーチンが実行しています。

まず最初に、以下のgetSelectedDataBrowser()を使い、データブラウザで選択されている画像ファイルのアイテム番号と、その個数を得ます。

アイテム番号から1を引いた値は、カタログウィンドウのプロパティとして保存されているWInfo構造体(以下参照)のw_optr配列の引数と一致します。そこで、getWObject()ルーチンを使い、その番号に対応するObject構造体のポインタを得ておきます。

続いて紹介するのは、openSelectedImageFile()で呼ばれているopenViwerWindow()ルーチンです。最初にimageFileToImage()ルーチンで、画像ファイルからCore Graphics Imageを作り、それを、createMyWindow()ルーチンで作成したウィンドウに表示させます。ウィンドウにImage ViewやScroll Viewを配置するのは、setupViwerWindow()ルーチンの役割です。そして最後に、setupViwerWindowEvent()で必要とされるCarbon Event Handlerが登録されています。

画像ファイルを選択し、「表示」の代わりに「起動」ボタンが押された場合には、アプリ起動オプションがONで(引数のlaunchが1)openSelectedImageFile()が実行されます。その時、画像を作成したアプリケーションを起動しているのが、launchApplication()ルーチンです。この処理にはシステムのLaunch Servicesが提供するAPIが利用されています。各APIの詳しい内容については、LSInfo.hやLSOpen.hを参照してみてください。

次回は、openViwerWindow()から呼ばれているimageFileToImage()ルーチンについて解説します。基本的には、画像ファイルからCore Graphics Imageを作る処理なのですが、Mac OS Xのバージョンにより、その方法が大きく異なることを紹介したいと思います。
copyright 2005 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact us: koike@ottimo.co.jp