!!! GDKの概要
!! GDK (GIMP Drawing Kit)
* GTKのグラフィック機能
* 線を描いたり、四角を描いたり、丸を描いたり
* GDKの関数は、GLibの関数をそのまま呼び出しているものが多い
!! Cairo(A Vector Graphics Library)
* 最近はGDKの関数で直接描かずに,Cairoを使って書く
* ベクターグラフィックスなのでジャギーがでない
* 多くの出力デバイスに対応
!! 画像
* 2次元配列に「色」が格納されている
* 左上が原点
* 横がx軸(左から右に増加、ピクセル)
* 縦がy軸(上から下に増加、ライン)
* 配列の1つを「ピクセル(pixel)」と呼ぶ
((img gdk-apple2.jpg))
!! GDK&Cairoで描く
* 手で描くのと比較すると、
|| |---手で描く---|---GDKで描く---|---cairoで描く---
||---媒体---| 画用紙 |[[GDK2014::ドローアブル]]|[[GDK2014::ドローアブル]]
||---道具---|絵の具、筆|[GDK2010::グラフィックコンテキスト|http://wiki.cis.iwate-u.ac.jp/~wiki/Soft.cgi?GDK2010::グラフィックコンテキスト]|[[GDK2014::Cairo]]
||---手段---|手|[GDK2010::描画関数|http://wiki.cis.iwate-u.ac.jp/~wiki/Soft.cgi?GDK2010::描画関数]|[[GDK2014::Cairo]]
((img Gdk-and-Cairo.png))
!! GDKで絵を描く仕組み
* ウィンドウ上に絵を書くときは直接ウィンドウへ描画せず、ドローイングエリアウィジェットを介して行う
* 画面の再描画(exposeイベント)などの処理はユーザが用意しなければならない
+ ドローイングエリアとピクスマップを作成 [[GDK2014::ドローアブル]]
((img gdk-drawingB1.jpg))
+ exposeイベントの設定 [[GDK2014::exposeイベント]]
((img gdk-drawingB1B.jpg))
+ ピクスマップに描画 [[GDK2014::Cairo]]
((img gdk-drawingB2.jpg))
+ gtk_main()をした後に、exposeイベントが起こったらコピー [[GDK2014::exposeイベント]]
((img gdk-drawingB3B.jpg))
!! サンプル
! ソースプログラムの所在
* 以下のsvnのリポジトリ
** https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/
! ファイルごとの解説
* [[gtk_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/gtk_lib.h]]
* [[gtk_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/gtk_lib.c]]
* [[cairo_sample_lib.h|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/cairo_sample_lib.h]]
* [[cairo_sample_lib.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/cairo_sample_lib.c]]
* [[cairo_sample.c|https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/cairo_sample.c]]
! 実行手順
8<
#svnから持ってくる(実行した直下にcairo_sampleディレクトリができる)
svn export https://svn.cis.iwate-u.ac.jp/svn/csd/kimura/cairo_sample/
#持ってきたディレクトリに移動
cd cairo_sample
#make
make
#実行
./cairo_sample
>8
!! リンク
* [GDK Reference Manual|https://developer.gnome.org/gdk2/2.24/]
** GDK 2.24.22対応(システムは2.24.13、2013/10/24現在)、英語
* [Cairo Reference Manual|http://cairographics.org/manual/]
** Cairo 1.12.16対応(システムは1.12.2、2013/10/24現在)、英語
* [[GDK2014::GdkPixbuf]]
* [[GDK2014::アニメーション]]
* [[GDK2014::イベント]]