diff options
| author | Alex Valavanis <valavanisalex@gmail.com> | 2013-01-26 16:18:08 +0000 |
|---|---|---|
| committer | Alex Valavanis <valavanisalex@gmail.com> | 2013-01-26 16:18:08 +0000 |
| commit | 55b2e59196c6e980bdb3f03379de6707dd91082b (patch) | |
| tree | 8502ac20fa9c4bd4ffa4aee6da3f52a0e906c199 /src | |
| parent | fix crash (diff) | |
| download | inkscape-55b2e59196c6e980bdb3f03379de6707dd91082b.tar.gz inkscape-55b2e59196c6e980bdb3f03379de6707dd91082b.zip | |
More GObject boilerplate reduction
(bzr r12064)
Diffstat (limited to 'src')
| -rw-r--r-- | src/box3d-context.cpp | 43 | ||||
| -rw-r--r-- | src/common-context.cpp | 39 | ||||
| -rw-r--r-- | src/ege-output-action.cpp | 31 | ||||
| -rw-r--r-- | src/event-context.cpp | 25 | ||||
| -rw-r--r-- | src/measure-context.cpp | 39 | ||||
| -rw-r--r-- | src/pen-context.cpp | 46 | ||||
| -rw-r--r-- | src/persp3d.cpp | 30 | ||||
| -rw-r--r-- | src/rect-context.cpp | 44 | ||||
| -rw-r--r-- | src/sp-flowtext.cpp | 56 | ||||
| -rw-r--r-- | src/sp-glyph.cpp | 50 | ||||
| -rw-r--r-- | src/sp-missing-glyph.cpp | 46 | ||||
| -rw-r--r-- | src/sp-object.h | 5 | ||||
| -rw-r--r-- | src/sp-offset.cpp | 61 | ||||
| -rw-r--r-- | src/sp-paint-server.cpp | 30 | ||||
| -rw-r--r-- | src/sp-paint-server.h | 9 | ||||
| -rw-r--r-- | src/sp-path.cpp | 50 | ||||
| -rw-r--r-- | src/sp-style-elem.cpp | 40 | ||||
| -rw-r--r-- | src/sp-symbol.cpp | 77 | ||||
| -rw-r--r-- | src/text-context.cpp | 41 | ||||
| -rw-r--r-- | src/tweak-context.cpp | 36 | ||||
| -rw-r--r-- | src/zoom-context.cpp | 39 |
21 files changed, 168 insertions, 669 deletions
diff --git a/src/box3d-context.cpp b/src/box3d-context.cpp index a58059e89..1af5ed29f 100644 --- a/src/box3d-context.cpp +++ b/src/box3d-context.cpp @@ -53,8 +53,6 @@ using Inkscape::DocumentUndo; -static void sp_box3d_context_class_init(Box3DContextClass *klass); -static void sp_box3d_context_init(Box3DContext *box3d_context); static void sp_box3d_context_dispose(GObject *object); static void sp_box3d_context_setup(SPEventContext *ec); @@ -66,34 +64,13 @@ static gint sp_box3d_context_item_handler(SPEventContext *event_context, SPItem static void sp_box3d_drag(Box3DContext &bc, guint state); static void sp_box3d_finish(Box3DContext *bc); -static SPEventContextClass *parent_class; - -GType sp_box3d_context_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(Box3DContextClass), - NULL, NULL, - (GClassInitFunc) sp_box3d_context_class_init, - NULL, NULL, - sizeof(Box3DContext), - 4, - (GInstanceInitFunc) sp_box3d_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "Box3DContext", &info, (GTypeFlags) 0); - } - return type; -} +G_DEFINE_TYPE(Box3DContext, sp_box3d_context, SP_TYPE_EVENT_CONTEXT); static void sp_box3d_context_class_init(Box3DContextClass *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_box3d_context_dispose; event_context_class->setup = sp_box3d_context_setup; @@ -135,8 +112,8 @@ static void sp_box3d_context_finish(SPEventContext *ec) bc->sel_changed_connection.disconnect(); // sp_repr_remove_listener_by_data(cc->active_shape_repr, cc); - if (((SPEventContextClass *) parent_class)->finish) { - ((SPEventContextClass *) parent_class)->finish(ec); + if (((SPEventContextClass *) sp_box3d_context_parent_class)->finish) { + ((SPEventContextClass *) sp_box3d_context_parent_class)->finish(ec); } } @@ -166,7 +143,7 @@ static void sp_box3d_context_dispose(GObject *object) delete bc->_message_context; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_box3d_context_parent_class)->dispose(object); } /** @@ -211,8 +188,8 @@ static void sp_box3d_context_setup(SPEventContext *ec) { Box3DContext *bc = SP_BOX3D_CONTEXT(ec); - if (((SPEventContextClass *) parent_class)->setup) { - ((SPEventContextClass *) parent_class)->setup(ec); + if (((SPEventContextClass *) sp_box3d_context_parent_class)->setup) { + ((SPEventContextClass *) sp_box3d_context_parent_class)->setup(ec); } ec->shape_editor = new ShapeEditor(ec->desktop); @@ -259,8 +236,8 @@ static gint sp_box3d_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_box3d_context_parent_class)->item_handler) { + ret = ((SPEventContextClass *) sp_box3d_context_parent_class)->item_handler(event_context, item, event); } return ret; @@ -572,8 +549,8 @@ static gint sp_box3d_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_box3d_context_parent_class)->root_handler) { + ret = ((SPEventContextClass *) sp_box3d_context_parent_class)->root_handler(event_context, event); } } diff --git a/src/common-context.cpp b/src/common-context.cpp index 9d5dbb048..ff99b5c0b 100644 --- a/src/common-context.cpp +++ b/src/common-context.cpp @@ -19,8 +19,6 @@ #define DRAG_MAX 1.0 -static void sp_common_context_class_init(SPCommonContextClass *klass); -static void sp_common_context_init(SPCommonContext *erc); static void sp_common_context_dispose(GObject *object); static void sp_common_context_setup(SPEventContext *ec); @@ -28,38 +26,13 @@ static void sp_common_context_set(SPEventContext *ec, Inkscape::Preferences::Ent static gint sp_common_context_root_handler(SPEventContext *event_context, GdkEvent *event); - -static SPEventContextClass *common_parent_class = 0; - -GType sp_common_context_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPCommonContextClass), - 0, // base_init - 0, // base_finalize - (GClassInitFunc)sp_common_context_class_init, - 0, // class_finalize - 0, // class_data - sizeof(SPCommonContext), - 0, // n_preallocs - (GInstanceInitFunc)sp_common_context_init, - 0 // value_table - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPCommonContext", &info, static_cast<GTypeFlags>(0)); - } - return type; -} - +G_DEFINE_TYPE(SPCommonContext, sp_common_context, SP_TYPE_EVENT_CONTEXT); static void sp_common_context_class_init(SPCommonContextClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass); - common_parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass)); - object_class->dispose = sp_common_context_dispose; event_context_class->setup = sp_common_context_setup; @@ -144,14 +117,14 @@ static void sp_common_context_dispose(GObject *object) ctx->_message_context = 0; } - G_OBJECT_CLASS(common_parent_class)->dispose(object); + G_OBJECT_CLASS(sp_common_context_parent_class)->dispose(object); } static void sp_common_context_setup(SPEventContext *ec) { - if ( common_parent_class->setup ) { - common_parent_class->setup(ec); + if ( SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->setup ) { + SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->setup(ec); } } @@ -199,8 +172,8 @@ static gint sp_common_context_root_handler(SPEventContext *event_context, GdkEve if ( !ret ) { - if ( common_parent_class->root_handler ) { - ret = common_parent_class->root_handler(event_context, event); + if ( SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->root_handler ) { + ret = SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->root_handler(event_context, event); } } diff --git a/src/ege-output-action.cpp b/src/ege-output-action.cpp index 1b356c55d..214bd4b29 100644 --- a/src/ege-output-action.cpp +++ b/src/ege-output-action.cpp @@ -46,8 +46,6 @@ #include "ege-output-action.h" -static void ege_output_action_class_init( EgeOutputActionClass* klass ); -static void ege_output_action_init( EgeOutputAction* action ); static void ege_output_action_get_property( GObject* obj, guint propId, GValue* value, GParamSpec * pspec ); static void ege_output_action_set_property( GObject* obj, guint propId, const GValue *value, GParamSpec* pspec ); static void fixup_labels( GObject *gobject, GParamSpec *arg1, gpointer user_data ); @@ -55,9 +53,6 @@ static void fixup_labels( GObject *gobject, GParamSpec *arg1, gpointer user_data /* static GtkWidget* create_menu_item( GtkAction* action ); */ static GtkWidget* create_tool_item( GtkAction* action ); -static GtkActionClass* gParentClass = 0; - - struct _EgeOutputActionPrivate { gboolean useMarkup; @@ -69,34 +64,12 @@ enum { PROP_USE_MARKUP = 1, }; -GType ege_output_action_get_type( void ) -{ - static GType myType = 0; - if ( !myType ) { - static const GTypeInfo myInfo = { - sizeof( EgeOutputActionClass ), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc)ege_output_action_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof( EgeOutputAction ), - 0, /* n_preallocs */ - (GInstanceInitFunc)ege_output_action_init, - NULL - }; - - myType = g_type_register_static( GTK_TYPE_ACTION, "EgeOutputAction", &myInfo, (GTypeFlags)0 ); - } - - return myType; -} +G_DEFINE_TYPE(EgeOutputAction, ege_output_action, GTK_TYPE_ACTION); void ege_output_action_class_init( EgeOutputActionClass* klass ) { if ( klass ) { GObjectClass* objClass = G_OBJECT_CLASS( klass ); - gParentClass = GTK_ACTION_CLASS( g_type_class_peek_parent( klass ) ); objClass->get_property = ege_output_action_get_property; objClass->set_property = ege_output_action_set_property; @@ -228,7 +201,7 @@ GtkWidget* create_tool_item( GtkAction* action ) g_value_unset( &value ); } else { - item = gParentClass->create_tool_item( action ); + item = GTK_ACTION_CLASS(ege_output_action_parent_class)->create_tool_item( action ); } return item; diff --git a/src/event-context.cpp b/src/event-context.cpp index 71d4a5fb9..4e5917afa 100644 --- a/src/event-context.cpp +++ b/src/event-context.cpp @@ -54,8 +54,6 @@ #include "sp-guide.h" #include "color.h" -static void sp_event_context_class_init(SPEventContextClass *klass); -static void sp_event_context_init(SPEventContext *event_context); static void sp_event_context_dispose(GObject *object); static void sp_event_context_private_setup(SPEventContext *ec); @@ -66,8 +64,6 @@ static gint sp_event_context_private_item_handler( static void set_event_location(SPDesktop * desktop, GdkEvent * event); -static GObjectClass *parent_class; - // globals for temporary switching to selector by space static bool selector_toggled = FALSE; static int switch_selector_to = 0; @@ -85,22 +81,7 @@ static guint32 scroll_event_time = 0; static gdouble scroll_multiply = 1; static guint scroll_keyval = 0; -/** - * Registers the SPEventContext class with Glib and returns its type number. - */ -GType sp_event_context_get_type(void) { - static GType type = 0; - if (!type) { - GTypeInfo info = { sizeof(SPEventContextClass), NULL, NULL, - (GClassInitFunc) sp_event_context_class_init, NULL, NULL, - sizeof(SPEventContext), 4, - (GInstanceInitFunc) sp_event_context_init, NULL, /* value_table */ - }; - type = g_type_register_static(G_TYPE_OBJECT, "SPEventContext", &info, - (GTypeFlags) 0); - } - return type; -} +G_DEFINE_TYPE(SPEventContext, sp_event_context, G_TYPE_OBJECT); /** * Callback to set up the SPEventContext vtable. @@ -108,8 +89,6 @@ GType sp_event_context_get_type(void) { static void sp_event_context_class_init(SPEventContextClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); - parent_class = G_OBJECT_CLASS(g_type_class_peek_parent(klass)); - object_class->dispose = sp_event_context_dispose; klass->setup = sp_event_context_private_setup; @@ -166,7 +145,7 @@ static void sp_event_context_dispose(GObject *object) { delete ec->_delayed_snap_event; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_event_context_parent_class)->dispose(object); } /** diff --git a/src/measure-context.cpp b/src/measure-context.cpp index 7a04b9915..dc23cf5c6 100644 --- a/src/measure-context.cpp +++ b/src/measure-context.cpp @@ -47,16 +47,12 @@ using Inkscape::ControlManager; using Inkscape::CTLINE_SECONDARY; -static void sp_measure_context_class_init(SPMeasureContextClass *klass); -static void sp_measure_context_init(SPMeasureContext *measure_context); static void sp_measure_context_setup(SPEventContext *ec); static void sp_measure_context_finish(SPEventContext *ec); static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEvent *event); static gint sp_measure_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event); -static SPEventContextClass *parent_class; - static gint xp = 0; // where drag started static gint yp = 0; static gint tolerance = 0; @@ -68,26 +64,7 @@ boost::optional<Geom::Point> lastEnd; std::vector<Inkscape::Display::TemporaryItem*> measure_tmp_items; -GType sp_measure_context_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPMeasureContextClass), - NULL, NULL, - reinterpret_cast<GClassInitFunc>(sp_measure_context_class_init), // TODO needs two params? - NULL, NULL, - sizeof(SPMeasureContext), - 4, - reinterpret_cast<GInstanceInitFunc>(sp_measure_context_init), // TODO needs two params? - NULL, // value_table - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPMeasureContext", &info, static_cast<GTypeFlags>(0)); - } - - return type; -} +G_DEFINE_TYPE(SPMeasureContext, sp_measure_context, SP_TYPE_EVENT_CONTEXT); namespace { @@ -258,8 +235,6 @@ static void sp_measure_context_class_init(SPMeasureContextClass *klass) { SPEventContextClass *event_context_class = reinterpret_cast<SPEventContextClass *>(klass); - parent_class = static_cast<SPEventContextClass*>(g_type_class_peek_parent(klass)); - event_context_class->setup = sp_measure_context_setup; event_context_class->finish = sp_measure_context_finish; @@ -290,8 +265,8 @@ static void sp_measure_context_finish(SPEventContext *ec) static void sp_measure_context_setup(SPEventContext *ec) { - if (parent_class->setup) { - parent_class->setup(ec); + if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->setup) { + SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->setup(ec); } } @@ -299,8 +274,8 @@ static gint sp_measure_context_item_handler(SPEventContext *event_context, SPIte { gint ret = FALSE; - if (parent_class->item_handler) { - ret = parent_class->item_handler(event_context, item, event); + if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->item_handler) { + ret = SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->item_handler(event_context, item, event); } return ret; @@ -789,8 +764,8 @@ static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEv } if (!ret) { - if (parent_class->root_handler) { - ret = parent_class->root_handler(event_context, event); + if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->root_handler) { + ret = SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->root_handler(event_context, event); } } diff --git a/src/pen-context.cpp b/src/pen-context.cpp index cb20eb3eb..6e3ed201e 100644 --- a/src/pen-context.cpp +++ b/src/pen-context.cpp @@ -47,9 +47,6 @@ using Inkscape::ControlManager; - -static void sp_pen_context_class_init(SPPenContextClass *klass); -static void sp_pen_context_init(SPPenContext *pc); static void sp_pen_context_dispose(GObject *object); static void sp_pen_context_setup(SPEventContext *ec); @@ -78,35 +75,12 @@ static void pen_enable_events(SPPenContext *const pc); static Geom::Point pen_drag_origin_w(0, 0); static bool pen_within_tolerance = false; -static SPDrawContextClass *pen_parent_class; - static int pen_next_paraxial_direction(const SPPenContext *const pc, Geom::Point const &pt, Geom::Point const &origin, guint state); static void pen_set_to_nearest_horiz_vert(const SPPenContext *const pc, Geom::Point &pt, guint const state, bool snap); static int pen_last_paraxial_dir = 0; // last used direction in horizontal/vertical mode; 0 = horizontal, 1 = vertical - -/** - * Register SPPenContext with Gdk and return its type. - */ -GType sp_pen_context_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPPenContextClass), - NULL, NULL, - (GClassInitFunc) sp_pen_context_class_init, - NULL, NULL, - sizeof(SPPenContext), - 4, - (GInstanceInitFunc) sp_pen_context_init, - NULL, // value_table - }; - type = g_type_register_static(SP_TYPE_DRAW_CONTEXT, "SPPenContext", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPPenContext, sp_pen_context, SP_TYPE_DRAW_CONTEXT); /** * Initialize the SPPenContext vtable. @@ -119,8 +93,6 @@ static void sp_pen_context_class_init(SPPenContextClass *klass) object_class = (GObjectClass *) klass; event_context_class = (SPEventContextClass *) klass; - pen_parent_class = (SPDrawContextClass*)g_type_class_peek_parent(klass); - object_class->dispose = sp_pen_context_dispose; event_context_class->setup = sp_pen_context_setup; @@ -181,7 +153,7 @@ static void sp_pen_context_dispose(GObject *object) pc->cl1 = NULL; } - G_OBJECT_CLASS(pen_parent_class)->dispose(object); + G_OBJECT_CLASS(sp_pen_context_parent_class)->dispose(object); if (pc->expecting_clicks_for_LPE > 0) { // we received too few clicks to sanely set the parameter path so we remove the LPE from the item @@ -203,8 +175,8 @@ static void sp_pen_context_setup(SPEventContext *ec) { SPPenContext *pc = SP_PEN_CONTEXT(ec); - if (((SPEventContextClass *) pen_parent_class)->setup) { - ((SPEventContextClass *) pen_parent_class)->setup(ec); + if (((SPEventContextClass *) sp_pen_context_parent_class)->setup) { + ((SPEventContextClass *) sp_pen_context_parent_class)->setup(ec); } ControlManager &mgr = ControlManager::getManager(); @@ -265,8 +237,8 @@ static void sp_pen_context_finish(SPEventContext *ec) pen_cancel (pc); } - if (((SPEventContextClass *) pen_parent_class)->finish) { - ((SPEventContextClass *) pen_parent_class)->finish(ec); + if (((SPEventContextClass *) sp_pen_context_parent_class)->finish) { + ((SPEventContextClass *) sp_pen_context_parent_class)->finish(ec); } } @@ -347,8 +319,8 @@ static gint sp_pen_context_item_handler(SPEventContext *ec, SPItem *item, GdkEve } if (!ret) { - if (((SPEventContextClass *) pen_parent_class)->item_handler) - ret = ((SPEventContextClass *) pen_parent_class)->item_handler(ec, item, event); + if (((SPEventContextClass *) sp_pen_context_parent_class)->item_handler) + ret = ((SPEventContextClass *) sp_pen_context_parent_class)->item_handler(ec, item, event); } return ret; @@ -390,7 +362,7 @@ static gint sp_pen_context_root_handler(SPEventContext *ec, GdkEvent *event) if (!ret) { gint (*const parent_root_handler)(SPEventContext *, GdkEvent *) - = ((SPEventContextClass *) pen_parent_class)->root_handler; + = ((SPEventContextClass *) sp_pen_context_parent_class)->root_handler; if (parent_root_handler) { ret = parent_root_handler(ec, event); } diff --git a/src/persp3d.cpp b/src/persp3d.cpp index a20537d95..2744efb75 100644 --- a/src/persp3d.cpp +++ b/src/persp3d.cpp @@ -27,9 +27,6 @@ using Inkscape::DocumentUndo; -static void persp3d_class_init(Persp3DClass *klass); -static void persp3d_init(Persp3D *persp); - static void persp3d_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void persp3d_release(SPObject *object); static void persp3d_set(SPObject *object, unsigned key, gchar const *value); @@ -41,8 +38,6 @@ static void persp3d_on_repr_attr_changed (Inkscape::XML::Node * repr, const gcha static void persp3d_update_with_point (Persp3DImpl *persp_impl, Proj::Axis const axis, Proj::Pt2 const &new_image); static gchar * persp3d_pt_to_str (Persp3DImpl *persp_impl, Proj::Axis const axis); -static SPObjectClass *persp3d_parent_class; - static int global_counter = 0; /* Constructor/destructor for the internal class */ @@ -54,28 +49,7 @@ Persp3DImpl::Persp3DImpl() { my_counter = global_counter++; } -/** - * Registers Persp3d class and returns its type. - */ -GType -persp3d_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(Persp3DClass), - NULL, NULL, - (GClassInitFunc) persp3d_class_init, - NULL, NULL, - sizeof(Persp3D), - 16, - (GInstanceInitFunc) persp3d_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "Persp3D", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(Persp3D, persp3d, SP_TYPE_OBJECT); static Inkscape::XML::NodeEventVector const persp3d_repr_events = { NULL, /* child_added */ @@ -92,8 +66,6 @@ static void persp3d_class_init(Persp3DClass *klass) { SPObjectClass *sp_object_class = (SPObjectClass *) klass; - persp3d_parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = persp3d_build; sp_object_class->release = persp3d_release; sp_object_class->set = persp3d_set; diff --git a/src/rect-context.cpp b/src/rect-context.cpp index 33ccee93c..040127ae3 100644 --- a/src/rect-context.cpp +++ b/src/rect-context.cpp @@ -49,8 +49,6 @@ using Inkscape::DocumentUndo; //static const double goldenratio = 1.61803398874989484820; // golden ratio -static void sp_rect_context_class_init(SPRectContextClass *klass); -static void sp_rect_context_init(SPRectContext *rect_context); static void sp_rect_context_dispose(GObject *object); static void sp_rect_context_setup(SPEventContext *ec); @@ -64,35 +62,13 @@ static void sp_rect_drag(SPRectContext &rc, Geom::Point const pt, guint state); static void sp_rect_finish(SPRectContext *rc); static void sp_rect_cancel(SPRectContext *rc); -static SPEventContextClass *parent_class; - - -GType sp_rect_context_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPRectContextClass), - NULL, NULL, - (GClassInitFunc) sp_rect_context_class_init, - NULL, NULL, - sizeof(SPRectContext), - 4, - (GInstanceInitFunc) sp_rect_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPRectContext", &info, (GTypeFlags) 0); - } - return type; -} +G_DEFINE_TYPE(SPRectContext, sp_rect_context, SP_TYPE_EVENT_CONTEXT); static void sp_rect_context_class_init(SPRectContextClass *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_rect_context_dispose; event_context_class->setup = sp_rect_context_setup; @@ -133,8 +109,8 @@ static void sp_rect_context_finish(SPEventContext *ec) sp_rect_finish(rc); rc->sel_changed_connection.disconnect(); - if (((SPEventContextClass *) parent_class)->finish) { - ((SPEventContextClass *) parent_class)->finish(ec); + if (((SPEventContextClass *) sp_rect_context_parent_class)->finish) { + ((SPEventContextClass *) sp_rect_context_parent_class)->finish(ec); } } @@ -161,7 +137,7 @@ static void sp_rect_context_dispose(GObject *object) delete rc->_message_context; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_rect_context_parent_class)->dispose(object); } /** @@ -182,8 +158,8 @@ static void sp_rect_context_setup(SPEventContext *ec) { SPRectContext *rc = SP_RECT_CONTEXT(ec); - if (((SPEventContextClass *) parent_class)->setup) { - ((SPEventContextClass *) parent_class)->setup(ec); + if (((SPEventContextClass *) sp_rect_context_parent_class)->setup) { + ((SPEventContextClass *) sp_rect_context_parent_class)->setup(ec); } ec->shape_editor = new ShapeEditor(ec->desktop); @@ -245,8 +221,8 @@ static gint sp_rect_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_rect_context_parent_class)->item_handler) { + ret = ((SPEventContextClass *) sp_rect_context_parent_class)->item_handler(event_context, item, event); } return ret; @@ -458,8 +434,8 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent } if (!ret) { - if (((SPEventContextClass *) parent_class)->root_handler) { - ret = ((SPEventContextClass *) parent_class)->root_handler(event_context, event); + if (((SPEventContextClass *) sp_rect_context_parent_class)->root_handler) { + ret = ((SPEventContextClass *) sp_rect_context_parent_class)->root_handler(event_context, event); } } diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index dc5b1d8bd..1d95c2f8a 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -34,8 +34,6 @@ #include "display/drawing-text.h" -static void sp_flowtext_class_init(SPFlowtextClass *klass); -static void sp_flowtext_init(SPFlowtext *group); static void sp_flowtext_dispose(GObject *object); static void sp_flowtext_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref); @@ -53,29 +51,7 @@ static void sp_flowtext_snappoints(SPItem const *item, std::vector<Inkscape::Sna static Inkscape::DrawingItem *sp_flowtext_show(SPItem *item, Inkscape::Drawing &drawing, unsigned key, unsigned flags); static void sp_flowtext_hide(SPItem *item, unsigned key); -static SPItemClass *parent_class; - -GType -sp_flowtext_get_type(void) -{ - static GType group_type = 0; - if (!group_type) { - GTypeInfo group_info = { - sizeof(SPFlowtextClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_flowtext_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPFlowtext), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_flowtext_init, - NULL, /* value_table */ - }; - group_type = g_type_register_static(SP_TYPE_ITEM, "SPFlowtext", &group_info, (GTypeFlags)0); - } - return group_type; -} +G_DEFINE_TYPE(SPFlowtext, sp_flowtext, SP_TYPE_ITEM); static void sp_flowtext_class_init(SPFlowtextClass *klass) @@ -84,8 +60,6 @@ sp_flowtext_class_init(SPFlowtextClass *klass) SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPItemClass *item_class = (SPItemClass *) klass; - parent_class = (SPItemClass *)g_type_class_ref(SP_TYPE_ITEM); - object_class->dispose = sp_flowtext_dispose; sp_object_class->child_added = sp_flowtext_child_added; @@ -122,8 +96,8 @@ sp_flowtext_dispose(GObject *object) static void sp_flowtext_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - if (((SPObjectClass *) (parent_class))->child_added) - (* ((SPObjectClass *) (parent_class))->child_added)(object, child, ref); + if (((SPObjectClass *) (sp_flowtext_parent_class))->child_added) + (* ((SPObjectClass *) (sp_flowtext_parent_class))->child_added)(object, child, ref); object->requestModified(SP_OBJECT_MODIFIED_FLAG); } @@ -133,8 +107,8 @@ sp_flowtext_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape:: static void sp_flowtext_remove_child(SPObject *object, Inkscape::XML::Node *child) { - if (((SPObjectClass *) (parent_class))->remove_child) - (* ((SPObjectClass *) (parent_class))->remove_child)(object, child); + if (((SPObjectClass *) (sp_flowtext_parent_class))->remove_child) + (* ((SPObjectClass *) (sp_flowtext_parent_class))->remove_child)(object, child); object->requestModified(SP_OBJECT_MODIFIED_FLAG); } @@ -145,8 +119,8 @@ static void sp_flowtext_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_flowtext_parent_class))->update) { + ((SPObjectClass *) (sp_flowtext_parent_class))->update(object, ctx, flags); } if (flags & SP_OBJECT_MODIFIED_FLAG) flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -225,8 +199,8 @@ sp_flowtext_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *r { object->_requireSVGVersion(Inkscape::Version(1, 2)); - if (((SPObjectClass *) (parent_class))->build) { - (* ((SPObjectClass *) (parent_class))->build)(object, document, repr); + if (((SPObjectClass *) (sp_flowtext_parent_class))->build) { + (* ((SPObjectClass *) (sp_flowtext_parent_class))->build)(object, document, repr); } object->readAttr( "inkscape:layoutOptions" ); // must happen after css has been read @@ -284,8 +258,8 @@ sp_flowtext_set(SPObject *object, unsigned key, gchar const *value) break; } default: - if (((SPObjectClass *) (parent_class))->set) { - (* ((SPObjectClass *) (parent_class))->set)(object, key, value); + if (((SPObjectClass *) (sp_flowtext_parent_class))->set) { + (* ((SPObjectClass *) (sp_flowtext_parent_class))->set)(object, key, value); } break; } @@ -320,8 +294,8 @@ static Inkscape::XML::Node *sp_flowtext_write(SPObject *object, Inkscape::XML::D } } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_flowtext_parent_class))->write) { + ((SPObjectClass *) (sp_flowtext_parent_class))->write(object, xml_doc, repr, flags); } return repr; @@ -404,8 +378,8 @@ sp_flowtext_show(SPItem *item, Inkscape::Drawing &drawing, unsigned/* key*/, uns static void sp_flowtext_hide(SPItem *item, unsigned int key) { - if (((SPItemClass *) parent_class)->hide) - ((SPItemClass *) parent_class)->hide(item, key); + if (((SPItemClass *) sp_flowtext_parent_class)->hide) + ((SPItemClass *) sp_flowtext_parent_class)->hide(item, key); } diff --git a/src/sp-glyph.cpp b/src/sp-glyph.cpp index 719375688..e14ef8667 100644 --- a/src/sp-glyph.cpp +++ b/src/sp-glyph.cpp @@ -23,46 +23,18 @@ #include "document.h" #include <cstring> -static void sp_glyph_class_init(SPGlyphClass *gc); -static void sp_glyph_init(SPGlyph *glyph); - static void sp_glyph_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_glyph_release(SPObject *object); static void sp_glyph_set(SPObject *object, unsigned int key, const gchar *value); static Inkscape::XML::Node *sp_glyph_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); static void sp_glyph_update(SPObject *object, SPCtx *ctx, guint flags); -static SPObjectClass *parent_class; - -GType sp_glyph_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPGlyphClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_glyph_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPGlyph), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_glyph_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPGlyph", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPGlyph, sp_glyph, SP_TYPE_OBJECT); static void sp_glyph_class_init(SPGlyphClass *gc) { SPObjectClass *sp_object_class = (SPObjectClass *) gc; - parent_class = (SPObjectClass*)g_type_class_peek_parent(gc); - sp_object_class->build = sp_glyph_build; sp_object_class->release = sp_glyph_release; sp_object_class->set = sp_glyph_set; @@ -88,8 +60,8 @@ static void sp_glyph_init(SPGlyph *glyph) static void sp_glyph_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (parent_class))->build) { - ((SPObjectClass *) (parent_class))->build(object, document, repr); + if (((SPObjectClass *) (sp_glyph_parent_class))->build) { + ((SPObjectClass *) (sp_glyph_parent_class))->build(object, document, repr); } object->readAttr( "unicode" ); @@ -108,8 +80,8 @@ static void sp_glyph_release(SPObject *object) { //SPGlyph *glyph = SP_GLYPH(object); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_glyph_parent_class)->release) { + ((SPObjectClass *) sp_glyph_parent_class)->release(object); } } @@ -233,8 +205,8 @@ static void sp_glyph_set(SPObject *object, unsigned int key, const gchar *value) } default: { - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); + if (((SPObjectClass *) (sp_glyph_parent_class))->set) { + ((SPObjectClass *) (sp_glyph_parent_class))->set(object, key, value); } break; } @@ -264,8 +236,8 @@ sp_glyph_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_glyph_parent_class)->update) { + ((SPObjectClass *) sp_glyph_parent_class)->update(object, ctx, flags); } } @@ -306,8 +278,8 @@ static Inkscape::XML::Node *sp_glyph_write(SPObject *object, Inkscape::XML::Docu 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_glyph_parent_class))->write) { + ((SPObjectClass *) (sp_glyph_parent_class))->write(object, xml_doc, repr, flags); } return repr; diff --git a/src/sp-missing-glyph.cpp b/src/sp-missing-glyph.cpp index fdf75253e..bdf993e5b 100644 --- a/src/sp-missing-glyph.cpp +++ b/src/sp-missing-glyph.cpp @@ -21,45 +21,17 @@ #include "sp-missing-glyph.h" #include "document.h" -static void sp_missing_glyph_class_init(SPMissingGlyphClass *gc); -static void sp_missing_glyph_init(SPMissingGlyph *glyph); - static void sp_missing_glyph_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_missing_glyph_release(SPObject *object); static void sp_missing_glyph_set(SPObject *object, unsigned int key, const gchar *value); static Inkscape::XML::Node *sp_missing_glyph_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static SPObjectClass *parent_class; - -GType sp_missing_glyph_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPMissingGlyphClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_missing_glyph_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPMissingGlyph), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_missing_glyph_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPMissingGlyph", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPMissingGlyph, sp_missing_glyph, SP_TYPE_OBJECT); static void sp_missing_glyph_class_init(SPMissingGlyphClass *gc) { SPObjectClass *sp_object_class = (SPObjectClass *) gc; - parent_class = (SPObjectClass*)g_type_class_peek_parent(gc); - sp_object_class->build = sp_missing_glyph_build; sp_object_class->release = sp_missing_glyph_release; sp_object_class->set = sp_missing_glyph_set; @@ -78,8 +50,8 @@ static void sp_missing_glyph_init(SPMissingGlyph *glyph) static void sp_missing_glyph_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (parent_class))->build) { - ((SPObjectClass *) (parent_class))->build(object, document, repr); + if (((SPObjectClass *) (sp_missing_glyph_parent_class))->build) { + ((SPObjectClass *) (sp_missing_glyph_parent_class))->build(object, document, repr); } object->readAttr( "d" ); @@ -93,8 +65,8 @@ static void sp_missing_glyph_release(SPObject *object) { //SPMissingGlyph *glyph = SP_MISSING_GLYPH(object); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_missing_glyph_parent_class)->release) { + ((SPObjectClass *) sp_missing_glyph_parent_class)->release(object); } } @@ -150,8 +122,8 @@ static void sp_missing_glyph_set(SPObject *object, unsigned int key, const gchar } default: { - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); + if (((SPObjectClass *) (sp_missing_glyph_parent_class))->set) { + ((SPObjectClass *) (sp_missing_glyph_parent_class))->set(object, key, value); } break; } @@ -186,8 +158,8 @@ static Inkscape::XML::Node *sp_missing_glyph_write(SPObject *object, Inkscape::X 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_missing_glyph_parent_class))->write) { + ((SPObjectClass *) (sp_missing_glyph_parent_class))->write(object, xml_doc, repr, flags); } return repr; diff --git a/src/sp-object.h b/src/sp-object.h index b3f3e6c2f..5828eda13 100644 --- a/src/sp-object.h +++ b/src/sp-object.h @@ -800,10 +800,7 @@ private: public: - /** - * Registers the SPObject class with Gdk and returns its type number. - */ - static GType get_type(); + static GType get_type() {return sp_object_get_type();} /** * Callback for attr_changed node event. diff --git a/src/sp-offset.cpp b/src/sp-offset.cpp index bc8a46252..95511aea3 100644 --- a/src/sp-offset.cpp +++ b/src/sp-offset.cpp @@ -68,8 +68,6 @@ class SPDocument; * radius (look in object-edit). */ -static void sp_offset_class_init (SPOffsetClass * klass); -static void sp_offset_init (SPOffset * offset); static void sp_offset_finalize(GObject *obj); static void sp_offset_build (SPObject * object, SPDocument * document, @@ -102,38 +100,7 @@ static void sp_offset_source_modified (SPObject *iSource, guint flags, SPItem *i // reappearing in offset when the radius becomes too large static bool use_slow_but_correct_offset_method=false; - -// nothing special here, same for every class in sodipodi/inkscape -static SPShapeClass *parent_class; - -/** - * Register SPOffset class and return its type number. - */ -GType -sp_offset_get_type (void) -{ - static GType offset_type = 0; - - if (!offset_type) - { - GTypeInfo offset_info = { - sizeof (SPOffsetClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_offset_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (SPOffset), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_offset_init, - NULL, /* value_table */ - }; - offset_type = - g_type_register_static (SP_TYPE_SHAPE, "SPOffset", &offset_info, - (GTypeFlags) 0); - } - return offset_type; -} +G_DEFINE_TYPE(SPOffset, sp_offset, SP_TYPE_SHAPE); /** * SPOffset vtable initialization. @@ -146,8 +113,6 @@ sp_offset_class_init(SPOffsetClass *klass) SPItemClass *item_class = (SPItemClass *) klass; SPShapeClass *shape_class = (SPShapeClass *) klass; - parent_class = (SPShapeClass *) g_type_class_ref (SP_TYPE_SHAPE); - gobject_class->finalize = sp_offset_finalize; sp_object_class->build = sp_offset_build; @@ -213,8 +178,8 @@ sp_offset_finalize(GObject *obj) static void sp_offset_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) parent_class)->build) - ((SPObjectClass *) parent_class)->build (object, document, repr); + if (((SPObjectClass *) sp_offset_parent_class)->build) + ((SPObjectClass *) sp_offset_parent_class)->build (object, document, repr); //XML Tree being used directly here while it shouldn't be. if (object->getRepr()->attribute("inkscape:radius")) { @@ -290,8 +255,8 @@ sp_offset_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XM repr->setAttribute("d", d); g_free (d); - if (((SPObjectClass *) (parent_class))->write) - ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, + if (((SPObjectClass *) (sp_offset_parent_class))->write) + ((SPObjectClass *) (sp_offset_parent_class))->write (object, xml_doc, repr, flags | SP_SHAPE_WRITE_PATH); return repr; @@ -317,8 +282,8 @@ sp_offset_release(SPObject *object) offset->sourceHref = NULL; offset->sourceRef->detach(); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release (object); + if (((SPObjectClass *) sp_offset_parent_class)->release) { + ((SPObjectClass *) sp_offset_parent_class)->release (object); } } @@ -389,8 +354,8 @@ sp_offset_set(SPObject *object, unsigned key, gchar const *value) } break; default: - if (((SPObjectClass *) parent_class)->set) - ((SPObjectClass *) parent_class)->set (object, key, value); + if (((SPObjectClass *) sp_offset_parent_class)->set) + ((SPObjectClass *) sp_offset_parent_class)->set (object, key, value); break; } } @@ -411,8 +376,8 @@ sp_offset_update(SPObject *object, SPCtx *ctx, guint flags) } offset->isUpdating=false; - if (((SPObjectClass *) parent_class)->update) - ((SPObjectClass *) parent_class)->update (object, ctx, flags); + if (((SPObjectClass *) sp_offset_parent_class)->update) + ((SPObjectClass *) sp_offset_parent_class)->update (object, ctx, flags); } /** @@ -725,8 +690,8 @@ sp_offset_set_shape(SPShape *shape) */ static void sp_offset_snappoints(SPItem const *item, std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) { - if (((SPItemClass *) parent_class)->snappoints) { - ((SPItemClass *) parent_class)->snappoints (item, p, snapprefs); + if (((SPItemClass *) sp_offset_parent_class)->snappoints) { + ((SPItemClass *) sp_offset_parent_class)->snappoints (item, p, snapprefs); } } diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index ae4a60ba6..298b39117 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -20,12 +20,8 @@ #include "sp-gradient.h" #include "xml/node.h" -static void sp_paint_server_class_init(SPPaintServerClass *psc); - static cairo_pattern_t *sp_paint_server_create_dummy_pattern(SPPaintServer *ps, cairo_t *ct, Geom::OptRect const &bbox, double opacity); -static SPObjectClass *parent_class; - SPPaintServer *SPPaintServerReference::getObject() const { return static_cast<SPPaintServer *>(URIReference::getObject()); @@ -36,35 +32,15 @@ bool SPPaintServerReference::_acceptObject(SPObject *obj) const return SP_IS_PAINT_SERVER(obj); } -GType SPPaintServer::get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPPaintServerClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_paint_server_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPPaintServer), - 16, /* n_preallocs */ - (GInstanceInitFunc) SPPaintServer::init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPPaintServer", &info, (GTypeFlags) 0); - } - return type; -} +G_DEFINE_TYPE(SPPaintServer, sp_paint_server, SP_TYPE_OBJECT); static void sp_paint_server_class_init(SPPaintServerClass *psc) { psc->pattern_new = sp_paint_server_create_dummy_pattern; - - parent_class = static_cast<SPObjectClass *>(g_type_class_ref(SP_TYPE_OBJECT)); } -void SPPaintServer::init(SPPaintServer * /*ps*/) +static void +sp_paint_server_init(SPPaintServer * /*ps*/) { } diff --git a/src/sp-paint-server.h b/src/sp-paint-server.h index a266ee5a5..f4948dfdb 100644 --- a/src/sp-paint-server.h +++ b/src/sp-paint-server.h @@ -20,24 +20,21 @@ #include "sp-object.h" #include "uri-references.h" -#define SP_TYPE_PAINT_SERVER (SPPaintServer::get_type()) +#define SP_TYPE_PAINT_SERVER (sp_paint_server_get_type()) #define SP_PAINT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_PAINT_SERVER, SPPaintServer)) #define SP_PAINT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_PAINT_SERVER, SPPaintServerClass)) #define SP_IS_PAINT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_PAINT_SERVER)) #define SP_IS_PAINT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_PAINT_SERVER)) +GType sp_paint_server_get_type(void) G_GNUC_CONST; + struct SPPaintServer : public SPObject { protected: bool swatch; public: - static GType get_type(void); - bool isSwatch() const; bool isSolid() const; - -private: - static void init(SPPaintServer *ps); }; struct SPPaintServerClass { diff --git a/src/sp-path.cpp b/src/sp-path.cpp index 107ceac16..478a689e3 100644 --- a/src/sp-path.cpp +++ b/src/sp-path.cpp @@ -51,8 +51,6 @@ #define noPATH_VERBOSE -static void sp_path_class_init(SPPathClass *klass); -static void sp_path_init(SPPath *path); static void sp_path_finalize(GObject *obj); static void sp_path_release(SPObject *object); @@ -67,31 +65,7 @@ static void sp_path_convert_to_guides(SPItem *item); static void sp_path_update(SPObject *object, SPCtx *ctx, guint flags); static void sp_path_update_patheffect(SPLPEItem *lpeitem, bool write); -static SPShapeClass *parent_class; - -/** - * Gets the GType object for SPPathClass - */ -GType -sp_path_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPPathClass), - NULL, NULL, - (GClassInitFunc) sp_path_class_init, - NULL, NULL, - sizeof(SPPath), - 16, - (GInstanceInitFunc) sp_path_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_SHAPE, "SPPath", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPPath, sp_path, SP_TYPE_SHAPE); /** * Does the object-oriented work of initializing the class structure @@ -106,8 +80,6 @@ sp_path_class_init(SPPathClass * klass) SPItemClass *item_class = (SPItemClass *) klass; SPLPEItemClass *lpe_item_class = (SPLPEItemClass *) klass; - parent_class = (SPShapeClass *)g_type_class_peek_parent(klass); - gobject_class->finalize = sp_path_finalize; sp_object_class->build = sp_path_build; @@ -216,8 +188,8 @@ sp_path_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) sp_conn_end_pair_build(object); - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build(object, document, repr); + if (((SPObjectClass *) sp_path_parent_class)->build) { + ((SPObjectClass *) sp_path_parent_class)->build(object, document, repr); } object->readAttr( "inkscape:original-d" ); @@ -237,8 +209,8 @@ sp_path_release(SPObject *object) path->connEndPair.release(); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); + if (((SPObjectClass *) sp_path_parent_class)->release) { + ((SPObjectClass *) sp_path_parent_class)->release(object); } } @@ -294,8 +266,8 @@ sp_path_set(SPObject *object, unsigned int key, gchar const *value) path->connEndPair.setAttr(key, value); break; default: - if (((SPObjectClass *) parent_class)->set) { - ((SPObjectClass *) parent_class)->set(object, key, value); + if (((SPObjectClass *) sp_path_parent_class)->set) { + ((SPObjectClass *) sp_path_parent_class)->set(object, key, value); } break; } @@ -337,8 +309,8 @@ g_message("sp_path_write writes 'd' attribute"); SP_PATH(shape)->connEndPair.writeRepr(repr); - if (((SPObjectClass *)(parent_class))->write) { - ((SPObjectClass *)(parent_class))->write(object, xml_doc, repr, flags); + if (((SPObjectClass *)(sp_path_parent_class))->write) { + ((SPObjectClass *)(sp_path_parent_class))->write(object, xml_doc, repr, flags); } return repr; @@ -351,8 +323,8 @@ sp_path_update(SPObject *object, SPCtx *ctx, guint flags) flags &= ~SP_OBJECT_USER_MODIFIED_FLAG_B; // since we change the description, it's not a "just translation" anymore } - if (((SPObjectClass *) parent_class)->update) { - ((SPObjectClass *) parent_class)->update(object, ctx, flags); + if (((SPObjectClass *) sp_path_parent_class)->update) { + ((SPObjectClass *) sp_path_parent_class)->update(object, ctx, flags); } SPPath *path = SP_PATH(object); diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 2e14ae5ff..da7a575b7 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -7,42 +7,16 @@ #include "style.h" using Inkscape::XML::TEXT_NODE; -static void sp_style_elem_init(SPStyleElem *style_elem); -static void sp_style_elem_class_init(SPStyleElemClass *klass); static void sp_style_elem_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr); static void sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value); static void sp_style_elem_read_content(SPObject *); static Inkscape::XML::Node *sp_style_elem_write(SPObject *, Inkscape::XML::Document *, Inkscape::XML::Node *, guint flags); -static SPObjectClass *parent_class; - -GType -sp_style_elem_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPStyleElemClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_style_elem_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPStyleElem), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_style_elem_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPStyleElem", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPStyleElem, sp_style_elem, SP_TYPE_OBJECT); static void sp_style_elem_class_init(SPStyleElemClass *klass) { - parent_class = (SPObjectClass *)g_type_class_ref(SP_TYPE_OBJECT); /* FIXME */ klass->build = sp_style_elem_build; @@ -89,8 +63,8 @@ sp_style_elem_set(SPObject *object, unsigned const key, gchar const *const value /* title is ignored. */ default: { - if (parent_class->set) { - parent_class->set(object, key, value); + if (SP_OBJECT_CLASS(sp_style_elem_parent_class)->set) { + SP_OBJECT_CLASS(sp_style_elem_parent_class)->set(object, key, value); } break; } @@ -138,8 +112,8 @@ sp_style_elem_write(SPObject *const object, Inkscape::XML::Document *xml_doc, In } /* todo: media */ - if (((SPObjectClass *) parent_class)->write) - ((SPObjectClass *) parent_class)->write(object, xml_doc, repr, flags); + if (((SPObjectClass *) sp_style_elem_parent_class)->write) + ((SPObjectClass *) sp_style_elem_parent_class)->write(object, xml_doc, repr, flags); return repr; } @@ -402,8 +376,8 @@ sp_style_elem_build(SPObject *object, SPDocument *document, Inkscape::XML::Node }; rec_add_listener(*repr, &nodeEventVector, object); - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build(object, document, repr); + if (((SPObjectClass *) sp_style_elem_parent_class)->build) { + ((SPObjectClass *) sp_style_elem_parent_class)->build(object, document, repr); } } diff --git a/src/sp-symbol.cpp b/src/sp-symbol.cpp index 56f862bf3..d4db403e3 100644 --- a/src/sp-symbol.cpp +++ b/src/sp-symbol.cpp @@ -26,9 +26,6 @@ #include "sp-symbol.h" #include "document.h" -static void sp_symbol_class_init (SPSymbolClass *klass); -static void sp_symbol_init (SPSymbol *symbol); - static void sp_symbol_build (SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_symbol_release (SPObject *object); static void sp_symbol_set (SPObject *object, unsigned int key, const gchar *value); @@ -42,35 +39,13 @@ static void sp_symbol_hide (SPItem *item, unsigned int key); static Geom::OptRect sp_symbol_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type); static void sp_symbol_print (SPItem *item, SPPrintContext *ctx); -static SPGroupClass *parent_class; - -GType -sp_symbol_get_type (void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof (SPSymbolClass), - NULL, NULL, - (GClassInitFunc) sp_symbol_class_init, - NULL, NULL, - sizeof (SPSymbol), - 16, - (GInstanceInitFunc) sp_symbol_init, - NULL, /* value_table */ - }; - type = g_type_register_static (SP_TYPE_GROUP, "SPSymbol", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPSymbol, sp_symbol, SP_TYPE_GROUP); static void sp_symbol_class_init(SPSymbolClass *klass) { SPObjectClass *sp_object_class = (SPObjectClass *) klass; SPItemClass *sp_item_class = (SPItemClass *) klass; - parent_class = (SPGroupClass *)g_type_class_ref (SP_TYPE_GROUP); - sp_object_class->build = sp_symbol_build; sp_object_class->release = sp_symbol_release; sp_object_class->set = sp_symbol_set; @@ -97,15 +72,15 @@ static void sp_symbol_build(SPObject *object, SPDocument *document, Inkscape::XM object->readAttr( "viewBox" ); object->readAttr( "preserveAspectRatio" ); - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build (object, document, repr); + if (((SPObjectClass *) sp_symbol_parent_class)->build) { + ((SPObjectClass *) sp_symbol_parent_class)->build (object, document, repr); } } static void sp_symbol_release(SPObject *object) { - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release (object); + if (((SPObjectClass *) sp_symbol_parent_class)->release) { + ((SPObjectClass *) sp_symbol_parent_class)->release (object); } } @@ -202,16 +177,16 @@ static void sp_symbol_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_symbol_parent_class)->set) + ((SPObjectClass *) sp_symbol_parent_class)->set (object, key, value); break; } } static void sp_symbol_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - if (((SPObjectClass *) (parent_class))->child_added) { - ((SPObjectClass *) (parent_class))->child_added (object, child, ref); + if (((SPObjectClass *) (sp_symbol_parent_class))->child_added) { + ((SPObjectClass *) (sp_symbol_parent_class))->child_added (object, child, ref); } } @@ -315,8 +290,8 @@ static void sp_symbol_update(SPObject *object, SPCtx *ctx, guint flags) } // And invoke parent method - if (((SPObjectClass *) (parent_class))->update) { - ((SPObjectClass *) (parent_class))->update (object, (SPCtx *) &rctx, flags); + if (((SPObjectClass *) (sp_symbol_parent_class))->update) { + ((SPObjectClass *) (sp_symbol_parent_class))->update (object, (SPCtx *) &rctx, flags); } // As last step set additional transform of drawing group @@ -326,8 +301,8 @@ static void sp_symbol_update(SPObject *object, SPCtx *ctx, guint flags) } } else { // No-op - if (((SPObjectClass *) (parent_class))->update) { - ((SPObjectClass *) (parent_class))->update (object, ctx, flags); + if (((SPObjectClass *) (sp_symbol_parent_class))->update) { + ((SPObjectClass *) (sp_symbol_parent_class))->update (object, ctx, flags); } } } @@ -336,8 +311,8 @@ static void sp_symbol_modified(SPObject *object, guint flags) { SP_SYMBOL(object); - if (((SPObjectClass *) (parent_class))->modified) { - (* ((SPObjectClass *) (parent_class))->modified) (object, flags); + if (((SPObjectClass *) (sp_symbol_parent_class))->modified) { + (* ((SPObjectClass *) (sp_symbol_parent_class))->modified) (object, flags); } } @@ -355,8 +330,8 @@ static Inkscape::XML::Node *sp_symbol_write(SPObject *object, Inkscape::XML::Doc //XML Tree being used directly here while it shouldn't be. repr->setAttribute("preserveAspectRatio", object->getRepr()->attribute("preserveAspectRatio")); - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags); + if (((SPObjectClass *) (sp_symbol_parent_class))->write) { + ((SPObjectClass *) (sp_symbol_parent_class))->write (object, xml_doc, repr, flags); } return repr; @@ -369,8 +344,8 @@ static Inkscape::DrawingItem *sp_symbol_show(SPItem *item, Inkscape::Drawing &dr if (symbol->cloned) { // Cloned <symbol> is actually renderable - if (((SPItemClass *) (parent_class))->show) { - ai = ((SPItemClass *) (parent_class))->show (item, drawing, key, flags); + if (((SPItemClass *) (sp_symbol_parent_class))->show) { + ai = ((SPItemClass *) (sp_symbol_parent_class))->show (item, drawing, key, flags); Inkscape::DrawingGroup *g = dynamic_cast<Inkscape::DrawingGroup *>(ai); if (g) { g->setChildTransform(symbol->c2p); @@ -387,8 +362,8 @@ static void sp_symbol_hide(SPItem *item, unsigned int key) if (symbol->cloned) { /* Cloned <symbol> is actually renderable */ - if (((SPItemClass *) (parent_class))->hide) { - ((SPItemClass *) (parent_class))->hide (item, key); + if (((SPItemClass *) (sp_symbol_parent_class))->hide) { + ((SPItemClass *) (sp_symbol_parent_class))->hide (item, key); } } } @@ -401,15 +376,15 @@ static Geom::OptRect sp_symbol_bbox(SPItem const *item, Geom::Affine const &tran if (symbol->cloned) { // Cloned <symbol> is actually renderable - if (((SPItemClass *) (parent_class))->bbox) { + if (((SPItemClass *) (sp_symbol_parent_class))->bbox) { Geom::Affine const a( symbol->c2p * transform ); - bbox = ((SPItemClass *) (parent_class))->bbox(item, a, type); + bbox = ((SPItemClass *) (sp_symbol_parent_class))->bbox(item, a, type); } } else { // Need bounding box for Symbols dialog Geom::Affine const a; - bbox = ((SPItemClass *) (parent_class))->bbox(item, a, type); + bbox = ((SPItemClass *) (sp_symbol_parent_class))->bbox(item, a, type); } return bbox; } @@ -422,8 +397,8 @@ static void sp_symbol_print(SPItem *item, SPPrintContext *ctx) sp_print_bind(ctx, symbol->c2p, 1.0); - if (((SPItemClass *) (parent_class))->print) { - ((SPItemClass *) (parent_class))->print (item, ctx); + if (((SPItemClass *) (sp_symbol_parent_class))->print) { + ((SPItemClass *) (sp_symbol_parent_class))->print (item, ctx); } sp_print_release (ctx); diff --git a/src/text-context.cpp b/src/text-context.cpp index 90715b805..1ee21e732 100644 --- a/src/text-context.cpp +++ b/src/text-context.cpp @@ -57,8 +57,6 @@ using Inkscape::ControlManager; using Inkscape::DocumentUndo; -static void sp_text_context_class_init(SPTextContextClass *klass); -static void sp_text_context_init(SPTextContext *text_context); static void sp_text_context_dispose(GObject *obj); static void sp_text_context_setup(SPEventContext *ec); @@ -81,34 +79,13 @@ static gint sptc_focus_in(GtkWidget *widget, GdkEventFocus *event, SPTextContext static gint sptc_focus_out(GtkWidget *widget, GdkEventFocus *event, SPTextContext *tc); static void sptc_commit(GtkIMContext *imc, gchar *string, SPTextContext *tc); -static SPEventContextClass *parent_class; - -GType sp_text_context_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPTextContextClass), - NULL, NULL, - (GClassInitFunc) sp_text_context_class_init, - NULL, NULL, - sizeof(SPTextContext), - 4, - (GInstanceInitFunc) sp_text_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPTextContext", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPTextContext, sp_text_context, SP_TYPE_EVENT_CONTEXT); static void sp_text_context_class_init(SPTextContextClass *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_text_context_dispose; event_context_class->setup = sp_text_context_setup; @@ -173,8 +150,8 @@ static void sp_text_context_dispose(GObject *obj) tc->text_sel_end.~iterator(); tc->text_sel_start.~iterator(); tc->text_selection_quads.~vector(); - if (G_OBJECT_CLASS(parent_class)->dispose) { - G_OBJECT_CLASS(parent_class)->dispose(obj); + if (G_OBJECT_CLASS(sp_text_context_parent_class)->dispose) { + G_OBJECT_CLASS(sp_text_context_parent_class)->dispose(obj); } if (tc->grabbed) { sp_canvas_item_ungrab(tc->grabbed, GDK_CURRENT_TIME); @@ -236,8 +213,8 @@ static void sp_text_context_setup(SPEventContext *ec) } } - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) - (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); + if ((SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->setup) + (SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->setup(ec); ec->shape_editor = new ShapeEditor(ec->desktop); @@ -455,8 +432,8 @@ static gint sp_text_context_item_handler(SPEventContext *event_context, SPItem * } if (!ret) { - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler) - ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler(event_context, item, event); + if ((SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->item_handler) + ret = (SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->item_handler(event_context, item, event); } return ret; @@ -1324,8 +1301,8 @@ static gint sp_text_context_root_handler(SPEventContext *const event_context, Gd } // if nobody consumed it so far - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) { // and there's a handler in parent context, - return (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event); // send event to parent + if ((SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->root_handler) { // and there's a handler in parent context, + return (SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->root_handler(event_context, event); // send event to parent } else { return FALSE; // return "I did nothing" value so that global shortcuts can be activated } diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp index 870b9cce1..28e4c1629 100644 --- a/src/tweak-context.cpp +++ b/src/tweak-context.cpp @@ -81,35 +81,13 @@ using Inkscape::DocumentUndo; #define DYNA_MIN_WIDTH 1.0e-6 -static void sp_tweak_context_class_init(SPTweakContextClass *klass); -static void sp_tweak_context_init(SPTweakContext *ddc); static void sp_tweak_context_dispose(GObject *object); static void sp_tweak_context_setup(SPEventContext *ec); static void sp_tweak_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val); static gint sp_tweak_context_root_handler(SPEventContext *ec, GdkEvent *event); -static SPEventContextClass *parent_class; - -GType -sp_tweak_context_get_type(void) -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPTweakContextClass), - NULL, NULL, - (GClassInitFunc) sp_tweak_context_class_init, - NULL, NULL, - sizeof(SPTweakContext), - 4, - (GInstanceInitFunc) sp_tweak_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPTweakContext", &info, (GTypeFlags)0); - } - return type; -} +G_DEFINE_TYPE(SPTweakContext, sp_tweak_context, SP_TYPE_EVENT_CONTEXT); static void sp_tweak_context_class_init(SPTweakContextClass *klass) @@ -117,8 +95,6 @@ sp_tweak_context_class_init(SPTweakContextClass *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_tweak_context_dispose; event_context_class->setup = sp_tweak_context_setup; @@ -173,7 +149,7 @@ sp_tweak_context_dispose(GObject *object) delete tc->_message_context; } - G_OBJECT_CLASS(parent_class)->dispose(object); + G_OBJECT_CLASS(sp_tweak_context_parent_class)->dispose(object); } static bool is_transform_mode (gint mode) @@ -290,8 +266,8 @@ sp_tweak_context_setup(SPEventContext *ec) { SPTweakContext *tc = SP_TWEAK_CONTEXT(ec); - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { - (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); + if ((SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->setup) { + (SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->setup(ec); } { @@ -1535,8 +1511,8 @@ sp_tweak_context_root_handler(SPEventContext *event_context, } 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_tweak_context_parent_class))->root_handler) { + ret = (SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->root_handler(event_context, event); } } diff --git a/src/zoom-context.cpp b/src/zoom-context.cpp index 9311901d3..7a5e4f90e 100644 --- a/src/zoom-context.cpp +++ b/src/zoom-context.cpp @@ -26,48 +26,23 @@ #include "zoom-context.h" -static void sp_zoom_context_class_init(SPZoomContextClass *klass); -static void sp_zoom_context_init(SPZoomContext *zoom_context); static void sp_zoom_context_setup(SPEventContext *ec); static void sp_zoom_context_finish (SPEventContext *ec); static gint sp_zoom_context_root_handler(SPEventContext *event_context, GdkEvent *event); static gint sp_zoom_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event); -static SPEventContextClass *parent_class; - static gint xp = 0, yp = 0; // where drag started static gint tolerance = 0; static bool within_tolerance = false; static bool escaped; -GType sp_zoom_context_get_type(void) -{ - static GType type = 0; - - if (!type) { - GTypeInfo info = { - sizeof(SPZoomContextClass), - NULL, NULL, - (GClassInitFunc) sp_zoom_context_class_init, - NULL, NULL, - sizeof(SPZoomContext), - 4, - (GInstanceInitFunc) sp_zoom_context_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_EVENT_CONTEXT, "SPZoomContext", &info, (GTypeFlags) 0); - } - - return type; -} +G_DEFINE_TYPE(SPZoomContext, sp_zoom_context, SP_TYPE_EVENT_CONTEXT); static void sp_zoom_context_class_init(SPZoomContextClass *klass) { SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass); - parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass)); - event_context_class->setup = sp_zoom_context_setup; event_context_class->finish = sp_zoom_context_finish; @@ -107,8 +82,8 @@ static void sp_zoom_context_setup(SPEventContext *ec) ec->enableGrDrag(); } - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) { - (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec); + if ((SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->setup) { + (SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->setup(ec); } } @@ -116,8 +91,8 @@ static gint sp_zoom_context_item_handler(SPEventContext *event_context, SPItem * { gint ret = FALSE; - if ((SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler) { - ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->item_handler (event_context, item, event); + if ((SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->item_handler) { + ret = (SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->item_handler (event_context, item, event); } return ret; @@ -264,8 +239,8 @@ static gint sp_zoom_context_root_handler(SPEventContext *event_context, GdkEvent } 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_zoom_context_parent_class))->root_handler) { + ret = (SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->root_handler(event_context, event); } } |
