gtk+-2.8なwidgetの中にcairoを使って絵を書こう(1)
gtk+2.8以降に使えるcairoの詳細を読んでいく。以下のコードはこの Writing a Widget Using Cairo and GTK+2.8から来ています。cairoで描写する時計を描くプログラムを作っていく。コードそのものはここで手にはいる。
始めに概念や全体の説明があるけど斜め読みしてstep.1へ。いきなり、main関数を見てみましょうか。
int
main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *clock;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
clock = egg_clock_face_new ();
gtk_container_add (GTK_CONTAINER (window), clock);
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show_all (window);
gtk_main ();
}
とってもシンプル。この中で特殊なのがegg_clock_face_new()だけ。他はgtk では良く有る話なのでとりあえず無視。このegg_clock_face_newは EggClockFace というGTK_TYPE_DRAWING_AREA なGTK_OBJECT をnewして返す関数であり、
GtkWidget *
egg_clock_face_new (void)
{
return g_object_new (EGG_TYPE_CLOCK_FACE, NULL);
}
となっている。EggClockFace は新しく定義した GTK_OBJECT なんで、
G_DEFINE_TYPE (EggClockFace, egg_clock_face, GTK_TYPE_DRAWING_AREA);
から下に定義しているコードがつづいている。GTK_TYPE_DRAWING オブジェクト はいろいろ便利な機能がそろっているので、これをベースに cairo な clock 用の オブジェクト を作っているらしい。詳細は本文を見てください。
これで準備が終ったので、step.2へ
0 Comments:
コメントを投稿
<< Home