1 /*
2  * GooCanvas. Copyright (C) 2005 Damon Chaplin.
3  * Released under the GNU LGPL license. See COPYING for details.
4  *
5  * goocanvasrect.h - rectangle item.
6  */
7 #ifndef __GOO_CANVAS_RECT_H__
8 #define __GOO_CANVAS_RECT_H__
9 
10 #include <gtk/gtk.h>
11 #include "goocanvasitemsimple.h"
12 
13 G_BEGIN_DECLS
14 
15 
16 /* This is the data used by both model and view classes. */
17 typedef struct _GooCanvasRectData   GooCanvasRectData;
18 struct _GooCanvasRectData
19 {
20   gdouble x, y, width, height, radius_x, radius_y;
21 };
22 
23 
24 #define GOO_TYPE_CANVAS_RECT            (goo_canvas_rect_get_type ())
25 #define GOO_CANVAS_RECT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOO_TYPE_CANVAS_RECT, GooCanvasRect))
26 #define GOO_CANVAS_RECT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GOO_TYPE_CANVAS_RECT, GooCanvasRectClass))
27 #define GOO_IS_CANVAS_RECT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOO_TYPE_CANVAS_RECT))
28 #define GOO_IS_CANVAS_RECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOO_TYPE_CANVAS_RECT))
29 #define GOO_CANVAS_RECT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GOO_TYPE_CANVAS_RECT, GooCanvasRectClass))
30 
31 
32 typedef struct _GooCanvasRect       GooCanvasRect;
33 typedef struct _GooCanvasRectClass  GooCanvasRectClass;
34 
35 /**
36  * GooCanvasRect
37  *
38  * The #GooCanvasRect-struct struct contains private data only.
39  */
40 struct _GooCanvasRect
41 {
42   GooCanvasItemSimple parent;
43 
44   GooCanvasRectData *rect_data;
45 };
46 
47 struct _GooCanvasRectClass
48 {
49   GooCanvasItemSimpleClass parent_class;
50 
51   /*< private >*/
52 
53   /* Padding for future expansion */
54   void (*_goo_canvas_reserved1) (void);
55   void (*_goo_canvas_reserved2) (void);
56   void (*_goo_canvas_reserved3) (void);
57   void (*_goo_canvas_reserved4) (void);
58 };
59 
60 
61 GType               goo_canvas_rect_get_type  (void) G_GNUC_CONST;
62 
63 GooCanvasItem*      goo_canvas_rect_new       (GooCanvasItem      *parent,
64 					       gdouble             x,
65 					       gdouble             y,
66 					       gdouble             width,
67 					       gdouble             height,
68 					       ...);
69 
70 
71 
72 #define GOO_TYPE_CANVAS_RECT_MODEL            (goo_canvas_rect_model_get_type ())
73 #define GOO_CANVAS_RECT_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GOO_TYPE_CANVAS_RECT_MODEL, GooCanvasRectModel))
74 #define GOO_CANVAS_RECT_MODEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GOO_TYPE_CANVAS_RECT_MODEL, GooCanvasRectModelClass))
75 #define GOO_IS_CANVAS_RECT_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GOO_TYPE_CANVAS_RECT_MODEL))
76 #define GOO_IS_CANVAS_RECT_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GOO_TYPE_CANVAS_RECT_MODEL))
77 #define GOO_CANVAS_RECT_MODEL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GOO_TYPE_CANVAS_RECT_MODEL, GooCanvasRectModelClass))
78 
79 
80 typedef struct _GooCanvasRectModel       GooCanvasRectModel;
81 typedef struct _GooCanvasRectModelClass  GooCanvasRectModelClass;
82 
83 /**
84  * GooCanvasRectModel
85  *
86  * The #GooCanvasRectModel-struct struct contains private data only.
87  */
88 struct _GooCanvasRectModel
89 {
90   GooCanvasItemModelSimple parent_object;
91 
92   GooCanvasRectData rect_data;
93 };
94 
95 struct _GooCanvasRectModelClass
96 {
97   GooCanvasItemModelSimpleClass parent_class;
98 
99   /*< private >*/
100 
101   /* Padding for future expansion */
102   void (*_goo_canvas_reserved1) (void);
103   void (*_goo_canvas_reserved2) (void);
104   void (*_goo_canvas_reserved3) (void);
105   void (*_goo_canvas_reserved4) (void);
106 };
107 
108 
109 GType               goo_canvas_rect_model_get_type  (void) G_GNUC_CONST;
110 
111 GooCanvasItemModel* goo_canvas_rect_model_new (GooCanvasItemModel *parent,
112 					       gdouble             x,
113 					       gdouble             y,
114 					       gdouble             width,
115 					       gdouble             height,
116 					       ...);
117 
118 
119 G_END_DECLS
120 
121 #endif /* __GOO_CANVAS_RECT_H__ */
122