diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2013-01-23 12:22:14 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2013-01-23 12:22:14 +0000 |
| commit | 4569747878f930a0992a2b089460f3f8cdcb39c5 (patch) | |
| tree | f6de8c74dd1adc256f86a288cee479eaaca7710f /src | |
| parent | minor cppcheck warning (diff) | |
| download | inkscape-4569747878f930a0992a2b089460f3f8cdcb39c5.tar.gz inkscape-4569747878f930a0992a2b089460f3f8cdcb39c5.zip | |
Clean up more GObject type definitions
(bzr r12055)
Diffstat (limited to 'src')
| -rw-r--r-- | src/box3d.cpp | 51 | ||||
| -rw-r--r-- | src/flood-context.cpp | 40 | ||||
| -rw-r--r-- | src/sp-anchor.cpp | 46 | ||||
| -rw-r--r-- | src/sp-ellipse.cpp | 164 | ||||
| -rw-r--r-- | src/sp-ellipse.h | 4 | ||||
| -rw-r--r-- | src/sp-font-face.cpp | 60 | ||||
| -rw-r--r-- | src/sp-font-face.h | 4 | ||||
| -rw-r--r-- | src/sp-font.cpp | 60 | ||||
| -rw-r--r-- | src/sp-gradient.cpp | 250 | ||||
| -rw-r--r-- | src/sp-image.cpp | 58 | ||||
| -rw-r--r-- | src/sp-item.cpp | 111 | ||||
| -rw-r--r-- | src/sp-item.h | 23 | ||||
| -rw-r--r-- | src/sp-line.cpp | 103 | ||||
| -rw-r--r-- | src/sp-line.h | 21 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 51 | ||||
| -rw-r--r-- | src/sp-namedview.h | 4 | ||||
| -rw-r--r-- | src/sp-polygon.cpp | 42 | ||||
| -rw-r--r-- | src/sp-polyline.cpp | 71 | ||||
| -rw-r--r-- | src/sp-polyline.h | 18 | ||||
| -rw-r--r-- | src/sp-script.cpp | 41 | ||||
| -rw-r--r-- | src/sp-shape.cpp | 138 | ||||
| -rw-r--r-- | src/sp-shape.h | 27 | ||||
| -rw-r--r-- | src/sp-use.cpp | 52 | ||||
| -rw-r--r-- | src/spiral-context.cpp | 40 | ||||
| -rw-r--r-- | src/spray-context.cpp | 36 |
25 files changed, 421 insertions, 1094 deletions
diff --git a/src/box3d.cpp b/src/box3d.cpp index 0cb139458..ed0f717d4 100644 --- a/src/box3d.cpp +++ b/src/box3d.cpp @@ -39,9 +39,6 @@ #include "desktop-handles.h" #include "macros.h" -static void box3d_class_init(SPBox3DClass *klass); -static void box3d_init(SPBox3D *box3d); - static void box3d_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void box3d_release(SPObject *object); static void box3d_set(SPObject *object, unsigned int key, const gchar *value); @@ -54,41 +51,15 @@ static void box3d_convert_to_guides(SPItem *item); static void box3d_ref_changed(SPObject *old_ref, SPObject *ref, SPBox3D *box); -static SPGroupClass *parent_class; - static gint counter = 0; -GType -box3d_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPBox3DClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) box3d_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPBox3D), - 16, /* n_preallocs */ - (GInstanceInitFunc) box3d_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GROUP, "SPBox3D", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPBox3D, box3d, SP_TYPE_GROUP); static void box3d_class_init(SPBox3DClass *klass) { SPObjectClass *sp_object_class = SP_OBJECT_CLASS(klass); SPItemClass *item_class = SP_ITEM_CLASS(klass); - parent_class = SP_GROUP_CLASS(g_type_class_ref(SP_TYPE_GROUP)); - sp_object_class->build = box3d_build; sp_object_class->release = box3d_release; sp_object_class->set = box3d_set; @@ -109,8 +80,8 @@ box3d_init(SPBox3D *box) static void box3d_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if ((SP_OBJECT_CLASS(parent_class))->build) { - (SP_OBJECT_CLASS(parent_class))->build(object, document, repr); + if ((SP_OBJECT_CLASS(box3d_parent_class))->build) { + (SP_OBJECT_CLASS(box3d_parent_class))->build(object, document, repr); } SPBox3D *box = SP_BOX3D (object); @@ -172,8 +143,8 @@ box3d_release(SPObject *object) */ } - if ((SP_OBJECT_CLASS(parent_class))->release) - (SP_OBJECT_CLASS(parent_class))->release(object); + if ((SP_OBJECT_CLASS(box3d_parent_class))->release) + (SP_OBJECT_CLASS(box3d_parent_class))->release(object); } static void @@ -224,8 +195,8 @@ box3d_set(SPObject *object, unsigned int key, const gchar *value) } break; default: - if ((SP_OBJECT_CLASS(parent_class))->set) { - (SP_OBJECT_CLASS(parent_class))->set(object, key, value); + if ((SP_OBJECT_CLASS(box3d_parent_class))->set) { + (SP_OBJECT_CLASS(box3d_parent_class))->set(object, key, value); } break; } @@ -259,8 +230,8 @@ box3d_update(SPObject *object, SPCtx *ctx, guint flags) } // Invoke parent method - if ((SP_OBJECT_CLASS(parent_class))->update) - (SP_OBJECT_CLASS(parent_class))->update(object, ctx, flags); + if ((SP_OBJECT_CLASS(box3d_parent_class))->update) + (SP_OBJECT_CLASS(box3d_parent_class))->update(object, ctx, flags); } @@ -306,8 +277,8 @@ static Inkscape::XML::Node * box3d_write(SPObject *object, Inkscape::XML::Docume box->save_corner7 = box->orig_corner7; } - if ((SP_OBJECT_CLASS(parent_class))->write) { - (SP_OBJECT_CLASS(parent_class))->write(object, xml_doc, repr, flags); + if ((SP_OBJECT_CLASS(box3d_parent_class))->write) { + (SP_OBJECT_CLASS(box3d_parent_class))->write(object, xml_doc, repr, flags); } return repr; diff --git a/src/flood-context.cpp b/src/flood-context.cpp index 3c656527e..a62be624c 100644 --- a/src/flood-context.cpp +++ b/src/flood-context.cpp @@ -75,8 +75,6 @@ using Inkscape::Display::ExtractARGB32; using Inkscape::Display::ExtractRGB32; using Inkscape::Display::AssembleARGB32; -static void sp_flood_context_class_init(SPFloodContextClass *klass); -static void sp_flood_context_init(SPFloodContext *flood_context); static void sp_flood_context_dispose(GObject *object); static void sp_flood_context_setup(SPEventContext *ec); @@ -86,35 +84,13 @@ static gint sp_flood_context_item_handler(SPEventContext *event_context, SPItem static void sp_flood_finish(SPFloodContext *rc); -static SPEventContextClass *parent_class; - - -GType sp_flood_context_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPFloodContextClass), - NULL, NULL, - (GClassInitFunc) sp_flood_context_class_init, - NULL, NULL, - sizeof(SPFloodContext), - 4, - (GInstanceInitFunc) sp_flood_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPFloodContext", &info, (GTypeFlags) 0); - } - return type; -} +G_DEFINE_TYPE(SPFloodContext, sp_flood_context, SP_TYPE_EVENT_CONTEXT); static void sp_flood_context_class_init(SPFloodContextClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; SPEventContextClass *event_context_class = (SPEventContextClass *) klass; - parent_class = (SPEventContextClass *) g_type_class_peek_parent(klass); - object_class->dispose = sp_flood_context_dispose; event_context_class->setup = sp_flood_context_setup; @@ -160,7 +136,7 @@ static void sp_flood_context_dispose(GObject *object) delete rc->_message_context; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_flood_context_parent_class)->dispose(object); } /** @@ -181,8 +157,8 @@ static void sp_flood_context_setup(SPEventContext *ec) { SPFloodContext *rc = SP_FLOOD_CONTEXT(ec); - if (((SPEventContextClass *) parent_class)->setup) { - ((SPEventContextClass *) parent_class)->setup(ec); + if (((SPEventContextClass *) sp_flood_context_parent_class)->setup) { + ((SPEventContextClass *) sp_flood_context_parent_class)->setup(ec); } ec->shape_editor = new ShapeEditor(ec->desktop); @@ -1166,8 +1142,8 @@ static gint sp_flood_context_item_handler(SPEventContext *event_context, SPItem break; } - if (((SPEventContextClass *) parent_class)->item_handler) { - ret = ((SPEventContextClass *) parent_class)->item_handler(event_context, item, event); + if (((SPEventContextClass *) sp_flood_context_parent_class)->item_handler) { + ret = ((SPEventContextClass *) sp_flood_context_parent_class)->item_handler(event_context, item, event); } return ret; @@ -1274,8 +1250,8 @@ static gint sp_flood_context_root_handler(SPEventContext *event_context, GdkEven } if (!ret) { - if (((SPEventContextClass *) parent_class)->root_handler) { - ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event); + if (((SPEventContextClass *) sp_flood_context_parent_class)->root_handler) { + ret = ((SPEventContextClass *) sp_flood_context_parent_class)->root_handler(event_context, event); } } diff --git a/src/sp-anchor.cpp b/src/sp-anchor.cpp index 517512eb2..8b52cf400 100644 --- a/src/sp-anchor.cpp +++ b/src/sp-anchor.cpp @@ -25,9 +25,6 @@ #include "ui/view/view.h" #include "document.h" -static void sp_anchor_class_init(SPAnchorClass *ac); -static void sp_anchor_init(SPAnchor *anchor); - static void sp_anchor_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_anchor_release(SPObject *object); static void sp_anchor_set(SPObject *object, unsigned int key, const gchar *value); @@ -36,38 +33,13 @@ static Inkscape::XML::Node *sp_anchor_write(SPObject *object, Inkscape::XML::Doc static gchar *sp_anchor_description(SPItem *item); static gint sp_anchor_event(SPItem *item, SPEvent *event); -static SPGroupClass *parent_class; - -GType sp_anchor_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPAnchorClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_anchor_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPAnchor), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_anchor_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GROUP, "SPAnchor", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPAnchor, sp_anchor, SP_TYPE_GROUP); static void sp_anchor_class_init(SPAnchorClass *ac) { SPObjectClass *sp_object_class = (SPObjectClass *) ac; SPItemClass *item_class = (SPItemClass *) ac; - parent_class = (SPGroupClass *) g_type_class_ref(SP_TYPE_GROUP); - sp_object_class->build = sp_anchor_build; sp_object_class->release = sp_anchor_release; sp_object_class->set = sp_anchor_set; @@ -84,8 +56,8 @@ static void sp_anchor_init(SPAnchor *anchor) static void sp_anchor_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (parent_class))->build) { - ((SPObjectClass *) (parent_class))->build(object, document, repr); + if (((SPObjectClass *) (sp_anchor_parent_class))->build) { + ((SPObjectClass *) (sp_anchor_parent_class))->build(object, document, repr); } object->readAttr( "xlink:type" ); @@ -107,8 +79,8 @@ static void sp_anchor_release(SPObject *object) anchor->href = NULL; } - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_anchor_parent_class)->release) { + ((SPObjectClass *) sp_anchor_parent_class)->release(object); } } @@ -132,8 +104,8 @@ static void sp_anchor_set(SPObject *object, unsigned int key, const gchar *value object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); + if (((SPObjectClass *) (sp_anchor_parent_class))->set) { + ((SPObjectClass *) (sp_anchor_parent_class))->set(object, key, value); } break; } @@ -164,8 +136,8 @@ static Inkscape::XML::Node *sp_anchor_write(SPObject *object, Inkscape::XML::Doc COPY_ATTR(repr, object->getRepr(), "target"); } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_anchor_parent_class))->write) { + ((SPObjectClass *) (sp_anchor_parent_class))->write(object, xml_doc, repr, flags); } return repr; diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index 6fe3a599b..8a9793852 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -64,9 +64,6 @@ static double sp_round(double x, double y) } #endif -static void sp_genericellipse_class_init(SPGenericEllipseClass *klass); -static void sp_genericellipse_init(SPGenericEllipse *ellipse); - static void sp_genericellipse_update(SPObject *object, SPCtx *ctx, guint flags); static void sp_genericellipse_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs); @@ -79,29 +76,7 @@ static Inkscape::XML::Node *sp_genericellipse_write(SPObject *object, Inkscape:: static gboolean sp_arc_set_elliptical_path_attribute(SPArc *arc, Inkscape::XML::Node *repr); -static SPShapeClass *ge_parent_class; - -GType -sp_genericellipse_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPGenericEllipseClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_genericellipse_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPGenericEllipse), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_genericellipse_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_SHAPE, "SPGenericEllipse", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPGenericEllipse, sp_genericellipse, SP_TYPE_SHAPE); static void sp_genericellipse_class_init(SPGenericEllipseClass *klass) { @@ -110,8 +85,6 @@ static void sp_genericellipse_class_init(SPGenericEllipseClass *klass) SPLPEItemClass *lpe_item_class = (SPLPEItemClass *) klass; SPShapeClass *shape_class = (SPShapeClass *) klass; - ge_parent_class = (SPShapeClass*) g_type_class_ref(SP_TYPE_SHAPE); - sp_object_class->update = sp_genericellipse_update; sp_object_class->write = sp_genericellipse_write; @@ -154,8 +127,8 @@ sp_genericellipse_update(SPObject *object, SPCtx *ctx, guint flags) static_cast<SPShape *>(object)->setShape(); } - if (((SPObjectClass *) ge_parent_class)->update) - ((SPObjectClass *) ge_parent_class)->update(object, ctx, flags); + if (((SPObjectClass *) sp_genericellipse_parent_class)->update) + ((SPObjectClass *) sp_genericellipse_parent_class)->update(object, ctx, flags); } static void @@ -371,8 +344,8 @@ static Inkscape::XML::Node *sp_genericellipse_write(SPObject *object, Inkscape:: } sp_genericellipse_set_shape ((SPShape *) ellipse); // evaluate SPCurve - if (((SPObjectClass *) ge_parent_class)->write) { - ((SPObjectClass *) ge_parent_class)->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_genericellipse_parent_class)->write) { + ((SPObjectClass *) sp_genericellipse_parent_class)->write(object, xml_doc, repr, flags); } return repr; @@ -380,45 +353,18 @@ static Inkscape::XML::Node *sp_genericellipse_write(SPObject *object, Inkscape:: /* SVG <ellipse> element */ -static void sp_ellipse_class_init(SPEllipseClass *klass); -static void sp_ellipse_init(SPEllipse *ellipse); - static void sp_ellipse_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static Inkscape::XML::Node *sp_ellipse_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static void sp_ellipse_set(SPObject *object, unsigned int key, gchar const *value); static gchar *sp_ellipse_description(SPItem *item); -static SPGenericEllipseClass *ellipse_parent_class; - -GType -sp_ellipse_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPEllipseClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_ellipse_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPEllipse), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_ellipse_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GENERICELLIPSE, "SPEllipse", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPEllipse, sp_ellipse, SP_TYPE_GENERICELLIPSE); static void sp_ellipse_class_init(SPEllipseClass *klass) { SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPItemClass *item_class = (SPItemClass *) klass; - ellipse_parent_class = (SPGenericEllipseClass*) g_type_class_ref(SP_TYPE_GENERICELLIPSE); - sp_object_class->build = sp_ellipse_build; sp_object_class->write = sp_ellipse_write; sp_object_class->set = sp_ellipse_set; @@ -435,8 +381,8 @@ sp_ellipse_init(SPEllipse */*ellipse*/) static void sp_ellipse_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) ellipse_parent_class)->build) - (* ((SPObjectClass *) ellipse_parent_class)->build) (object, document, repr); + if (((SPObjectClass *) sp_ellipse_parent_class)->build) + (* ((SPObjectClass *) sp_ellipse_parent_class)->build) (object, document, repr); object->readAttr( "cx" ); object->readAttr( "cy" ); @@ -460,8 +406,8 @@ sp_ellipse_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::X sp_repr_set_svg_double(repr, "rx", ellipse->rx.computed); sp_repr_set_svg_double(repr, "ry", ellipse->ry.computed); - if (((SPObjectClass *) ellipse_parent_class)->write) - (* ((SPObjectClass *) ellipse_parent_class)->write) (object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_ellipse_parent_class)->write) + (* ((SPObjectClass *) sp_ellipse_parent_class)->write) (object, xml_doc, repr, flags); return repr; } @@ -495,8 +441,8 @@ sp_ellipse_set(SPObject *object, unsigned int key, gchar const *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) ellipse_parent_class)->set) - ((SPObjectClass *) ellipse_parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_ellipse_parent_class)->set) + ((SPObjectClass *) sp_ellipse_parent_class)->set(object, key, value); break; } } @@ -527,37 +473,12 @@ sp_ellipse_position_set(SPEllipse *ellipse, gdouble x, gdouble y, gdouble rx, gd /* SVG <circle> element */ -static void sp_circle_class_init(SPCircleClass *klass); -static void sp_circle_init(SPCircle *circle); - static void sp_circle_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static Inkscape::XML::Node *sp_circle_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static void sp_circle_set(SPObject *object, unsigned int key, gchar const *value); static gchar *sp_circle_description(SPItem *item); -static SPGenericEllipseClass *circle_parent_class; - -GType -sp_circle_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPCircleClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_circle_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPCircle), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_circle_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GENERICELLIPSE, "SPCircle", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPCircle, sp_circle, SP_TYPE_GENERICELLIPSE); static void sp_circle_class_init(SPCircleClass *klass) @@ -565,8 +486,6 @@ sp_circle_class_init(SPCircleClass *klass) SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPItemClass *item_class = (SPItemClass *) klass; - circle_parent_class = (SPGenericEllipseClass*) g_type_class_ref(SP_TYPE_GENERICELLIPSE); - sp_object_class->build = sp_circle_build; sp_object_class->write = sp_circle_write; sp_object_class->set = sp_circle_set; @@ -583,8 +502,8 @@ sp_circle_init(SPCircle */*circle*/) static void sp_circle_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) circle_parent_class)->build) - (* ((SPObjectClass *) circle_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_circle_parent_class)->build) + (* ((SPObjectClass *) sp_circle_parent_class)->build)(object, document, repr); object->readAttr( "cx" ); object->readAttr( "cy" ); @@ -606,8 +525,8 @@ sp_circle_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XM sp_repr_set_svg_double(repr, "cy", ellipse->cy.computed); sp_repr_set_svg_double(repr, "r", ellipse->rx.computed); - if (((SPObjectClass *) circle_parent_class)->write) - ((SPObjectClass *) circle_parent_class)->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_circle_parent_class)->write) + ((SPObjectClass *) sp_circle_parent_class)->write(object, xml_doc, repr, flags); return repr; } @@ -636,8 +555,8 @@ sp_circle_set(SPObject *object, unsigned int key, gchar const *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) circle_parent_class)->set) - ((SPObjectClass *) circle_parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_circle_parent_class)->set) + ((SPObjectClass *) sp_circle_parent_class)->set(object, key, value); break; } } @@ -649,9 +568,6 @@ static gchar *sp_circle_description(SPItem */*item*/) /* <path sodipodi:type="arc"> element */ -static void sp_arc_class_init(SPArcClass *klass); -static void sp_arc_init(SPArc *arc); - static void sp_arc_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static Inkscape::XML::Node *sp_arc_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static void sp_arc_set(SPObject *object, unsigned int key, gchar const *value); @@ -659,29 +575,7 @@ static void sp_arc_modified(SPObject *object, guint flags); static gchar *sp_arc_description(SPItem *item); -static SPGenericEllipseClass *arc_parent_class; - -GType -sp_arc_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPArcClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_arc_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPArc), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_arc_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GENERICELLIPSE, "SPArc", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPArc, sp_arc, SP_TYPE_GENERICELLIPSE); static void sp_arc_class_init(SPArcClass *klass) @@ -689,8 +583,6 @@ sp_arc_class_init(SPArcClass *klass) SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPItemClass *item_class = (SPItemClass *) klass; - arc_parent_class = (SPGenericEllipseClass*) g_type_class_ref(SP_TYPE_GENERICELLIPSE); - sp_object_class->build = sp_arc_build; sp_object_class->write = sp_arc_write; sp_object_class->set = sp_arc_set; @@ -708,8 +600,8 @@ sp_arc_init(SPArc */*arc*/) static void sp_arc_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) arc_parent_class)->build) - (* ((SPObjectClass *) arc_parent_class)->build) (object, document, repr); + if (((SPObjectClass *) sp_arc_parent_class)->build) + (* ((SPObjectClass *) sp_arc_parent_class)->build) (object, document, repr); object->readAttr( "sodipodi:cx" ); object->readAttr( "sodipodi:cy" ); @@ -797,8 +689,8 @@ sp_arc_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML:: // write d= sp_arc_set_elliptical_path_attribute(arc, repr); - if (((SPObjectClass *) arc_parent_class)->write) - ((SPObjectClass *) arc_parent_class)->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_arc_parent_class)->write) + ((SPObjectClass *) sp_arc_parent_class)->write(object, xml_doc, repr, flags); return repr; } @@ -850,8 +742,8 @@ sp_arc_set(SPObject *object, unsigned int key, gchar const *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) arc_parent_class)->set) - ((SPObjectClass *) arc_parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_arc_parent_class)->set) + ((SPObjectClass *) sp_arc_parent_class)->set(object, key, value); break; } } @@ -863,8 +755,8 @@ sp_arc_modified(SPObject *object, guint flags) ((SPShape *) object)->setShape(); } - if (((SPObjectClass *) arc_parent_class)->modified) - ((SPObjectClass *) arc_parent_class)->modified(object, flags); + if (((SPObjectClass *) sp_arc_parent_class)->modified) + ((SPObjectClass *) sp_arc_parent_class)->modified(object, flags); } static gchar *sp_arc_description(SPItem *item) diff --git a/src/sp-ellipse.h b/src/sp-ellipse.h index 91354ab60..5074be354 100644 --- a/src/sp-ellipse.h +++ b/src/sp-ellipse.h @@ -17,6 +17,8 @@ #include "svg/svg-length.h" #include "sp-shape.h" +G_BEGIN_DECLS + /* Common parent class */ #define SP_TYPE_GENERICELLIPSE (sp_genericellipse_get_type ()) @@ -102,4 +104,6 @@ GType sp_arc_get_type (void); void sp_arc_position_set (SPArc * arc, gdouble x, gdouble y, gdouble rx, gdouble ry); Geom::Point sp_arc_get_xy (SPArc *ge, gdouble arg); +G_END_DECLS + #endif diff --git a/src/sp-font-face.cpp b/src/sp-font-face.cpp index e9faabdc6..4288a5d64 100644 --- a/src/sp-font-face.cpp +++ b/src/sp-font-face.cpp @@ -261,9 +261,6 @@ static std::vector<FontFaceStretchType> sp_read_fontFaceStretchType(gchar const return v; } -static void sp_fontface_class_init(SPFontFaceClass *fc); -static void sp_fontface_init(SPFontFace *font); - static void sp_fontface_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_fontface_release(SPObject *object); static void sp_fontface_set(SPObject *object, unsigned int key, const gchar *value); @@ -273,37 +270,12 @@ static void sp_fontface_child_added(SPObject *object, Inkscape::XML::Node *child static void sp_fontface_remove_child(SPObject *object, Inkscape::XML::Node *child); static void sp_fontface_update(SPObject *object, SPCtx *ctx, guint flags); -static SPObjectClass *parent_class; - -GType sp_fontface_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPFontFaceClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_fontface_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPFontFace), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_fontface_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPFontFace", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPFontFace, sp_fontface, SP_TYPE_OBJECT); static void sp_fontface_class_init(SPFontFaceClass *fc) { SPObjectClass *sp_object_class = (SPObjectClass *) fc; - parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_fontface_build; sp_object_class->release = sp_fontface_release; sp_object_class->set = sp_fontface_set; @@ -369,8 +341,8 @@ static void sp_fontface_init(SPFontFace *face) static void sp_fontface_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (parent_class))->build) { - ((SPObjectClass *) (parent_class))->build(object, document, repr); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->build) { + (SP_OBJECT_CLASS(sp_fontface_parent_class))->build(object, document, repr); } object->readAttr( "font-family" ); @@ -420,8 +392,8 @@ sp_fontface_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape:: { SPFontFace *f = SP_FONTFACE(object); - if (((SPObjectClass *) parent_class)->child_added) - (* ((SPObjectClass *) parent_class)->child_added)(object, child, ref); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->child_added) + (* (SP_OBJECT_CLASS(sp_fontface_parent_class))->child_added)(object, child, ref); sp_fontface_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -436,8 +408,8 @@ sp_fontface_remove_child(SPObject *object, Inkscape::XML::Node *child) { SPFontFace *f = SP_FONTFACE(object); - if (((SPObjectClass *) parent_class)->remove_child) - (* ((SPObjectClass *) parent_class)->remove_child)(object, child); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->remove_child) + (* (SP_OBJECT_CLASS(sp_fontface_parent_class))->remove_child)(object, child); sp_fontface_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -445,10 +417,8 @@ sp_fontface_remove_child(SPObject *object, Inkscape::XML::Node *child) static void sp_fontface_release(SPObject *object) { - //SPFontFace *font = SP_FONTFACE(object); - - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->release) { + (SP_OBJECT_CLASS(sp_fontface_parent_class))->release(object); } } @@ -736,8 +706,8 @@ static void sp_fontface_set(SPObject *object, unsigned int key, const gchar *val break; } default: - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->set) { + (SP_OBJECT_CLASS(sp_fontface_parent_class))->set(object, key, value); } break; } @@ -785,8 +755,8 @@ sp_fontface_update(SPObject *object, SPCtx *ctx, guint flags) object->readAttr( "overline-thickness" ); } - if (((SPObjectClass *) parent_class)->update) { - ((SPObjectClass *) parent_class)->update(object, ctx, flags); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->update) { + (SP_OBJECT_CLASS(sp_fontface_parent_class))->update(object, ctx, flags); } } @@ -873,8 +843,8 @@ static Inkscape::XML::Node *sp_fontface_write(SPObject *object, Inkscape::XML::D COPY_ATTR(repr, object->getRepr(), "overline-thickness"); } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); + if ((SP_OBJECT_CLASS(sp_fontface_parent_class))->write) { + (SP_OBJECT_CLASS(sp_fontface_parent_class))->write(object, xml_doc, repr, flags); } return repr; diff --git a/src/sp-font-face.h b/src/sp-font-face.h index e492ba091..691c1f883 100644 --- a/src/sp-font-face.h +++ b/src/sp-font-face.h @@ -23,6 +23,8 @@ #include "sp-object.h" +G_BEGIN_DECLS + #define SP_TYPE_FONTFACE (sp_fontface_get_type ()) #define SP_FONTFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_FONTFACE, SPFontFace)) #define SP_FONTFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_FONTFACE, SPFontFaceClass)) @@ -115,5 +117,7 @@ struct SPFontFaceClass { GType sp_fontface_get_type (void); +G_END_DECLS + #endif //#ifndef __SP_FONTFACE_H__ #endif //#ifdef ENABLE_SVG_FONTS diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 852e6ba5d..6ebbd5218 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -25,9 +25,6 @@ #include "display/nr-svgfonts.h" -static void sp_font_class_init(SPFontClass *fc); -static void sp_font_init(SPFont *font); - static void sp_font_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_font_release(SPObject *object); static void sp_font_set(SPObject *object, unsigned int key, const gchar *value); @@ -37,39 +34,12 @@ static void sp_font_child_added(SPObject *object, Inkscape::XML::Node *child, In static void sp_font_remove_child(SPObject *object, Inkscape::XML::Node *child); static void sp_font_update(SPObject *object, SPCtx *ctx, guint flags); -// static gchar *sp_font_description(SPItem *item); - -static SPObjectClass *parent_class; - -GType sp_font_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPFontClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_font_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPFont), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_font_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPFont", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPFont, sp_font, SP_TYPE_OBJECT); static void sp_font_class_init(SPFontClass *fc) { SPObjectClass *sp_object_class = (SPObjectClass *) fc; - parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_font_build; sp_object_class->release = sp_font_release; sp_object_class->set = sp_font_set; @@ -98,8 +68,8 @@ static void sp_font_init(SPFont *font) static void sp_font_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (parent_class))->build) { - ((SPObjectClass *) (parent_class))->build(object, document, repr); + if (((SPObjectClass *) (sp_font_parent_class))->build) { + ((SPObjectClass *) (sp_font_parent_class))->build(object, document, repr); } object->readAttr( "horiz-origin-x" ); @@ -125,8 +95,8 @@ sp_font_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML: { SPFont *f = SP_FONT(object); - if (((SPObjectClass *) parent_class)->child_added) - (* ((SPObjectClass *) parent_class)->child_added)(object, child, ref); + if (((SPObjectClass *) sp_font_parent_class)->child_added) + (* ((SPObjectClass *) sp_font_parent_class)->child_added)(object, child, ref); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -141,8 +111,8 @@ sp_font_remove_child(SPObject *object, Inkscape::XML::Node *child) { SPFont *f = SP_FONT(object); - if (((SPObjectClass *) parent_class)->remove_child) - (* ((SPObjectClass *) parent_class)->remove_child)(object, child); + if (((SPObjectClass *) sp_font_parent_class)->remove_child) + (* ((SPObjectClass *) sp_font_parent_class)->remove_child)(object, child); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -153,8 +123,8 @@ static void sp_font_release(SPObject *object) //SPFont *font = SP_FONT(object); object->document->removeResource("font", object); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_font_parent_class)->release) { + ((SPObjectClass *) sp_font_parent_class)->release(object); } } @@ -219,8 +189,8 @@ static void sp_font_set(SPObject *object, unsigned int key, const gchar *value) break; } default: - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); + if (((SPObjectClass *) (sp_font_parent_class))->set) { + ((SPObjectClass *) (sp_font_parent_class))->set(object, key, value); } break; } @@ -241,8 +211,8 @@ sp_font_update(SPObject *object, SPCtx *ctx, guint flags) object->readAttr( "vert-adv-y" ); } - if (((SPObjectClass *) parent_class)->update) { - ((SPObjectClass *) parent_class)->update(object, ctx, flags); + if (((SPObjectClass *) sp_font_parent_class)->update) { + ((SPObjectClass *) sp_font_parent_class)->update(object, ctx, flags); } } @@ -274,8 +244,8 @@ static Inkscape::XML::Node *sp_font_write(SPObject *object, Inkscape::XML::Docum COPY_ATTR(repr, object->getRepr(), "vert-adv-y"); } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_font_parent_class))->write) { + ((SPObjectClass *) (sp_font_parent_class))->write(object, xml_doc, repr, flags); } return repr; diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index d7add805d..1f2cfdd41 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -61,36 +61,24 @@ //#define NCOLORS NR_GRADIENT_VECTOR_LENGTH // SPStop -static void sp_stop_class_init(SPStopClass *klass); -static void sp_stop_init(SPStop *stop); - static void sp_stop_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_stop_set(SPObject *object, unsigned key, gchar const *value); static Inkscape::XML::Node *sp_stop_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *stop_parent_class; +G_DEFINE_TYPE(SPStop, sp_stop, SP_TYPE_OBJECT); // SPMeshRow -static void sp_meshrow_class_init(SPMeshRowClass *klass); -static void sp_meshrow_init(SPMeshRow *meshrow); - static void sp_meshrow_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_meshrow_set(SPObject *object, unsigned key, gchar const *value); static Inkscape::XML::Node *sp_meshrow_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *meshrow_parent_class; +G_DEFINE_TYPE(SPMeshRow, sp_meshrow, SP_TYPE_OBJECT); // SPMeshPatch -static void sp_meshpatch_class_init(SPMeshPatchClass *klass); -static void sp_meshpatch_init(SPMeshPatch *meshpatch); - static void sp_meshpatch_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_meshpatch_set(SPObject *object, unsigned key, gchar const *value); static Inkscape::XML::Node *sp_meshpatch_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - -static SPObjectClass *meshpatch_parent_class; +G_DEFINE_TYPE(SPMeshPatch, sp_meshpatch, SP_TYPE_OBJECT); class SPGradientImpl @@ -117,37 +105,12 @@ class SPGradientImpl }; /** - * Registers SPStop class and returns its type. - */ -GType -sp_stop_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPStopClass), - NULL, NULL, - (GClassInitFunc) sp_stop_class_init, - NULL, NULL, - sizeof(SPStop), - 16, - (GInstanceInitFunc) sp_stop_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPStop", &info, (GTypeFlags)0); - } - return type; -} - -/** * Callback to initialize SPStop vtable. */ static void sp_stop_class_init(SPStopClass *klass) { SPObjectClass *sp_object_class = (SPObjectClass *) klass; - stop_parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_stop_build; sp_object_class->set = sp_stop_set; sp_object_class->write = sp_stop_write; @@ -170,8 +133,8 @@ sp_stop_init(SPStop *stop) */ static void sp_stop_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) stop_parent_class)->build) - (* ((SPObjectClass *) stop_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_stop_parent_class)->build) + (* ((SPObjectClass *) sp_stop_parent_class)->build)(object, document, repr); object->readAttr( "offset" ); object->readAttr( "stop-color" ); @@ -256,8 +219,8 @@ sp_stop_set(SPObject *object, unsigned key, gchar const *value) break; } default: { - if (((SPObjectClass *) stop_parent_class)->set) - (* ((SPObjectClass *) stop_parent_class)->set)(object, key, value); + if (((SPObjectClass *) sp_stop_parent_class)->set) + (* ((SPObjectClass *) sp_stop_parent_class)->set)(object, key, value); break; } } @@ -278,8 +241,8 @@ sp_stop_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML: Glib::ustring colorStr = stop->specified_color.toString(); gfloat opacity = stop->opacity; - if (((SPObjectClass *) stop_parent_class)->write) { - (* ((SPObjectClass *) stop_parent_class)->write)(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_stop_parent_class)->write) { + (* ((SPObjectClass *) sp_stop_parent_class)->write)(object, xml_doc, repr, flags); } // Since we do a hackish style setting here (because SPStyle does not support stop-color and @@ -410,37 +373,12 @@ sp_stop_get_rgba32(SPStop const *const stop) */ /** - * Registers SPMeshRow class and returns its type. - */ -GType -sp_meshrow_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPMeshRowClass), - NULL, NULL, - (GClassInitFunc) sp_meshrow_class_init, - NULL, NULL, - sizeof(SPMeshRow), - 16, - (GInstanceInitFunc) sp_meshrow_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPMeshRow", &info, (GTypeFlags)0); - } - return type; -} - -/** * Callback to initialize SPMeshRow vtable. */ static void sp_meshrow_class_init(SPMeshRowClass *klass) { SPObjectClass *sp_object_class = (SPObjectClass *) klass; - meshrow_parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_meshrow_build; sp_object_class->set = sp_meshrow_set; sp_object_class->write = sp_meshrow_write; @@ -459,8 +397,8 @@ static void sp_meshrow_init(SPMeshRow * /*meshrow*/) */ static void sp_meshrow_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) meshrow_parent_class)->build) - (* ((SPObjectClass *) meshrow_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_meshrow_parent_class)->build) + (* ((SPObjectClass *) sp_meshrow_parent_class)->build)(object, document, repr); // No attributes } @@ -485,8 +423,8 @@ sp_meshrow_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::X repr = xml_doc->createElement("svg:meshRow"); } - if (((SPObjectClass *) meshrow_parent_class)->write) { - (* ((SPObjectClass *) meshrow_parent_class)->write)(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_meshrow_parent_class)->write) { + (* ((SPObjectClass *) sp_meshrow_parent_class)->write)(object, xml_doc, repr, flags); } return repr; @@ -497,37 +435,12 @@ sp_meshrow_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::X */ /** - * Registers SPMeshPatch class and returns its type. - */ -GType -sp_meshpatch_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPMeshPatchClass), - NULL, NULL, - (GClassInitFunc) sp_meshpatch_class_init, - NULL, NULL, - sizeof(SPMeshPatch), - 16, - (GInstanceInitFunc) sp_meshpatch_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPMeshPatch", &info, (GTypeFlags)0); - } - return type; -} - -/** * Callback to initialize SPMeshPatch vtable. */ static void sp_meshpatch_class_init(SPMeshPatchClass *klass) { SPObjectClass *sp_object_class = (SPObjectClass *) klass; - meshpatch_parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_meshpatch_build; sp_object_class->set = sp_meshpatch_set; sp_object_class->write = sp_meshpatch_write; @@ -546,8 +459,8 @@ static void sp_meshpatch_init(SPMeshPatch * /*meshpatch*/) */ static void sp_meshpatch_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) meshpatch_parent_class)->build) - (* ((SPObjectClass *) meshpatch_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_meshpatch_parent_class)->build) + (* ((SPObjectClass *) sp_meshpatch_parent_class)->build)(object, document, repr); object->readAttr( "tensor" ); } @@ -586,8 +499,8 @@ sp_meshpatch_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape: repr = xml_doc->createElement("svg:meshPatch"); } - if (((SPObjectClass *) meshpatch_parent_class)->write) { - (* ((SPObjectClass *) meshpatch_parent_class)->write)(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_meshpatch_parent_class)->write) { + (* ((SPObjectClass *) sp_meshpatch_parent_class)->write)(object, xml_doc, repr, flags); } return repr; @@ -1496,9 +1409,6 @@ sp_gradient_set_gs2d_matrix(SPGradient *gr, Geom::Affine const &ctm, * Linear Gradient */ -static void sp_lineargradient_class_init(SPLinearGradientClass *klass); -static void sp_lineargradient_init(SPLinearGradient *lg); - static void sp_lineargradient_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); @@ -1506,31 +1416,7 @@ static void sp_lineargradient_set(SPObject *object, unsigned key, gchar const *v static Inkscape::XML::Node *sp_lineargradient_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static cairo_pattern_t *sp_lineargradient_create_pattern(SPPaintServer *ps, cairo_t *ct, Geom::OptRect const &bbox, double opacity); - -static SPGradientClass *lg_parent_class; - -/** - * Register SPLinearGradient class and return its type. - */ -GType -sp_lineargradient_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPLinearGradientClass), - NULL, NULL, - (GClassInitFunc) sp_lineargradient_class_init, - NULL, NULL, - sizeof(SPLinearGradient), - 16, - (GInstanceInitFunc) sp_lineargradient_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GRADIENT, "SPLinearGradient", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPLinearGradient, sp_lineargradient, SP_TYPE_GRADIENT); /** * SPLinearGradient vtable initialization. @@ -1540,8 +1426,6 @@ static void sp_lineargradient_class_init(SPLinearGradientClass *klass) SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPPaintServerClass *ps_class = (SPPaintServerClass *) klass; - lg_parent_class = (SPGradientClass*)g_type_class_ref(SP_TYPE_GRADIENT); - sp_object_class->build = sp_lineargradient_build; sp_object_class->set = sp_lineargradient_set; sp_object_class->write = sp_lineargradient_write; @@ -1567,8 +1451,8 @@ static void sp_lineargradient_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) lg_parent_class)->build) - (* ((SPObjectClass *) lg_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_lineargradient_parent_class)->build) + (* ((SPObjectClass *) sp_lineargradient_parent_class)->build)(object, document, repr); object->readAttr( "x1" ); object->readAttr( "y1" ); @@ -1602,8 +1486,8 @@ sp_lineargradient_set(SPObject *object, unsigned key, gchar const *value) object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) lg_parent_class)->set) - (* ((SPObjectClass *) lg_parent_class)->set)(object, key, value); + if (((SPObjectClass *) sp_lineargradient_parent_class)->set) + (* ((SPObjectClass *) sp_lineargradient_parent_class)->set)(object, key, value); break; } } @@ -1629,8 +1513,8 @@ sp_lineargradient_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inks if ((flags & SP_OBJECT_WRITE_ALL) || lg->y2._set) sp_repr_set_svg_double(repr, "y2", lg->y2.computed); - if (((SPObjectClass *) lg_parent_class)->write) - (* ((SPObjectClass *) lg_parent_class)->write)(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_lineargradient_parent_class)->write) + (* ((SPObjectClass *) sp_lineargradient_parent_class)->write)(object, xml_doc, repr, flags); return repr; } @@ -1659,9 +1543,6 @@ sp_lineargradient_set_position(SPLinearGradient *lg, * Radial Gradient */ -static void sp_radialgradient_class_init(SPRadialGradientClass *klass); -static void sp_radialgradient_init(SPRadialGradient *rg); - static void sp_radialgradient_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); @@ -1669,31 +1550,7 @@ static void sp_radialgradient_set(SPObject *object, unsigned key, gchar const *v static Inkscape::XML::Node *sp_radialgradient_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static cairo_pattern_t *sp_radialgradient_create_pattern(SPPaintServer *ps, cairo_t *ct, Geom::OptRect const &bbox, double opacity); - -static SPGradientClass *rg_parent_class; - -/** - * Register SPRadialGradient class and return its type. - */ -GType -sp_radialgradient_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPRadialGradientClass), - NULL, NULL, - (GClassInitFunc) sp_radialgradient_class_init, - NULL, NULL, - sizeof(SPRadialGradient), - 16, - (GInstanceInitFunc) sp_radialgradient_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GRADIENT, "SPRadialGradient", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPRadialGradient, sp_radialgradient, SP_TYPE_GRADIENT); /** * SPRadialGradient vtable initialization. @@ -1703,8 +1560,6 @@ static void sp_radialgradient_class_init(SPRadialGradientClass *klass) SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPPaintServerClass *ps_class = (SPPaintServerClass *) klass; - rg_parent_class = (SPGradientClass*)g_type_class_ref(SP_TYPE_GRADIENT); - sp_object_class->build = sp_radialgradient_build; sp_object_class->set = sp_radialgradient_set; sp_object_class->write = sp_radialgradient_write; @@ -1731,8 +1586,8 @@ sp_radialgradient_init(SPRadialGradient *rg) static void sp_radialgradient_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) rg_parent_class)->build) - (* ((SPObjectClass *) rg_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_radialgradient_parent_class)->build) + (* ((SPObjectClass *) sp_radialgradient_parent_class)->build)(object, document, repr); object->readAttr( "cx" ); object->readAttr( "cy" ); @@ -1789,8 +1644,8 @@ sp_radialgradient_set(SPObject *object, unsigned key, gchar const *value) object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) rg_parent_class)->set) - ((SPObjectClass *) rg_parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_radialgradient_parent_class)->set) + ((SPObjectClass *) sp_radialgradient_parent_class)->set(object, key, value); break; } } @@ -1813,8 +1668,8 @@ sp_radialgradient_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inks if ((flags & SP_OBJECT_WRITE_ALL) || rg->fx._set) sp_repr_set_svg_double(repr, "fx", rg->fx.computed); if ((flags & SP_OBJECT_WRITE_ALL) || rg->fy._set) sp_repr_set_svg_double(repr, "fy", rg->fy.computed); - if (((SPObjectClass *) rg_parent_class)->write) - (* ((SPObjectClass *) rg_parent_class)->write)(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_radialgradient_parent_class)->write) + (* ((SPObjectClass *) sp_radialgradient_parent_class)->write)(object, xml_doc, repr, flags); return repr; } @@ -1845,9 +1700,6 @@ sp_radialgradient_set_position(SPRadialGradient *rg, //#define MESH_DEBUG -static void sp_meshgradient_class_init(SPMeshGradientClass *klass); -static void sp_meshgradient_init(SPMeshGradient *mg); - static void sp_meshgradient_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); @@ -1855,31 +1707,7 @@ static void sp_meshgradient_set(SPObject *object, unsigned key, gchar const *val static Inkscape::XML::Node *sp_meshgradient_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static cairo_pattern_t *sp_meshgradient_create_pattern(SPPaintServer *ps, cairo_t *ct, Geom::OptRect const &bbox, double opacity); - -static SPGradientClass *mg_parent_class; - -/** - * Register SPMeshGradient class and return its type. - */ -GType -sp_meshgradient_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPMeshGradientClass), - NULL, NULL, - (GClassInitFunc) sp_meshgradient_class_init, - NULL, NULL, - sizeof(SPMeshGradient), - 16, - (GInstanceInitFunc) sp_meshgradient_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_GRADIENT, "SPMeshGradient", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPMeshGradient, sp_meshgradient, SP_TYPE_GRADIENT); /** * SPMeshGradient vtable initialization. @@ -1892,8 +1720,6 @@ static void sp_meshgradient_class_init(SPMeshGradientClass *klass) SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPPaintServerClass *ps_class = (SPPaintServerClass *) klass; - mg_parent_class = (SPGradientClass*)g_type_class_ref(SP_TYPE_GRADIENT); - sp_object_class->build = sp_meshgradient_build; sp_object_class->set = sp_meshgradient_set; sp_object_class->write = sp_meshgradient_write; @@ -1918,8 +1744,8 @@ sp_meshgradient_init(SPMeshGradient *mg) static void sp_meshgradient_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) mg_parent_class)->build) - (* ((SPObjectClass *) mg_parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_meshgradient_parent_class)->build) + (* ((SPObjectClass *) sp_meshgradient_parent_class)->build)(object, document, repr); // Start coordinate of mesh object->readAttr( "x" ); @@ -1948,8 +1774,8 @@ sp_meshgradient_set(SPObject *object, unsigned key, gchar const *value) object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) mg_parent_class)->set) - ((SPObjectClass *) mg_parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_meshgradient_parent_class)->set) + ((SPObjectClass *) sp_meshgradient_parent_class)->set(object, key, value); break; } } @@ -1973,8 +1799,8 @@ sp_meshgradient_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inksca if ((flags & SP_OBJECT_WRITE_ALL) || mg->x._set) sp_repr_set_svg_double(repr, "x", mg->x.computed); if ((flags & SP_OBJECT_WRITE_ALL) || mg->y._set) sp_repr_set_svg_double(repr, "y", mg->y.computed); - if (((SPObjectClass *) mg_parent_class)->write) - (* ((SPObjectClass *) mg_parent_class)->write)(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_meshgradient_parent_class)->write) + (* ((SPObjectClass *) sp_meshgradient_parent_class)->write)(object, xml_doc, repr, flags); return repr; } diff --git a/src/sp-image.cpp b/src/sp-image.cpp index 7b5d56638..ce8879f70 100644 --- a/src/sp-image.cpp +++ b/src/sp-image.cpp @@ -76,9 +76,6 @@ #define MAGIC_EPSILON_TOO 1e-18 // TODO: also check if it is correct to be using two different epsilon values -static void sp_image_class_init (SPImageClass * klass); -static void sp_image_init (SPImage * image); - static void sp_image_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); static void sp_image_release (SPObject * object); static void sp_image_set (SPObject *object, unsigned int key, const gchar *value); @@ -94,7 +91,6 @@ static Inkscape::DrawingItem *sp_image_show (SPItem *item, Inkscape::Drawing &dr static Geom::Affine sp_image_set_transform (SPItem *item, Geom::Affine const &xform); static void sp_image_set_curve(SPImage *image); - static GdkPixbuf *sp_image_repr_read_image( time_t& modTime, gchar*& pixPath, const gchar *href, const gchar *absref, const gchar *base ); static GdkPixbuf *sp_image_pixbuf_force_rgba (GdkPixbuf * pixbuf); static void sp_image_update_arenaitem (SPImage *img, Inkscape::DrawingImage *ai); @@ -102,9 +98,6 @@ static void sp_image_update_canvas_image (SPImage *image); static GdkPixbuf * sp_image_repr_read_dataURI (const gchar * uri_data); static GdkPixbuf * sp_image_repr_read_b64 (const gchar * uri_data); -static SPItemClass *parent_class; - - extern "C" { void user_read_data( png_structp png_ptr, png_bytep data, png_size_t length ); @@ -519,33 +512,12 @@ GdkPixbuf* pixbuf_new_from_file( const char *filename, GError **error ) } } -GType sp_image_get_type(void) -{ - static GType image_type = 0; - if (!image_type) { - GTypeInfo image_info = { - sizeof (SPImageClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_image_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (SPImage), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_image_init, - NULL, /* value_table */ - }; - image_type = g_type_register_static (SPItem::getType (), "SPImage", &image_info, (GTypeFlags)0); - } - return image_type; -} +G_DEFINE_TYPE(SPImage, sp_image, SP_TYPE_ITEM); static void sp_image_class_init( SPImageClass * klass ) { - SPObjectClass *sp_object_class = reinterpret_cast<SPObjectClass *>(klass); - SPItemClass *item_class = reinterpret_cast<SPItemClass *>(klass); - - parent_class = reinterpret_cast<SPItemClass*>(g_type_class_ref(SPItem::getType())); + SPObjectClass *sp_object_class = SP_OBJECT_CLASS(klass); + SPItemClass *item_class = SP_ITEM_CLASS(klass); sp_object_class->build = sp_image_build; sp_object_class->release = sp_image_release; @@ -586,8 +558,8 @@ static void sp_image_init( SPImage *image ) static void sp_image_build( SPObject *object, SPDocument *document, Inkscape::XML::Node *repr ) { - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build (object, document, repr); + if (((SPObjectClass *) sp_image_parent_class)->build) { + ((SPObjectClass *) sp_image_parent_class)->build (object, document, repr); } object->readAttr( "xlink:href" ); @@ -637,8 +609,8 @@ static void sp_image_release( SPObject *object ) image->curve = image->curve->unref(); } - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release (object); + if (((SPObjectClass *) sp_image_parent_class)->release) { + ((SPObjectClass *) sp_image_parent_class)->release (object); } } @@ -756,8 +728,8 @@ static void sp_image_set( SPObject *object, unsigned int key, const gchar *value break; #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) default: - if (((SPObjectClass *) (parent_class))->set) - ((SPObjectClass *) (parent_class))->set (object, key, value); + if (((SPObjectClass *) (sp_image_parent_class))->set) + ((SPObjectClass *) (sp_image_parent_class))->set (object, key, value); break; } @@ -769,8 +741,8 @@ static void sp_image_update( SPObject *object, SPCtx *ctx, unsigned int flags ) SPImage *image = SP_IMAGE(object); SPDocument *doc = object->document; - if (((SPObjectClass *) (parent_class))->update) { - ((SPObjectClass *) (parent_class))->update (object, ctx, flags); + if (((SPObjectClass *) (sp_image_parent_class))->update) { + ((SPObjectClass *) (sp_image_parent_class))->update (object, ctx, flags); } if (flags & SP_IMAGE_HREF_MODIFIED_FLAG) { @@ -973,8 +945,8 @@ static void sp_image_modified( SPObject *object, unsigned int flags ) { SPImage *image = SP_IMAGE (object); - if (((SPObjectClass *) (parent_class))->modified) { - (* ((SPObjectClass *) (parent_class))->modified) (object, flags); + if (((SPObjectClass *) (sp_image_parent_class))->modified) { + (* ((SPObjectClass *) (sp_image_parent_class))->modified) (object, flags); } if (flags & SP_OBJECT_STYLE_MODIFIED_FLAG) { @@ -1016,8 +988,8 @@ static Inkscape::XML::Node *sp_image_write( SPObject *object, Inkscape::XML::Doc } #endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_image_parent_class))->write) { + ((SPObjectClass *) (sp_image_parent_class))->write (object, xml_doc, repr, flags); } return repr; diff --git a/src/sp-item.cpp b/src/sp-item.cpp index 559ff80ac..19d71ed44 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -75,53 +75,52 @@ #define noSP_ITEM_DEBUG_IDLE -SPObjectClass * SPItemClass::static_parent_class=0; - -/** - * Registers SPItem class and returns its type number. - */ -GType -SPItem::getType(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPItemClass), - NULL, NULL, - (GClassInitFunc) SPItemClass::sp_item_class_init, - NULL, NULL, - sizeof(SPItem), - 16, - (GInstanceInitFunc) sp_item_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPItem", &info, (GTypeFlags)0); - } - return type; -} +static void sp_item_build (SPObject *object, + SPDocument *document, + Inkscape::XML::Node *repr); +static void sp_item_release(SPObject *object); +static void sp_item_set (SPObject *object, + unsigned key, + gchar const *value); +static void sp_item_update (SPObject *object, + SPCtx *ctx, + guint flags); +static Inkscape::XML::Node* sp_item_write (SPObject *object, + Inkscape::XML::Document *doc, + Inkscape::XML::Node *repr, + guint flags); + +static SPItemView* sp_item_view_list_remove(SPItemView *list, + SPItemView *view); + +static gchar *sp_item_private_description(SPItem *item); +static void sp_item_private_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs); + +G_DEFINE_TYPE(SPItem, sp_item, SP_TYPE_OBJECT); /** * SPItem vtable initialization. */ -void SPItemClass::sp_item_class_init(SPItemClass *klass) +static void +sp_item_class_init(SPItemClass *klass) { SPObjectClass *sp_object_class = SP_OBJECT_CLASS(klass); - static_parent_class = SP_OBJECT_CLASS(g_type_class_ref(SP_TYPE_OBJECT)); - sp_object_class->build = SPItem::sp_item_build; - sp_object_class->release = SPItem::sp_item_release; - sp_object_class->set = SPItem::sp_item_set; - sp_object_class->update = SPItem::sp_item_update; - sp_object_class->write = SPItem::sp_item_write; + sp_object_class->build = sp_item_build; + sp_object_class->release = sp_item_release; + sp_object_class->set = sp_item_set; + sp_object_class->update = sp_item_update; + sp_object_class->write = sp_item_write; - klass->description = SPItem::sp_item_private_description; - klass->snappoints = SPItem::sp_item_private_snappoints; + klass->description = sp_item_private_description; + klass->snappoints = sp_item_private_snappoints; } /** * Callback for SPItem object initialization. */ -void SPItem::sp_item_init(SPItem *item) +static void +sp_item_init(SPItem *item) { item->init(); } @@ -412,7 +411,8 @@ void SPItem::moveTo(SPItem *target, gboolean intoafter) { } -void SPItem::sp_item_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +static void +sp_item_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { object->readAttr( "style" ); object->readAttr( "transform" ); @@ -425,12 +425,13 @@ void SPItem::sp_item_build(SPObject *object, SPDocument *document, Inkscape::XML object->readAttr( "inkscape:connector-avoid" ); object->readAttr( "inkscape:connection-points" ); - if ((SP_OBJECT_CLASS(SPItemClass::static_parent_class))->build) { - (* (SP_OBJECT_CLASS(SPItemClass::static_parent_class))->build)(object, document, repr); + if ((SP_OBJECT_CLASS(sp_item_parent_class))->build) { + (* (SP_OBJECT_CLASS(sp_item_parent_class))->build)(object, document, repr); } } -void SPItem::sp_item_release(SPObject *object) +static void +sp_item_release(SPObject *object) { SPItem *item = SP_ITEM(object); @@ -445,8 +446,8 @@ void SPItem::sp_item_release(SPObject *object) delete item->clip_ref; delete item->mask_ref; - if ((SP_OBJECT_CLASS(SPItemClass::static_parent_class))->release) { - (SP_OBJECT_CLASS(SPItemClass::static_parent_class))->release(object); + if ((SP_OBJECT_CLASS(sp_item_parent_class))->release) { + (SP_OBJECT_CLASS(sp_item_parent_class))->release(object); } while (item->display) { @@ -456,7 +457,8 @@ void SPItem::sp_item_release(SPObject *object) item->_transformed_signal.~signal(); } -void SPItem::sp_item_set(SPObject *object, unsigned key, gchar const *value) +static void +sp_item_set(SPObject *object, unsigned key, gchar const *value) { SPItem *item = SP_ITEM(object); @@ -539,8 +541,8 @@ void SPItem::sp_item_set(SPObject *object, unsigned key, gchar const *value) sp_style_read_from_object(object->style, object); object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); } else { - if ((SP_OBJECT_CLASS(SPItemClass::static_parent_class))->set) { - (* (SP_OBJECT_CLASS(SPItemClass::static_parent_class))->set)(object, key, value); + if ((SP_OBJECT_CLASS(sp_item_parent_class))->set) { + (* (SP_OBJECT_CLASS(sp_item_parent_class))->set)(object, key, value); } } break; @@ -597,12 +599,13 @@ void SPItem::mask_ref_changed(SPObject *old_mask, SPObject *mask, SPItem *item) } } -void SPItem::sp_item_update(SPObject *object, SPCtx *ctx, guint flags) +static void +sp_item_update(SPObject *object, SPCtx *ctx, guint flags) { SPItem *item = SP_ITEM(object); - if ((SP_OBJECT_CLASS(SPItemClass::static_parent_class))->update) { - (* (SP_OBJECT_CLASS(SPItemClass::static_parent_class))->update)(object, ctx, flags); + if ((SP_OBJECT_CLASS(sp_item_parent_class))->update) { + (* (SP_OBJECT_CLASS(sp_item_parent_class))->update)(object, ctx, flags); } // any of the modifications defined in sp-object.h might change bbox, @@ -657,7 +660,8 @@ void SPItem::sp_item_update(SPObject *object, SPCtx *ctx, guint flags) item->avoidRef->handleSettingChange(); } -Inkscape::XML::Node *SPItem::sp_item_write(SPObject *const object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +static Inkscape::XML::Node* +sp_item_write(SPObject *const object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SPItem *item = SP_ITEM(object); @@ -717,8 +721,8 @@ Inkscape::XML::Node *SPItem::sp_item_write(SPObject *const object, Inkscape::XML } } - if ((SP_OBJECT_CLASS(SPItemClass::static_parent_class))->write) { - (SP_OBJECT_CLASS(SPItemClass::static_parent_class))->write(object, xml_doc, repr, flags); + if ((SP_OBJECT_CLASS(sp_item_parent_class))->write) { + (SP_OBJECT_CLASS(sp_item_parent_class))->write(object, xml_doc, repr, flags); } return repr; @@ -898,7 +902,8 @@ unsigned SPItem::pos_in_parent() return 0; } -void SPItem::sp_item_private_snappoints(SPItem const * /*item*/, std::vector<Inkscape::SnapCandidatePoint> &/*p*/, Inkscape::SnapPreferences const * /*snapprefs*/) +static void +sp_item_private_snappoints(SPItem const * /*item*/, std::vector<Inkscape::SnapCandidatePoint> &/*p*/, Inkscape::SnapPreferences const * /*snapprefs*/) { /* This will only be called if the derived class doesn't override this. * see for example sp_genericellipse_snappoints in sp-ellipse.cpp @@ -966,7 +971,8 @@ void SPItem::invoke_print(SPPrintContext *ctx) } } -gchar *SPItem::sp_item_private_description(SPItem */*item*/) +static gchar* +sp_item_private_description(SPItem * /*item*/) { return g_strdup(_("Object")); } @@ -1558,7 +1564,8 @@ SPItemView *SPItem::sp_item_view_new_prepend(SPItemView *list, SPItem *item, uns return new_view; } -SPItemView *SPItem::sp_item_view_list_remove(SPItemView *list, SPItemView *view) +static SPItemView* +sp_item_view_list_remove(SPItemView *list, SPItemView *view) { SPItemView *ret = list; if (view == list) { diff --git a/src/sp-item.h b/src/sp-item.h index 2c7bd5a5d..85ef3531e 100644 --- a/src/sp-item.h +++ b/src/sp-item.h @@ -101,16 +101,16 @@ public: class SPItem; class SPItemClass; -#define SP_TYPE_ITEM (SPItem::getType ()) +#define SP_TYPE_ITEM (sp_item_get_type ()) #define SP_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_ITEM, SPItem)) #define SP_ITEM_CLASS(clazz) (G_TYPE_CHECK_CLASS_CAST((clazz), SP_TYPE_ITEM, SPItemClass)) #define SP_IS_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_ITEM)) +GType sp_item_get_type() G_GNUC_CONST; /** Abstract base class for all visible shapes. */ class SPItem : public SPObject { public: - static GType getType(); enum BBoxType { // legacy behavior: includes crude stroke, markers; excludes long miters, blur margin; is known to be wrong for caps APPROXIMATE_BBOX, @@ -227,19 +227,7 @@ private: mutable bool _is_evaluated; mutable EvaluatedStatus _evaluated_status; - static void sp_item_init(SPItem *item); - - static void sp_item_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); - static void sp_item_release(SPObject *object); - static void sp_item_set(SPObject *object, unsigned key, gchar const *value); - static void sp_item_update(SPObject *object, SPCtx *ctx, guint flags); - static Inkscape::XML::Node *sp_item_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - - static gchar *sp_item_private_description(SPItem *item); - static void sp_item_private_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs); - static SPItemView *sp_item_view_new_prepend(SPItemView *list, SPItem *item, unsigned flags, unsigned key, Inkscape::DrawingItem *arenaitem); - static SPItemView *sp_item_view_list_remove(SPItemView *list, SPItemView *view); static void clip_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item); static void mask_ref_changed(SPObject *old_clip, SPObject *clip, SPItem *item); @@ -278,11 +266,8 @@ public: /** Emit event, if applicable */ gint (* event) (SPItem *item, SPEvent *event); - private: - static SPObjectClass *static_parent_class; - static void sp_item_class_init(SPItemClass *klass); - - friend class SPItem; +private: + friend class SPItem; }; // Utility diff --git a/src/sp-line.cpp b/src/sp-line.cpp index 06604a1d6..218d0c3b1 100644 --- a/src/sp-line.cpp +++ b/src/sp-line.cpp @@ -24,51 +24,38 @@ #include "document.h" #include "inkscape.h" -SPShapeClass * SPLineClass::static_parent_class = 0; - -GType SPLine::sp_line_get_type(void) -{ - static GType line_type = 0; - - if (!line_type) { - GTypeInfo line_info = { - sizeof(SPLineClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) SPLineClass::sp_line_class_init, - NULL, /* klass_finalize */ - NULL, /* klass_data */ - sizeof(SPLine), - 16, /* n_preallocs */ - (GInstanceInitFunc) init, - NULL, /* value_table */ - }; - line_type = g_type_register_static(SP_TYPE_SHAPE, "SPLine", &line_info,(GTypeFlags)0); - } - return line_type; -} - -void SPLineClass::sp_line_class_init(SPLineClass *klass) +static void sp_line_build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); +static void sp_line_set(SPObject *object, unsigned int key, const gchar *value); +static Inkscape::XML::Node* sp_line_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static void sp_line_update(SPObject *object, SPCtx *ctx, guint flags); +static gchar* sp_line_get_description(SPItem * item); +static Geom::Affine sp_line_set_transform(SPItem *item, Geom::Affine const &xform); +static void sp_line_set_shape(SPShape *shape); +static void sp_line_convert_to_guides(SPItem *item); + +G_DEFINE_TYPE(SPLine, sp_line, SP_TYPE_SHAPE); + +static void +sp_line_class_init(SPLineClass *klass) { - SPLineClass::static_parent_class = (SPShapeClass *) g_type_class_ref(SP_TYPE_SHAPE); - SPObjectClass *sp_object_class = (SPObjectClass *) klass; - sp_object_class->build = SPLine::build; - sp_object_class->set = SPLine::set; - sp_object_class->write = SPLine::write; + SPItemClass *item_class = (SPItemClass *) klass; + SPShapeClass *shape_class = (SPShapeClass *) klass; - SPItemClass *item_class = (SPItemClass *) klass; - item_class->description = SPLine::getDescription; - item_class->set_transform = SPLine::setTransform; - item_class->convert_to_guides = SPLine::convertToGuides; + sp_object_class->build = sp_line_build; + sp_object_class->set = sp_line_set; + sp_object_class->write = sp_line_write; + sp_object_class->update = sp_line_update; - sp_object_class->update = SPLine::update; + item_class->description = sp_line_get_description; + item_class->set_transform = sp_line_set_transform; + item_class->convert_to_guides = sp_line_convert_to_guides; - SPShapeClass *shape_class = (SPShapeClass *) klass; - shape_class->set_shape = SPLine::setShape; + shape_class->set_shape = sp_line_set_shape; } -void SPLine::init(SPLine * line) +static void +sp_line_init(SPLine * line) { line->x1.unset(); line->y1.unset(); @@ -77,10 +64,11 @@ void SPLine::init(SPLine * line) } -void SPLine::build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr) +static void +sp_line_build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr) { - if (((SPObjectClass *) SPLineClass::static_parent_class)->build) { - ((SPObjectClass *) SPLineClass::static_parent_class)->build(object, document, repr); + if (((SPObjectClass *) sp_line_parent_class)->build) { + ((SPObjectClass *) sp_line_parent_class)->build(object, document, repr); } object->readAttr( "x1" ); @@ -89,7 +77,8 @@ void SPLine::build(SPObject * object, SPDocument * document, Inkscape::XML::Node object->readAttr( "y2" ); } -void SPLine::set(SPObject *object, unsigned int key, const gchar *value) +static void +sp_line_set(SPObject *object, unsigned int key, const gchar *value) { SPLine * line = SP_LINE(object); @@ -113,14 +102,15 @@ void SPLine::set(SPObject *object, unsigned int key, const gchar *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) SPLineClass::static_parent_class)->set) { - ((SPObjectClass *) SPLineClass::static_parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_line_parent_class)->set) { + ((SPObjectClass *) sp_line_parent_class)->set(object, key, value); } break; } } -void SPLine::update(SPObject *object, SPCtx *ctx, guint flags) +static void +sp_line_update(SPObject *object, SPCtx *ctx, guint flags) { if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { SPLine *line = SP_LINE(object); @@ -139,13 +129,14 @@ void SPLine::update(SPObject *object, SPCtx *ctx, guint flags) ((SPShape *) object)->setShape(); } - if (((SPObjectClass *) SPLineClass::static_parent_class)->update) { - ((SPObjectClass *) SPLineClass::static_parent_class)->update(object, ctx, flags); + if (((SPObjectClass *) sp_line_parent_class)->update) { + ((SPObjectClass *) sp_line_parent_class)->update(object, ctx, flags); } } -Inkscape::XML::Node * SPLine::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +static Inkscape::XML::Node* +sp_line_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SPLine *line = SP_LINE(object); @@ -162,19 +153,21 @@ Inkscape::XML::Node * SPLine::write(SPObject *object, Inkscape::XML::Document *x sp_repr_set_svg_double(repr, "x2", line->x2.computed); sp_repr_set_svg_double(repr, "y2", line->y2.computed); - if (((SPObjectClass *) (SPLineClass::static_parent_class))->write) { - ((SPObjectClass *) (SPLineClass::static_parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_line_parent_class))->write) { + ((SPObjectClass *) (sp_line_parent_class))->write(object, xml_doc, repr, flags); } return repr; } -gchar * SPLine::getDescription(SPItem */*item*/) +static gchar* +sp_line_get_description(SPItem * /*item*/) { return g_strdup(_("<b>Line</b>")); } -void SPLine::convertToGuides(SPItem *item) +static void +sp_line_convert_to_guides(SPItem *item) { SPLine *line = SP_LINE(item); Geom::Point points[2]; @@ -187,7 +180,8 @@ void SPLine::convertToGuides(SPItem *item) SPGuide::createSPGuide(item->document, points[0], points[1]); } -Geom::Affine SPLine::setTransform(SPItem *item, Geom::Affine const &xform) +static Geom::Affine +sp_line_set_transform(SPItem *item, Geom::Affine const &xform) { SPLine *line = SP_LINE(item); Geom::Point points[2]; @@ -210,7 +204,8 @@ Geom::Affine SPLine::setTransform(SPItem *item, Geom::Affine const &xform) return Geom::identity(); } -void SPLine::setShape(SPShape *shape) +static void +sp_line_set_shape(SPShape *shape) { SPLine *line = SP_LINE(shape); diff --git a/src/sp-line.h b/src/sp-line.h index 182f85a5c..836b2df67 100644 --- a/src/sp-line.h +++ b/src/sp-line.h @@ -19,7 +19,7 @@ -#define SP_TYPE_LINE (SPLine::sp_line_get_type()) +#define SP_TYPE_LINE (sp_line_get_type()) #define SP_LINE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_LINE, SPLine)) #define SP_LINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_LINE, SPLineClass)) #define SP_IS_LINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_LINE)) @@ -28,28 +28,16 @@ class SPLine; class SPLineClass; +GType sp_line_get_type(void) G_GNUC_CONST; + class SPLine : public SPShape { public: SVGLength x1; SVGLength y1; SVGLength x2; SVGLength y2; - static GType sp_line_get_type(void); private: - static void init(SPLine *line); - - static void build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); - static void set(SPObject *object, unsigned int key, const gchar *value); - static Inkscape::XML::Node *write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - - static gchar *getDescription(SPItem * item); - static Geom::Affine setTransform(SPItem *item, Geom::Affine const &xform); - - static void update(SPObject *object, SPCtx *ctx, guint flags); - static void setShape(SPShape *shape); - static void convertToGuides(SPItem *item); - friend class SPLineClass; }; @@ -58,9 +46,6 @@ public: SPShapeClass parent_class; private: - static SPShapeClass *static_parent_class; - static void sp_line_class_init(SPLineClass *klass); - friend class SPLine; }; diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 2f158df9d..f417dd275 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -49,9 +49,6 @@ using Inkscape::DocumentUndo; #define DEFAULTBORDERCOLOR 0x000000ff #define DEFAULTPAGECOLOR 0xffffff00 -static void sp_namedview_class_init(SPNamedViewClass *klass); -static void sp_namedview_init(SPNamedView *namedview); - static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_namedview_release(SPObject *object); static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value); @@ -65,35 +62,11 @@ static void sp_namedview_show_single_guide(SPGuide* guide, bool show); static gboolean sp_str_to_bool(const gchar *str); static gboolean sp_nv_read_opacity(const gchar *str, guint32 *color); -static SPObjectGroupClass * parent_class; - -GType -sp_namedview_get_type() -{ - static GType namedview_type = 0; - if (!namedview_type) { - GTypeInfo namedview_info = { - sizeof(SPNamedViewClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_namedview_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPNamedView), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_namedview_init, - NULL, /* value_table */ - }; - namedview_type = g_type_register_static(SP_TYPE_OBJECTGROUP, "SPNamedView", &namedview_info, (GTypeFlags)0); - } - return namedview_type; -} +G_DEFINE_TYPE(SPNamedView, sp_namedview, SP_TYPE_OBJECTGROUP); static void sp_namedview_class_init(SPNamedViewClass * klass) { - SPObjectClass *sp_object_class = reinterpret_cast<SPObjectClass *>(klass); - - parent_class = reinterpret_cast<SPObjectGroupClass *>(g_type_class_ref(SP_TYPE_OBJECTGROUP)); + SPObjectClass *sp_object_class = SP_OBJECT_CLASS(klass); sp_object_class->build = sp_namedview_build; sp_object_class->release = sp_namedview_release; @@ -215,8 +188,8 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape: SPNamedView *nv = (SPNamedView *) object; SPObjectGroup *og = (SPObjectGroup *) object; - if (((SPObjectClass *) (parent_class))->build) { - (* ((SPObjectClass *) (parent_class))->build)(object, document, repr); + if (((SPObjectClass *) (sp_namedview_parent_class))->build) { + (* ((SPObjectClass *) (sp_namedview_parent_class))->build)(object, document, repr); } object->readAttr( "inkscape:document-units" ); @@ -303,8 +276,8 @@ static void sp_namedview_release(SPObject *object) namedview->grids = g_slist_remove_link(namedview->grids, namedview->grids); // deletes first entry } - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_namedview_parent_class)->release) { + ((SPObjectClass *) sp_namedview_parent_class)->release(object); } namedview->snap_manager.~SnapManager(); @@ -624,8 +597,8 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va break; } default: - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); + if (((SPObjectClass *) (sp_namedview_parent_class))->set) { + ((SPObjectClass *) (sp_namedview_parent_class))->set(object, key, value); } break; } @@ -676,8 +649,8 @@ static void sp_namedview_child_added(SPObject *object, Inkscape::XML::Node *chil { SPNamedView *nv = (SPNamedView *) object; - if (((SPObjectClass *) (parent_class))->child_added) { - (* ((SPObjectClass *) (parent_class))->child_added)(object, child, ref); + if (((SPObjectClass *) (sp_namedview_parent_class))->child_added) { + (* ((SPObjectClass *) (sp_namedview_parent_class))->child_added)(object, child, ref); } if (!strcmp(child->name(), "inkscape:grid")) { @@ -730,8 +703,8 @@ static void sp_namedview_remove_child(SPObject *object, Inkscape::XML::Node *chi } } - if (((SPObjectClass *) (parent_class))->remove_child) { - (* ((SPObjectClass *) (parent_class))->remove_child)(object, child); + if (((SPObjectClass *) (sp_namedview_parent_class))->remove_child) { + (* ((SPObjectClass *) (sp_namedview_parent_class))->remove_child)(object, child); } } diff --git a/src/sp-namedview.h b/src/sp-namedview.h index e83ead69e..8191ef6d6 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -25,6 +25,8 @@ #include "snap.h" #include "document.h" +G_BEGIN_DECLS + struct SPUnit; namespace Inkscape { @@ -112,6 +114,8 @@ void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr); void sp_namedview_show_grids(SPNamedView *namedview, bool show, bool dirty_document); Inkscape::CanvasGrid * sp_namedview_get_first_enabled_grid(SPNamedView *namedview); +G_END_DECLS + #endif /* !INKSCAPE_SP_NAMEDVIEW_H */ diff --git a/src/sp-polygon.cpp b/src/sp-polygon.cpp index eee8d50bc..94000cc9d 100644 --- a/src/sp-polygon.cpp +++ b/src/sp-polygon.cpp @@ -25,46 +25,18 @@ #include "xml/repr.h" #include "document.h" -static void sp_polygon_class_init(SPPolygonClass *pc); -static void sp_polygon_init(SPPolygon *polygon); - static void sp_polygon_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static Inkscape::XML::Node *sp_polygon_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static gchar *sp_polygon_description(SPItem *item); -static SPShapeClass *parent_class; - -GType sp_polygon_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPPolygonClass), - 0, // base_init - 0, // base_finalize - (GClassInitFunc)sp_polygon_class_init, - 0, // class_finalize - 0, // class_data - sizeof(SPPolygon), - 0, // n_preallocs - (GInstanceInitFunc)sp_polygon_init, - 0 // value_table - }; - type = g_type_register_static(SP_TYPE_SHAPE, "SPPolygon", &info, static_cast<GTypeFlags>(0)); - } - - return type; -} +G_DEFINE_TYPE(SPPolygon, sp_polygon, SP_TYPE_SHAPE); static void sp_polygon_class_init(SPPolygonClass *pc) { SPObjectClass *sp_object_class = (SPObjectClass *) pc; SPItemClass *item_class = (SPItemClass *) pc; - parent_class = (SPShapeClass *) g_type_class_ref(SP_TYPE_SHAPE); - sp_object_class->build = sp_polygon_build; sp_object_class->write = sp_polygon_write; sp_object_class->set = sp_polygon_set; @@ -79,8 +51,8 @@ static void sp_polygon_init(SPPolygon */*polygon*/) static void sp_polygon_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build(object, document, repr); + if (((SPObjectClass *) sp_polygon_parent_class)->build) { + ((SPObjectClass *) sp_polygon_parent_class)->build(object, document, repr); } object->readAttr( "points" ); @@ -126,8 +98,8 @@ static Inkscape::XML::Node *sp_polygon_write(SPObject *object, Inkscape::XML::Do repr->setAttribute("points", str); g_free(str); - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_polygon_parent_class))->write) { + ((SPObjectClass *) (sp_polygon_parent_class))->write(object, xml_doc, repr, flags); } return repr; @@ -213,8 +185,8 @@ void sp_polygon_set(SPObject *object, unsigned int key, const gchar *value) break; } default: - if (((SPObjectClass *) parent_class)->set) { - ((SPObjectClass *) parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_polygon_parent_class)->set) { + ((SPObjectClass *) sp_polygon_parent_class)->set(object, key, value); } break; } diff --git a/src/sp-polyline.cpp b/src/sp-polyline.cpp index 8dbed2a22..e5d89a802 100644 --- a/src/sp-polyline.cpp +++ b/src/sp-polyline.cpp @@ -20,61 +20,44 @@ #include "xml/repr.h" #include "document.h" -SPShapeClass * SPPolyLineClass::static_parent_class=0; +static void sp_polyline_build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); +static void sp_polyline_set(SPObject *object, unsigned int key, const gchar *value); +static Inkscape::XML::Node* sp_polyline_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static gchar* sp_polyline_get_description(SPItem * item); -GType SPPolyLine::sp_polyline_get_type(void) -{ - static GType polyline_type = 0; - - if (!polyline_type) { - GTypeInfo polyline_info = { - sizeof (SPPolyLineClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) SPPolyLineClass::sp_polyline_class_init, - NULL, /* klass_finalize */ - NULL, /* klass_data */ - sizeof (SPPolyLine), - 16, /* n_preallocs */ - (GInstanceInitFunc) SPPolyLine::init, - NULL, /* value_table */ - }; - polyline_type = g_type_register_static (SP_TYPE_SHAPE, "SPPolyLine", &polyline_info, (GTypeFlags)0); - } - return polyline_type; -} -void SPPolyLineClass::sp_polyline_class_init(SPPolyLineClass *klass) +G_DEFINE_TYPE(SPPolyLine, sp_polyline, SP_TYPE_SHAPE); + +static void +sp_polyline_class_init(SPPolyLineClass *klass) { - //GObjectClass * gobject_class = (GObjectClass *) klass; SPObjectClass * sp_object_class = (SPObjectClass *) klass; SPItemClass * item_class = (SPItemClass *) klass; - static_parent_class = (SPShapeClass *)g_type_class_ref(SP_TYPE_SHAPE); - - sp_object_class->build = SPPolyLine::build; - sp_object_class->set = SPPolyLine::set; - sp_object_class->write = SPPolyLine::write; + sp_object_class->build = sp_polyline_build; + sp_object_class->set = sp_polyline_set; + sp_object_class->write = sp_polyline_write; - item_class->description = SPPolyLine::getDescription; + item_class->description = sp_polyline_get_description; } -void SPPolyLine::init(SPPolyLine * /*polyline*/) +static void +sp_polyline_init(SPPolyLine * /*polyline*/) { - /* Nothing here */ } -void SPPolyLine::build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr) +static void +sp_polyline_build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr) { - - if (((SPObjectClass *) SPPolyLineClass::static_parent_class)->build) { - ((SPObjectClass *) SPPolyLineClass::static_parent_class)->build (object, document, repr); + if (((SPObjectClass *) sp_polyline_parent_class)->build) { + ((SPObjectClass *) sp_polyline_parent_class)->build (object, document, repr); } object->readAttr( "points" ); } -void SPPolyLine::set(SPObject *object, unsigned int key, const gchar *value) +static void +sp_polyline_set(SPObject *object, unsigned int key, const gchar *value) { SPPolyLine *polyline = SP_POLYLINE(object); @@ -125,14 +108,15 @@ void SPPolyLine::set(SPObject *object, unsigned int key, const gchar *value) break; } default: - if (((SPObjectClass *) SPPolyLineClass::static_parent_class)->set) { - ((SPObjectClass *) SPPolyLineClass::static_parent_class)->set (object, key, value); + if (((SPObjectClass *) sp_polyline_parent_class)->set) { + ((SPObjectClass *) sp_polyline_parent_class)->set (object, key, value); } break; } } -Inkscape::XML::Node *SPPolyLine::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +static Inkscape::XML::Node* +sp_polyline_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SP_POLYLINE(object); @@ -144,14 +128,15 @@ Inkscape::XML::Node *SPPolyLine::write(SPObject *object, Inkscape::XML::Document repr->mergeFrom(object->getRepr(), "id"); } - if (((SPObjectClass *) (SPPolyLineClass::static_parent_class))->write) { - ((SPObjectClass *) (SPPolyLineClass::static_parent_class))->write (object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_polyline_parent_class))->write) { + ((SPObjectClass *) (sp_polyline_parent_class))->write (object, xml_doc, repr, flags); } return repr; } -gchar *SPPolyLine::getDescription(SPItem * /*item*/) +static gchar* +sp_polyline_get_description(SPItem * /*item*/) { return g_strdup(_("<b>Polyline</b>")); } diff --git a/src/sp-polyline.h b/src/sp-polyline.h index 277529b49..047868692 100644 --- a/src/sp-polyline.h +++ b/src/sp-polyline.h @@ -5,7 +5,7 @@ -#define SP_TYPE_POLYLINE (SPPolyLine::sp_polyline_get_type ()) +#define SP_TYPE_POLYLINE (sp_polyline_get_type ()) #define SP_POLYLINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_POLYLINE, SPPolyLine)) #define SP_POLYLINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_POLYLINE, SPPolyLineClass)) #define SP_IS_POLYLINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_POLYLINE)) @@ -14,19 +14,10 @@ class SPPolyLine; class SPPolyLineClass; -class SPPolyLine : public SPShape { -public: - static GType sp_polyline_get_type (void); +GType sp_polyline_get_type (void) G_GNUC_CONST; +class SPPolyLine : public SPShape { private: - static void init(SPPolyLine *polyline); - - static void build(SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); - static void set(SPObject *object, unsigned int key, const gchar *value); - static Inkscape::XML::Node *write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - - static gchar * getDescription(SPItem * item); - friend class SPPolyLineClass; }; @@ -35,9 +26,6 @@ public: SPShapeClass parent_class; private: - static SPShapeClass *static_parent_class; - static void sp_polyline_class_init (SPPolyLineClass *klass); - friend class SPPolyLine; }; diff --git a/src/sp-script.cpp b/src/sp-script.cpp index f18d231b0..736ddb4c9 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -16,9 +16,6 @@ #include <cstring> #include "document.h" -static void sp_script_class_init(SPScriptClass *sc); -static void sp_script_init(SPScript *script); - static void sp_script_release(SPObject *object); static void sp_script_update(SPObject *object, SPCtx *ctx, guint flags); static void sp_script_modified(SPObject *object, guint flags); @@ -26,34 +23,10 @@ static void sp_script_set(SPObject *object, unsigned int key, gchar const *value static void sp_script_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static Inkscape::XML::Node *sp_script_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static SPObjectClass *parent_class; - -GType sp_script_get_type(void) -{ - static GType script_type = 0; - - if (!script_type) { - GTypeInfo script_info = { - sizeof(SPScriptClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_script_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPScript), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_script_init, - NULL, /* value_table */ - }; - script_type = g_type_register_static(SP_TYPE_OBJECT, "SPScript", &script_info, (GTypeFlags) 0); - } - - return script_type; -} +G_DEFINE_TYPE(SPScript, sp_script, SP_TYPE_OBJECT); static void sp_script_class_init(SPScriptClass *sc) { - parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); SPObjectClass *sp_object_class = (SPObjectClass *) sc; sp_object_class->build = sp_script_build; @@ -78,8 +51,8 @@ static void sp_script_init(SPScript */*script*/) static void sp_script_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build(object, document, repr); + if (((SPObjectClass *) sp_script_parent_class)->build) { + ((SPObjectClass *) sp_script_parent_class)->build(object, document, repr); } //Read values of key attributes from XML nodes into object. @@ -95,8 +68,8 @@ static void sp_script_release(SPObject *object) object->document->removeResource("script", object); } - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_script_parent_class)->release) { + ((SPObjectClass *) sp_script_parent_class)->release(object); } } @@ -120,8 +93,8 @@ sp_script_set(SPObject *object, unsigned int key, gchar const *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) parent_class)->set) - ((SPObjectClass *) parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_script_parent_class)->set) + ((SPObjectClass *) sp_script_parent_class)->set(object, key, value); break; } } diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index d5556ba9e..4037b302c 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -54,58 +54,47 @@ #define noSHAPE_VERBOSE void sp_shape_print (SPItem * item, SPPrintContext * ctx); - -SPLPEItemClass * SPShapeClass::parent_class = 0; - -/** - * Registers the SPShape class with Gdk and returns its type number. - */ -GType SPShape::getType(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof (SPShapeClass), - NULL, NULL, - (GClassInitFunc) SPShapeClass::sp_shape_class_init, - NULL, NULL, - sizeof (SPShape), - 16, - (GInstanceInitFunc) sp_shape_init, - NULL, /* value_table */ - }; - type = g_type_register_static (SP_TYPE_LPE_ITEM, "SPShape", &info, (GTypeFlags)0); - } - return type; -} +static void sp_shape_finalize (GObject *object); +static void sp_shape_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); +static void sp_shape_release (SPObject *object); +static void sp_shape_set(SPObject *object, unsigned key, gchar const *value); +static void sp_shape_update (SPObject *object, SPCtx *ctx, unsigned int flags); +static void sp_shape_modified (SPObject *object, unsigned int flags); +static Inkscape::XML::Node *sp_shape_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +static Geom::OptRect sp_shape_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type); +static Inkscape::DrawingItem *sp_shape_show (SPItem *item, Inkscape::Drawing &drawing, unsigned int key, unsigned int flags); +static void sp_shape_hide (SPItem *item, unsigned int key); +static void sp_shape_snappoints (SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs); +static void sp_shape_update_marker_view (SPShape *shape, Inkscape::DrawingItem *ai); + +G_DEFINE_TYPE(SPShape, sp_shape, SP_TYPE_LPE_ITEM); /** * Initializes a SPShapeClass object. Establishes the function pointers to the class' * member routines in the class vtable, and sets pointers to parent classes. */ -void SPShapeClass::sp_shape_class_init(SPShapeClass *klass) +static void +sp_shape_class_init(SPShapeClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS(klass); SPObjectClass *sp_object_class = SP_OBJECT_CLASS(klass); SPItemClass * item_class = SP_ITEM_CLASS(klass); SPLPEItemClass * lpe_item_class = SP_LPE_ITEM_CLASS(klass); - parent_class = (SPLPEItemClass *)g_type_class_peek_parent (klass); - - gobject_class->finalize = SPShape::sp_shape_finalize; + gobject_class->finalize = sp_shape_finalize; - sp_object_class->build = SPShape::sp_shape_build; - sp_object_class->release = SPShape::sp_shape_release; - sp_object_class->set = SPShape::sp_shape_set; - sp_object_class->update = SPShape::sp_shape_update; - sp_object_class->modified = SPShape::sp_shape_modified; - sp_object_class->write = SPShape::sp_shape_write; + sp_object_class->build = sp_shape_build; + sp_object_class->release = sp_shape_release; + sp_object_class->set = sp_shape_set; + sp_object_class->update = sp_shape_update; + sp_object_class->modified = sp_shape_modified; + sp_object_class->write = sp_shape_write; - item_class->bbox = SPShape::sp_shape_bbox; + item_class->bbox = sp_shape_bbox; item_class->print = sp_shape_print; - item_class->show = SPShape::sp_shape_show; - item_class->hide = SPShape::sp_shape_hide; - item_class->snappoints = SPShape::sp_shape_snappoints; + item_class->show = sp_shape_show; + item_class->hide = sp_shape_hide; + item_class->snappoints = sp_shape_snappoints; lpe_item_class->update_patheffect = NULL; klass->set_shape = NULL; @@ -114,7 +103,8 @@ void SPShapeClass::sp_shape_class_init(SPShapeClass *klass) /** * Initializes an SPShape object. */ -void SPShape::sp_shape_init(SPShape *shape) +static void +sp_shape_init(SPShape *shape) { for ( int i = 0 ; i < SP_MARKER_LOC_QTY ; i++ ) { new (&shape->_release_connect[i]) sigc::connection(); @@ -125,7 +115,8 @@ void SPShape::sp_shape_init(SPShape *shape) shape->_curve_before_lpe = NULL; } -void SPShape::sp_shape_finalize(GObject *object) +static void +sp_shape_finalize(GObject *object) { SPShape *shape=(SPShape *)object; @@ -136,8 +127,8 @@ void SPShape::sp_shape_finalize(GObject *object) shape->_modified_connect[i].~connection(); } - if (((GObjectClass *) (SPShapeClass::parent_class))->finalize) { - (* ((GObjectClass *) (SPShapeClass::parent_class))->finalize)(object); + if (((GObjectClass *) (sp_shape_parent_class))->finalize) { + (* ((GObjectClass *) (sp_shape_parent_class))->finalize)(object); } } @@ -148,10 +139,11 @@ void SPShape::sp_shape_finalize(GObject *object) * * \see SPObject::build() */ -void SPShape::sp_shape_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +static void +sp_shape_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (SPShapeClass::parent_class))->build) { - (*((SPObjectClass *) (SPShapeClass::parent_class))->build) (object, document, repr); + if (((SPObjectClass *) (sp_shape_parent_class))->build) { + (*((SPObjectClass *) (sp_shape_parent_class))->build) (object, document, repr); } for (int i = 0 ; i < SP_MARKER_LOC_QTY ; i++) { @@ -169,7 +161,8 @@ void SPShape::sp_shape_build(SPObject *object, SPDocument *document, Inkscape::X * * \see SPObject::release() */ -void SPShape::sp_shape_release(SPObject *object) +static void +sp_shape_release(SPObject *object) { SPItem *item; SPShape *shape; @@ -196,24 +189,24 @@ void SPShape::sp_shape_release(SPObject *object) shape->_curve_before_lpe = shape->_curve_before_lpe->unref(); } - if (((SPObjectClass *) SPShapeClass::parent_class)->release) { - ((SPObjectClass *) SPShapeClass::parent_class)->release (object); + if (((SPObjectClass *) sp_shape_parent_class)->release) { + ((SPObjectClass *) sp_shape_parent_class)->release (object); } } - - -void SPShape::sp_shape_set(SPObject *object, unsigned int key, gchar const *value) +static void +sp_shape_set(SPObject *object, unsigned int key, gchar const *value) { - if (((SPObjectClass *) SPShapeClass::parent_class)->set) { - ((SPObjectClass *) SPShapeClass::parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_shape_parent_class)->set) { + ((SPObjectClass *) sp_shape_parent_class)->set(object, key, value); } } -Inkscape::XML::Node * SPShape::sp_shape_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +static Inkscape::XML::Node* +sp_shape_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) { - if (((SPObjectClass *)(SPShapeClass::parent_class))->write) { - ((SPObjectClass *)(SPShapeClass::parent_class))->write(object, doc, repr, flags); + if (((SPObjectClass *)(sp_shape_parent_class))->write) { + ((SPObjectClass *)(sp_shape_parent_class))->write(object, doc, repr, flags); } return repr; @@ -223,12 +216,13 @@ Inkscape::XML::Node * SPShape::sp_shape_write(SPObject *object, Inkscape::XML::D * Updates the shape when its attributes have changed. Also establishes * marker objects to match the style settings. */ -void SPShape::sp_shape_update(SPObject *object, SPCtx *ctx, unsigned int flags) +static void +sp_shape_update(SPObject *object, SPCtx *ctx, unsigned int flags) { SPShape *shape = (SPShape *) object; - if (((SPObjectClass *) (SPShapeClass::parent_class))->update) { - (* ((SPObjectClass *) (SPShapeClass::parent_class))->update) (object, ctx, flags); + if (((SPObjectClass *) (sp_shape_parent_class))->update) { + (* ((SPObjectClass *) (sp_shape_parent_class))->update) (object, ctx, flags); } /* This stanza checks that an object's marker style agrees with @@ -372,7 +366,8 @@ Geom::Affine sp_shape_marker_get_transform_at_end(Geom::Curve const & c) * * @todo figure out what to do when both 'marker' and for instance 'marker-end' are set. */ -void SPShape::sp_shape_update_marker_view(SPShape *shape, Inkscape::DrawingItem *ai) +static void +sp_shape_update_marker_view(SPShape *shape, Inkscape::DrawingItem *ai) { SPStyle *style = ((SPObject *) shape)->style; @@ -482,12 +477,13 @@ void SPShape::sp_shape_update_marker_view(SPShape *shape, Inkscape::DrawingItem /** * Sets modified flag for all sub-item views. */ -void SPShape::sp_shape_modified(SPObject *object, unsigned int flags) +static void +sp_shape_modified(SPObject *object, unsigned int flags) { SPShape *shape = SP_SHAPE (object); - if (((SPObjectClass *) (SPShapeClass::parent_class))->modified) { - (* ((SPObjectClass *) (SPShapeClass::parent_class))->modified) (object, flags); + if (((SPObjectClass *) (sp_shape_parent_class))->modified) { + (* ((SPObjectClass *) (sp_shape_parent_class))->modified) (object, flags); } if (flags & SP_OBJECT_STYLE_MODIFIED_FLAG) { @@ -502,7 +498,8 @@ void SPShape::sp_shape_modified(SPObject *object, unsigned int flags) * Calculates the bounding box for item, storing it into bbox. * This also includes the bounding boxes of any markers included in the shape. */ -Geom::OptRect SPShape::sp_shape_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType bboxtype) +static Geom::OptRect +sp_shape_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType bboxtype) { SPShape const *shape = SP_SHAPE (item); Geom::OptRect bbox; @@ -792,7 +789,8 @@ sp_shape_print (SPItem *item, SPPrintContext *ctx) /** * Sets style, path, and paintbox. Updates marker views, including dimensions. */ -Inkscape::DrawingItem * SPShape::sp_shape_show(SPItem *item, Inkscape::Drawing &drawing, unsigned int /*key*/, unsigned int /*flags*/) +static Inkscape::DrawingItem* +sp_shape_show(SPItem *item, Inkscape::Drawing &drawing, unsigned int /*key*/, unsigned int /*flags*/) { SPObject *object = item; SPShape *shape = SP_SHAPE(item); @@ -835,7 +833,8 @@ Inkscape::DrawingItem * SPShape::sp_shape_show(SPItem *item, Inkscape::Drawing & /** * Hides/removes marker views from the shape. */ -void SPShape::sp_shape_hide(SPItem *item, unsigned int key) +static void +sp_shape_hide(SPItem *item, unsigned int key) { SPShape *shape; SPItemView *v; @@ -854,8 +853,8 @@ void SPShape::sp_shape_hide(SPItem *item, unsigned int key) } } - if (((SPItemClass *) SPShapeClass::parent_class)->hide) { - ((SPItemClass *) SPShapeClass::parent_class)->hide (item, key); + if (((SPItemClass *) sp_shape_parent_class)->hide) { + ((SPItemClass *) sp_shape_parent_class)->hide (item, key); } } @@ -1110,7 +1109,8 @@ void SPShape::setCurveInsync(SPCurve *new_curve, unsigned int owner) /** * Return all nodes in a path that are to be considered for snapping */ -void SPShape::sp_shape_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) +static void +sp_shape_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) { g_assert(item != NULL); g_assert(SP_IS_SHAPE(item)); diff --git a/src/sp-shape.h b/src/sp-shape.h index 453750946..422281cae 100644 --- a/src/sp-shape.h +++ b/src/sp-shape.h @@ -22,7 +22,7 @@ #include <stddef.h> #include <sigc++/connection.h> -#define SP_TYPE_SHAPE (SPShape::getType ()) +#define SP_TYPE_SHAPE (sp_shape_get_type ()) #define SP_SHAPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_SHAPE, SPShape)) #define SP_SHAPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_SHAPE, SPShapeClass)) #define SP_IS_SHAPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_SHAPE)) @@ -32,13 +32,13 @@ class SPDesktop; namespace Inkscape { class DrawingItem; } +GType sp_shape_get_type (void) G_GNUC_CONST; /** * Base class for shapes, including <path> element */ class SPShape : public SPLPEItem { public: - static GType getType (void); void setShape (); SPCurve * getCurve () const; SPCurve * getCurveBeforeLPE () const; @@ -58,26 +58,6 @@ public: sigc::connection _modified_connect [SP_MARKER_LOC_QTY]; private: - static void sp_shape_init (SPShape *shape); - static void sp_shape_finalize (GObject *object); - - static void sp_shape_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); - static void sp_shape_release (SPObject *object); - - static void sp_shape_set(SPObject *object, unsigned key, gchar const *value); - static void sp_shape_update (SPObject *object, SPCtx *ctx, unsigned int flags); - static void sp_shape_modified (SPObject *object, unsigned int flags); - static Inkscape::XML::Node *sp_shape_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); - - static Geom::OptRect sp_shape_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type); - static Inkscape::DrawingItem *sp_shape_show (SPItem *item, Inkscape::Drawing &drawing, unsigned int key, unsigned int flags); - static void sp_shape_hide (SPItem *item, unsigned int key); - static void sp_shape_snappoints (SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs); - - static void sp_shape_update_marker_view (SPShape *shape, Inkscape::DrawingItem *ai); - - - friend class SPShapeClass; }; @@ -89,9 +69,6 @@ public: void (* set_shape) (SPShape *shape); private: - static SPLPEItemClass *parent_class; - static void sp_shape_class_init (SPShapeClass *klass); - friend class SPShape; }; diff --git a/src/sp-use.cpp b/src/sp-use.cpp index 0f45f5444..d5b3c004a 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -38,8 +38,6 @@ /* fixme: */ -static void sp_use_class_init(SPUseClass *classname); -static void sp_use_init(SPUse *use); static void sp_use_finalize(GObject *obj); static void sp_use_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); @@ -60,32 +58,10 @@ static void sp_use_href_changed(SPObject *old_ref, SPObject *ref, SPUse *use); static void sp_use_delete_self(SPObject *deleted, SPUse *self); -static SPItemClass *parent_class; - //void m_print(gchar *say, Geom::Affine m) //{ g_print("%s %g %g %g %g %g %g\n", say, m[0], m[1], m[2], m[3], m[4], m[5]); } -GType -sp_use_get_type(void) -{ - static GType use_type = 0; - if (!use_type) { - GTypeInfo use_info = { - sizeof(SPUseClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_use_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPUse), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_use_init, - NULL, /* value_table */ - }; - use_type = g_type_register_static(SP_TYPE_ITEM, "SPUse", &use_info, (GTypeFlags)0); - } - return use_type; -} +G_DEFINE_TYPE(SPUse, sp_use, SP_TYPE_ITEM); static void sp_use_class_init(SPUseClass *classname) @@ -94,8 +70,6 @@ sp_use_class_init(SPUseClass *classname) SPObjectClass *sp_object_class = (SPObjectClass *) classname; SPItemClass *item_class = (SPItemClass *) classname; - parent_class = (SPItemClass*) g_type_class_ref(SP_TYPE_ITEM); - gobject_class->finalize = sp_use_finalize; sp_object_class->build = sp_use_build; @@ -155,8 +129,8 @@ sp_use_finalize(GObject *obj) static void sp_use_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) parent_class)->build) { - (* ((SPObjectClass *) parent_class)->build)(object, document, repr); + if (((SPObjectClass *) sp_use_parent_class)->build) { + (* ((SPObjectClass *) sp_use_parent_class)->build)(object, document, repr); } object->readAttr( "x" ); @@ -189,8 +163,8 @@ sp_use_release(SPObject *object) use->ref->detach(); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_use_parent_class)->release) { + ((SPObjectClass *) sp_use_parent_class)->release(object); } } @@ -242,8 +216,8 @@ sp_use_set(SPObject *object, unsigned key, gchar const *value) } default: - if (((SPObjectClass *) parent_class)->set) { - ((SPObjectClass *) parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_use_parent_class)->set) { + ((SPObjectClass *) sp_use_parent_class)->set(object, key, value); } break; } @@ -258,8 +232,8 @@ sp_use_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML:: repr = xml_doc->createElement("svg:use"); } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_use_parent_class))->write) { + ((SPObjectClass *) (sp_use_parent_class))->write(object, xml_doc, repr, flags); } sp_repr_set_svg_double(repr, "x", use->x.computed); @@ -380,8 +354,8 @@ sp_use_hide(SPItem *item, unsigned key) SP_ITEM(use->child)->invoke_hide(key); } - if (((SPItemClass *) parent_class)->hide) { - ((SPItemClass *) parent_class)->hide(item, key); + if (((SPItemClass *) sp_use_parent_class)->hide) { + ((SPItemClass *) sp_use_parent_class)->hide(item, key); } } @@ -585,8 +559,8 @@ sp_use_update(SPObject *object, SPCtx *ctx, unsigned flags) SPItemCtx *ictx = (SPItemCtx *) ctx; SPItemCtx cctx = *ictx; - if (((SPObjectClass *) (parent_class))->update) - ((SPObjectClass *) (parent_class))->update(object, ctx, flags); + if (((SPObjectClass *) (sp_use_parent_class))->update) + ((SPObjectClass *) (sp_use_parent_class))->update(object, ctx, flags); if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; diff --git a/src/spiral-context.cpp b/src/spiral-context.cpp index 404b0ec1c..459a56161 100644 --- a/src/spiral-context.cpp +++ b/src/spiral-context.cpp @@ -46,8 +46,6 @@ using Inkscape::DocumentUndo; -static void sp_spiral_context_class_init(SPSpiralContextClass * klass); -static void sp_spiral_context_init(SPSpiralContext *spiral_context); static void sp_spiral_context_dispose(GObject *object); static void sp_spiral_context_setup(SPEventContext *ec); static void sp_spiral_context_finish(SPEventContext *ec); @@ -59,27 +57,7 @@ static void sp_spiral_drag(SPSpiralContext *sc, Geom::Point const &p, guint stat static void sp_spiral_finish(SPSpiralContext *sc); static void sp_spiral_cancel(SPSpiralContext *sc); -static SPEventContextClass *parent_class; - -GType -sp_spiral_context_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPSpiralContextClass), - NULL, NULL, - (GClassInitFunc) sp_spiral_context_class_init, - NULL, NULL, - sizeof(SPSpiralContext), - 4, - (GInstanceInitFunc) sp_spiral_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPSpiralContext", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPSpiralContext, sp_spiral_context, SP_TYPE_EVENT_CONTEXT); static void sp_spiral_context_class_init(SPSpiralContextClass *klass) @@ -87,8 +65,6 @@ sp_spiral_context_class_init(SPSpiralContextClass *klass) GObjectClass *object_class = G_OBJECT_CLASS(klass); SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass); - parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass)); - object_class->dispose = sp_spiral_context_dispose; event_context_class->setup = sp_spiral_context_setup; @@ -129,8 +105,8 @@ static void sp_spiral_context_finish(SPEventContext *ec) sp_spiral_finish(sc); sc->sel_changed_connection.disconnect(); - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->finish) { - (SP_EVENT_CONTEXT_CLASS(parent_class))->finish(ec); + if ((SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->finish) { + (SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->finish(ec); } } @@ -155,7 +131,7 @@ sp_spiral_context_dispose(GObject *object) delete sc->_message_context; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_spiral_context_parent_class)->dispose(object); } /** @@ -177,8 +153,8 @@ sp_spiral_context_setup(SPEventContext *ec) { SPSpiralContext *sc = SP_SPIRAL_CONTEXT(ec); - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) - (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); + if ((SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->setup) + (SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->setup(ec); sp_event_context_read(ec, "expansion"); sp_event_context_read(ec, "revolution"); @@ -398,8 +374,8 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event) } if (!ret) { - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) - ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); + if ((SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->root_handler) + ret = (SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->root_handler(event_context, event); } return ret; diff --git a/src/spray-context.cpp b/src/spray-context.cpp index 8d74477c3..694e3a500 100644 --- a/src/spray-context.cpp +++ b/src/spray-context.cpp @@ -78,16 +78,13 @@ using namespace std; #define DDC_RED_RGBA 0xff0000ff #define DYNA_MIN_WIDTH 1.0e-6 -static void sp_spray_context_class_init(SPSprayContextClass *klass); -static void sp_spray_context_init(SPSprayContext *ddc); static void sp_spray_context_dispose(GObject *object); static void sp_spray_context_setup(SPEventContext *ec); static void sp_spray_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val); static gint sp_spray_context_root_handler(SPEventContext *ec, GdkEvent *event); -static SPEventContextClass *parent_class = 0; - +G_DEFINE_TYPE(SPSprayContext, sp_spray_context, SP_TYPE_EVENT_CONTEXT); /** * This function returns pseudo-random numbers from a normal distribution @@ -100,32 +97,11 @@ inline double NormalDistribution(double mu, double sigma) return mu + sigma * sqrt( -2.0 * log(g_random_double_range(0, 1)) ) * cos( 2.0*M_PI*g_random_double_range(0, 1) ); } -GType sp_spray_context_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPSprayContextClass), - NULL, NULL, - (GClassInitFunc) sp_spray_context_class_init, - NULL, NULL, - sizeof(SPSprayContext), - 4, - (GInstanceInitFunc) sp_spray_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPSprayContext", &info, (GTypeFlags)0); - } - return type; -} - static void sp_spray_context_class_init(SPSprayContextClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass); - parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass)); - object_class->dispose = sp_spray_context_dispose; event_context_class->setup = sp_spray_context_setup; @@ -204,7 +180,7 @@ static void sp_spray_context_dispose(GObject *object) delete tc->_message_context; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_spray_context_parent_class)->dispose(object); } static bool is_transform_modes(gint mode) @@ -251,8 +227,8 @@ static void sp_spray_context_setup(SPEventContext *ec) { SPSprayContext *tc = SP_SPRAY_CONTEXT(ec); - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { - (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); + if ((SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->setup) { + (SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->setup(ec); } { @@ -926,8 +902,8 @@ gint sp_spray_context_root_handler(SPEventContext *event_context, GdkEvent *even } if (!ret) { - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { - ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); + if ((SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->root_handler) { + ret = (SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->root_handler(event_context, event); } } |
