]> git.sur5r.net Git - glabels/blob - src/view-object.h
Organized master branch to be top-level directory for glabels, instead of
[glabels] / src / view-object.h
1 /*
2  *  view-object.h
3  *  Copyright (C) 2001-2009  Jim Evins <evins@snaught.com>.
4  *
5  *  This file is part of gLabels.
6  *
7  *  gLabels is free software: you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation, either version 3 of the License, or
10  *  (at your option) any later version.
11  *
12  *  gLabels is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with gLabels.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #ifndef __VIEW_OBJECT_H__
22 #define __VIEW_OBJECT_H__
23
24 #include <glib-object.h>
25 #include "label-object.h"
26
27 typedef enum {
28         GL_VIEW_OBJECT_HANDLES_BOX,
29         GL_VIEW_OBJECT_HANDLES_LINE,
30 } glViewObjectHandlesStyle;
31
32 typedef enum {
33         GL_VIEW_OBJECT_HANDLE_NONE = 0,
34         GL_VIEW_OBJECT_HANDLE_N,
35         GL_VIEW_OBJECT_HANDLE_E,
36         GL_VIEW_OBJECT_HANDLE_W,
37         GL_VIEW_OBJECT_HANDLE_S,
38         GL_VIEW_OBJECT_HANDLE_NW,
39         GL_VIEW_OBJECT_HANDLE_NE,
40         GL_VIEW_OBJECT_HANDLE_SE,
41         GL_VIEW_OBJECT_HANDLE_SW,
42         GL_VIEW_OBJECT_HANDLE_P1,
43         GL_VIEW_OBJECT_HANDLE_P2,
44 } glViewObjectHandle;
45
46
47 #define GL_TYPE_VIEW_OBJECT              (gl_view_object_get_type ())
48 #define GL_VIEW_OBJECT(obj)              (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_VIEW_OBJECT, glViewObject))
49 #define GL_VIEW_OBJECT_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_VIEW_OBJECT, glViewObjectClass))
50 #define GL_IS_VIEW_OBJECT(obj)           (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_VIEW_OBJECT))
51 #define GL_IS_VIEW_OBJECT_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_VIEW_OBJECT))
52 #define GL_VIEW_OBJECT_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GL_TYPE_VIEW_OBJECT, glViewObjectClass))
53
54 typedef struct _glViewObject          glViewObject;
55 typedef struct _glViewObjectClass     glViewObjectClass;
56
57 typedef struct _glViewObjectPrivate   glViewObjectPrivate;
58
59
60 #include "view.h"
61
62 #include "cairo.h"
63
64 struct _glViewObject {
65         GObject               parent_object;
66
67         glViewObjectPrivate  *priv;
68 };
69
70 struct _glViewObjectClass {
71         GObjectClass          parent_class;
72
73         /*
74          * Methods
75          */
76
77         GtkWidget * (*construct_editor) (glViewObject *view_object);
78
79         gboolean    (*object_at)        (glViewObject *view_object,
80                                          cairo_t      *cr,
81                                          gdouble       x_device,
82                                          gdouble       y_device);
83 };
84
85
86
87
88 G_BEGIN_DECLS
89
90 GType              gl_view_object_get_type          (void) G_GNUC_CONST;
91
92 GObject           *gl_view_object_new               (void);
93
94
95 void               gl_view_object_set_view          (glViewObject             *view_object,
96                                                      glView                   *view);
97
98 void               gl_view_object_set_object        (glViewObject             *view_object,
99                                                      glLabelObject            *object,
100                                                      glViewObjectHandlesStyle  style);
101
102 gboolean           gl_view_object_at                (glViewObject             *view_object,
103                                                      cairo_t                  *cr,
104                                                      gdouble                   x,
105                                                      gdouble                   y);
106
107 void               gl_view_object_draw_handles      (glViewObject             *view_object,
108                                                      cairo_t                  *cr);
109
110 glViewObjectHandle gl_view_object_handle_at         (glViewObject             *view_object,
111                                                      cairo_t                  *cr,
112                                                      gdouble                   x,
113                                                      gdouble                   y);
114
115 glView            *gl_view_object_get_view          (glViewObject             *view_object);
116
117 glLabelObject     *gl_view_object_get_object        (glViewObject             *view_object);
118
119 GtkWidget         *gl_view_object_get_editor        (glViewObject             *view_object);
120
121 void               gl_view_object_select            (glViewObject             *view_object);
122
123 void               gl_view_object_resize_event      (glViewObject             *view_object,
124                                                      glViewObjectHandle        handle,
125                                                      gboolean                  honor_aspect,
126                                                      cairo_t                  *cr,
127                                                      gdouble                   x,
128                                                      gdouble                   y);
129
130
131 G_END_DECLS
132
133 #endif /* __VIEW_OBJECT_H__ */
134
135
136
137 /*
138  * Local Variables:       -- emacs
139  * mode: C                -- emacs
140  * c-basic-offset: 8      -- emacs
141  * tab-width: 8           -- emacs
142  * indent-tabs-mode: nil  -- emacs
143  * End:                   -- emacs
144  */