タイトルMac OS XのCore Graphicsのサンプルプログラムとドキュメントについてカテゴリーアップルからの開発資料, グラフィックス
作成日2001/7/3 16:29:50作成者新居雅行
サンプルプログラムとして、Core Graphics(Quartz 2D)の機能を使ったものが2つ新たに掲載された。Core Graphicsは、Mac OS Xに搭載された、基本的なグラフィックス描画を行うシステム機能である。CarbonあるいはCocoaから利用できるようになっているが、Carbonから使う場合にはMach-O形式のバイナリである方が便利だ。従来のMac OSではQuickDrawが基本グラフィックス機能を提供しており、Mac OS Xでも利用は可能だが、より高機能なCore Graphics機能の利用が今後は中心になると考えられる。
公開された2つのサンプルは、主に、Current Transform Matrix(CTM)を利用して画像を描画するというもの。実際の描画をCTMで記述した処理を施した結果として行うことができ、回転や変型などした結果を比較的簡単に描画できるというものである。

◇CTMDemo 1.0
http://developer.apple.com/samplecode/Sample_Code/Graphics_2D/CTMDemo.htm

このサンプルプログラムを実行すると、起動時に画像ファイルを選択するダイアログボックスが表示される。画像を選択すると、その画像が大きくなったり小さくなったり、あるいは円軌道上を移動したりといったアニメーションを見ることができる。CTMの定義とそれを適用した描画の部分がポイントとなるだろう。また、アルファチャンネルの処理といった部分も参考になると思われる。

◇CTMClip
http://developer.apple.com/samplecode/Sample_Code/Graphics_2D/CTMClip.htm

CTMClipは、CTMDemoと基本的は同じだが、描画領域に対してClipCGContextToRegionというAPIを利用し、描画をウインドウ全体ではなく、一部分に制限するといった機能を付加したものである。

以上のサンプルはCarbonアプリケーションである。タイマーイベントはCarbon Eventを使っているが、その他のイベントは従来方式である。ただし、グラフィック描画の部分とは切り離されているので、その部分は無視すればいいだろう。
なお、Quartz 2Dに関しては、以下のページにある2つのPDFファイルが資料として公開されている。「Quartz Primer」は、14ページの文書でQuartzの諸機能をまとめたものである。また、Carbonアプリケーションから利用についてはプログラムとともに解説されている。CFMベースのアプリケーションからQuartzを使う方法も掲載されているが、単にAPIコールするだけでなくフレームワークのロードなどが必要になりやや面倒なことが分かる。もう1つの文書「Drawing With Quartz 2D」は、比較的詳しい文書であるが、70ページの内容である。描画のパラメータや結果についての説明もあるが、APIの敢然な解説までは含まれていない。しかしながら、サンプルプログラムは比較的豊富に掲載されている。

◇Quartz 2D
http://devworld.apple.com/techpubs/macosx/CoreTechnologies/graphics/Quartz2D/quartz2d.html

以上のページ以外にはTechnical Q&Aに文書がいくつかあるものの、主だったドキュメントがとりあえずは見つからないので、後はヘッダファイルということになるだろう。Core Graphics関連のヘッダは、上記のサンプルプログラムだと、ApplicationServices.hに移動すれば、そこにCoreGraphics.hヘッダのインクルードを行っているところがある。さらに移動するとたくさんのヘッダがインクルードされているが、CGContext.hあたりが主要な部分だ。これらのヘッダではAPIの定義部分でいちおうの説明がある。なお、Appleの開発者向けドキュメントのサイトには、「Quartz Compositing」という項目もあるがどのページにもリンクはされていない。いずれにしても、Quartzに注目している人は、ドキュメントの公開動向にも注意を払っておくのがよさそうだ。
関連リンク