MagnifyというSample Codeは、マウスポインタが指している周辺部分を、あるウインドウに拡大して表示するというサンプルプログラムだ。プログラム自体はC++で記述されており、Carbonフレームワークを利用している。また、ウインドウなどの定義はnibファイルを利用している。Project BuilderおよびCodeWarriorのプロジェクトが含まれており、Mac OS X向けだけでなく、Mac OS 8/9向けのバイナリも生成できる。プログラムのポイントは、CreateNewPortというAPIでグラフポートを生成できるのであるが、そのグラフポートは画面全体の画像データを保持するものが初期的に設定されている。そして、マウスの動きに応じて、そのグラフポートから、アプリケーションで用意したウインドウにビットマップ転送をかけている。したがって、グラフィクス処理はQuickDrawベースとなっている。イベント処理はCarbon Eventで行っている。nibファイルをベースにして、Mac OS XとMac OS 8/9で共通のソースから異なるメニューを出す方法なども情報として得られるサンプルだ。 |