Added accessors to AdgArrowStyle
[adg.git] / demo / ldim.c
blob23872e21956e4a6acc48f7a9d6e23f4d322e94ef
1 #include <adg/adg.h>
2 #include <gcontainer/gcontainer.h>
3 #include <gtk/gtk.h>
5 static void draw_shape (AdgPath *path);
6 static void drawing_expose (GtkWidget *widget,
7 GdkEventExpose *event,
8 AdgCanvas *canvas);
10 int
11 main (gint argc, gchar **argv)
13 GtkWidget *window;
14 GtkWidget *widget;
15 AdgCanvas *canvas;
16 AdgEntity *entity;
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);
44 gtk_main ();
46 return 0;
49 static void
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);
63 static void
64 drawing_expose (GtkWidget *widget,
65 GdkEventExpose *event,
66 AdgCanvas *canvas)
68 cairo_t *cr;
69 gint width, height;
70 double scale;
71 AdgMatrix matrix;
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);
84 cairo_destroy (cr);