2 #include <gcontainer/gcontainer.h>
5 static void draw_shape (AdgPath
*path
);
6 static void drawing_expose (GtkWidget
*widget
,
11 main (gint argc
, gchar
**argv
)
18 gtk_init (&argc
, &argv
);
20 /* Create the canvas */
21 canvas
= adg_canvas_new ();
23 /* Add the shape to quote */
24 entity
= adg_path_new (ADG_CALLBACK (draw_shape
), NULL
);
25 g_containerable_add (G_CONTAINERABLE (canvas
), G_CHILDABLE (entity
));
27 /* Add the north quotes */
28 entity
= adg_ldim_new_full_explicit (2., -10., 8., -10., CPML_DIR_UP
, 0.0, -10.);
29 g_containerable_add (G_CONTAINERABLE (canvas
), G_CHILDABLE (entity
));
31 entity
= adg_ldim_new_full_explicit (0., -5., 10., -5., CPML_DIR_UP
, 0.0, -10.);
32 adg_dim_set_level (ADG_DIM (entity
), 2);
33 g_containerable_add (G_CONTAINERABLE (canvas
), G_CHILDABLE (entity
));
35 /* User interface stuff */
36 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
37 g_signal_connect (window
, "delete-event", G_CALLBACK (gtk_main_quit
), NULL
);
39 widget
= gtk_drawing_area_new ();
40 g_signal_connect (widget
, "expose-event", G_CALLBACK (drawing_expose
), canvas
);
41 gtk_container_add (GTK_CONTAINER (window
), widget
);
43 gtk_widget_show_all (window
);
50 draw_shape (AdgPath
*path
)
52 adg_path_move_to (path
, 0., 0.);
53 adg_path_line_to (path
, 0., -5.);
54 adg_path_line_to (path
, 2., -5.);
55 adg_path_line_to (path
, 2., -10.);
56 adg_path_line_to (path
, 8., -10.);
57 adg_path_line_to (path
, 8., -5.);
58 adg_path_line_to (path
, 10., -5.);
59 adg_path_line_to (path
, 10., 0.);
60 adg_path_close (path
);
64 drawing_expose (GtkWidget
*widget
,
65 GdkEventExpose
*event
,
73 cr
= gdk_cairo_create (widget
->window
);
74 width
= widget
->allocation
.width
;
75 height
= widget
->allocation
.height
;
76 scale
= (double) (width
- 10.) / 10.;
78 cairo_matrix_init (&matrix
, scale
, 0., 0., scale
, 5., 75. + 10.*scale
);
79 adg_container_set_model_transformation (ADG_CONTAINER (canvas
), &matrix
);
81 /* Rendering process */
82 adg_entity_render (ADG_ENTITY (canvas
), cr
);