Code

Fixed unintialized variables and minor misc warnings
[inkscape.git] / src / sp-filter-primitive.cpp
1 #define __SP_FILTER_PRIMITIVE_CPP__\r
2 \r
3 /** \file\r
4  * Superclass for all the filter primitives\r
5  *\r
6  */\r
7 /*\r
8  * Authors:\r
9  *   Kees Cook <kees@outflux.net>\r
10  *\r
11  * Copyright (C) 2004 Kees Cook\r
12  *\r
13  * Released under GNU GPL, read the file 'COPYING' for more information\r
14  */\r
15 \r
16 #ifdef HAVE_CONFIG_H\r
17 # include "config.h"\r
18 #endif\r
19 \r
20 #include "attributes.h"\r
21 #include "sp-filter-primitive.h"\r
22 #include "xml/repr.h"\r
23 #include "sp-filter.h"\r
24 \r
25 /* FilterPrimitive base class */\r
26 \r
27 static void sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass);\r
28 static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive);\r
29 \r
30 static void sp_filter_primitive_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr);\r
31 static void sp_filter_primitive_release(SPObject *object);\r
32 static void sp_filter_primitive_set(SPObject *object, unsigned int key, gchar const *value);\r
33 static void sp_filter_primitive_update(SPObject *object, SPCtx *ctx, guint flags);\r
34 static Inkscape::XML::Node *sp_filter_primitive_write(SPObject *object, Inkscape::XML::Node *repr, guint flags);\r
35 \r
36 static SPObjectClass *filter_primitive_parent_class;\r
37 \r
38 GType\r
39 sp_filter_primitive_get_type()\r
40 {\r
41     static GType filter_primitive_type = 0;\r
42 \r
43     if (!filter_primitive_type) {\r
44         GTypeInfo filter_primitive_info = {\r
45             sizeof(SPFilterPrimitiveClass),\r
46             NULL, NULL,\r
47             (GClassInitFunc) sp_filter_primitive_class_init,\r
48             NULL, NULL,\r
49             sizeof(SPFilterPrimitive),\r
50             16,\r
51             (GInstanceInitFunc) sp_filter_primitive_init,\r
52             NULL,    /* value_table */\r
53         };\r
54         filter_primitive_type = g_type_register_static(SP_TYPE_OBJECT, "SPFilterPrimitive", &filter_primitive_info, (GTypeFlags)0);\r
55     }\r
56     return filter_primitive_type;\r
57 }\r
58 \r
59 static void\r
60 sp_filter_primitive_class_init(SPFilterPrimitiveClass *klass)\r
61 {\r
62     //GObjectClass *gobject_class = (GObjectClass *)klass;\r
63     SPObjectClass *sp_object_class = (SPObjectClass *)klass;\r
64 \r
65     filter_primitive_parent_class = (SPObjectClass*)g_type_class_peek_parent(klass);\r
66 \r
67     sp_object_class->build = sp_filter_primitive_build;\r
68     sp_object_class->release = sp_filter_primitive_release;\r
69     sp_object_class->write = sp_filter_primitive_write;\r
70     sp_object_class->set = sp_filter_primitive_set;\r
71     sp_object_class->update = sp_filter_primitive_update;\r
72 }\r
73 \r
74 static void\r
75 sp_filter_primitive_init(SPFilterPrimitive *filter_primitive)\r
76 {\r
77 }\r
78 \r
79 /**\r
80  * Reads the Inkscape::XML::Node, and initializes SPFilterPrimitive variables.  For this to get called,\r
81  * our name must be associated with a repr via "sp_object_type_register".  Best done through\r
82  * sp-object-repr.cpp's repr_name_entries array.\r
83  */\r
84 static void\r
85 sp_filter_primitive_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr)\r
86 {\r
87     if (((SPObjectClass *) filter_primitive_parent_class)->build) {\r
88         ((SPObjectClass *) filter_primitive_parent_class)->build(object, document, repr);\r
89     }\r
90 \r
91     if (object->parent)\r
92         add_primitive((SPFilter*)object->parent, (SPFilterPrimitive*)object);\r
93 }\r
94 \r
95 /**\r
96  * Drops any allocated memory.\r
97  */\r
98 static void\r
99 sp_filter_primitive_release(SPObject *object)\r
100 {\r
101     /* deal with our children and our selves here */\r
102     if (((SPObjectClass *) filter_primitive_parent_class)->release)\r
103         ((SPObjectClass *) filter_primitive_parent_class)->release(object);\r
104 }\r
105 \r
106 /**\r
107  * Sets a specific value in the SPFilterPrimitive.\r
108  */\r
109 static void\r
110 sp_filter_primitive_set(SPObject *object, unsigned int key, gchar const *value)\r
111 {\r
112     SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object);\r
113     (void)filter_primitive;\r
114 \r
115     /* See if any parents need this value. */\r
116     if (((SPObjectClass *) filter_primitive_parent_class)->set) {\r
117         ((SPObjectClass *) filter_primitive_parent_class)->set(object, key, value);\r
118     }\r
119 }\r
120 \r
121 /**\r
122  * Receives update notifications.\r
123  */\r
124 static void\r
125 sp_filter_primitive_update(SPObject *object, SPCtx *ctx, guint flags)\r
126 {\r
127     //SPFilterPrimitive *filter_primitive = SP_FILTER_PRIMITIVE(object);\r
128 \r
129     if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |\r
130                  SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {\r
131 \r
132         /* do something to trigger redisplay, updates? */\r
133     }\r
134 \r
135     if (((SPObjectClass *) filter_primitive_parent_class)->update) {\r
136         ((SPObjectClass *) filter_primitive_parent_class)->update(object, ctx, flags);\r
137     }\r
138 }\r
139 \r
140 /**\r
141  * Writes its settings to an incoming repr object, if any.\r
142  */\r
143 static Inkscape::XML::Node *\r
144 sp_filter_primitive_write(SPObject *object, Inkscape::XML::Node *repr, guint flags)\r
145 {\r
146     //SPFilterPrimitive *filterPrimitive = SP_FILTER_PRIMITIVE(object);\r
147 \r
148     // Inkscape-only object, not copied during an "plain SVG" dump:\r
149     if (flags & SP_OBJECT_WRITE_EXT) {\r
150         if (repr) {\r
151             // is this sane?\r
152             //repr->mergeFrom(SP_OBJECT_REPR(object), "id");\r
153         } else {\r
154             repr = SP_OBJECT_REPR(object)->duplicate();\r
155         }\r
156     }\r
157 \r
158     if (((SPObjectClass *) filter_primitive_parent_class)->write) {\r
159         ((SPObjectClass *) filter_primitive_parent_class)->write(object, repr, flags);\r
160     }\r
161 \r
162     return repr;\r
163 }\r
164 \r
165 \r
166 /*\r
167   Local Variables:\r
168   mode:c++\r
169   c-file-style:"stroustrup"\r
170   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))\r
171   indent-tabs-mode:nil\r
172   fill-column:99\r
173   End:\r
174 */\r
175 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :\r