diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-04-06 14:26:39 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-04-06 14:26:39 +0000 |
| commit | 8f5e6d495f0478701218adc8078db5063b710a05 (patch) | |
| tree | cc1fb0bbfbe239c40db179cc4f8b42e66c74603e /src | |
| parent | Merged PaintServer and subclasses; moved Gradient classes to own files. (diff) | |
| download | inkscape-8f5e6d495f0478701218adc8078db5063b710a05.tar.gz inkscape-8f5e6d495f0478701218adc8078db5063b710a05.zip | |
Merged ObjectGroup and subclasses.
(bzr r11608.1.83)
Diffstat (limited to 'src')
| -rw-r--r-- | src/sp-clippath.cpp | 70 | ||||
| -rw-r--r-- | src/sp-clippath.h | 32 | ||||
| -rw-r--r-- | src/sp-mask.cpp | 74 | ||||
| -rw-r--r-- | src/sp-mask.h | 22 | ||||
| -rw-r--r-- | src/sp-namedview.cpp | 129 | ||||
| -rw-r--r-- | src/sp-namedview.h | 25 | ||||
| -rw-r--r-- | src/sp-object-group.cpp | 48 | ||||
| -rw-r--r-- | src/sp-object-group.h | 32 |
8 files changed, 123 insertions, 309 deletions
diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 496a4ed82..17571d195 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -50,46 +50,22 @@ namespace { bool clipPathRegistered = SPFactory::instance().registerObject("svg:clipPath", createClipPath); } -G_DEFINE_TYPE(SPClipPath, sp_clippath, G_TYPE_OBJECT); - -static void -sp_clippath_class_init(SPClipPathClass *klass) -{ -} - -CClipPath::CClipPath(SPClipPath* clippath) : CObjectGroup(clippath) { - this->spclippath = clippath; -} - -CClipPath::~CClipPath() { -} - SPClipPath::SPClipPath() : SPObjectGroup() { - SPClipPath* cp = this; - - cp->cclippath = new CClipPath(cp); - cp->typeHierarchy.insert(typeid(SPClipPath)); + this->cobject = this; - delete cp->cobjectgroup; - cp->cobjectgroup = cp->cclippath; - cp->cobject = cp->cclippath; + this->clipPathUnits_set = FALSE; + this->clipPathUnits = SP_CONTENT_UNITS_USERSPACEONUSE; - cp->clipPathUnits_set = FALSE; - cp->clipPathUnits = SP_CONTENT_UNITS_USERSPACEONUSE; - - cp->display = NULL; + this->display = NULL; } -static void -sp_clippath_init(SPClipPath *cp) -{ - new (cp) SPClipPath(); +SPClipPath::~SPClipPath() { } -void CClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { - SPClipPath* object = this->spclippath; +void SPClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { + SPClipPath* object = this; - CObjectGroup::build(doc, repr); + SPObjectGroup::build(doc, repr); object->readAttr( "style" ); object->readAttr( "clipPathUnits" ); @@ -98,8 +74,8 @@ void CClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { doc->addResource("clipPath", object); } -void CClipPath::release() { - SPClipPath* object = this->spclippath; +void SPClipPath::release() { + SPClipPath* object = this; if (object->document) { // Unregister ourselves @@ -112,11 +88,11 @@ void CClipPath::release() { cp->display = sp_clippath_view_list_remove(cp->display, cp->display); } - CObjectGroup::release(); + SPObjectGroup::release(); } -void CClipPath::set(unsigned int key, const gchar* value) { - SPClipPath* object = this->spclippath; +void SPClipPath::set(unsigned int key, const gchar* value) { + SPClipPath* object = this; SPClipPath *cp = SP_CLIPPATH(object); @@ -139,17 +115,17 @@ void CClipPath::set(unsigned int key, const gchar* value) { sp_style_read_from_object(object->style, object); object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); } else { - CObjectGroup::set(key, value); + SPObjectGroup::set(key, value); } break; } } -void CClipPath::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { - SPClipPath* object = this->spclippath; +void SPClipPath::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { + SPClipPath* object = this; /* Invoke SPObjectGroup implementation */ - CObjectGroup::child_added(child, ref); + SPObjectGroup::child_added(child, ref); /* Show new object */ SPObject *ochild = object->document->getObjectByRepr(child); @@ -166,8 +142,8 @@ void CClipPath::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref } } -void CClipPath::update(SPCtx* ctx, unsigned int flags) { - SPClipPath* object = this->spclippath; +void SPClipPath::update(SPCtx* ctx, unsigned int flags) { + SPClipPath* object = this; if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -204,8 +180,8 @@ void CClipPath::update(SPCtx* ctx, unsigned int flags) { } } -void CClipPath::modified(unsigned int flags) { - SPClipPath* object = this->spclippath; +void SPClipPath::modified(unsigned int flags) { + SPClipPath* object = this; if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -230,12 +206,12 @@ void CClipPath::modified(unsigned int flags) { } } -Inkscape::XML::Node* CClipPath::write(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* SPClipPath::write(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { repr = xml_doc->createElement("svg:clipPath"); } - CObjectGroup::write(xml_doc, repr, flags); + SPObjectGroup::write(xml_doc, repr, flags); return repr; } diff --git a/src/sp-clippath.h b/src/sp-clippath.h index b4b3c669b..331c4f4cd 100644 --- a/src/sp-clippath.h +++ b/src/sp-clippath.h @@ -15,9 +15,8 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#define SP_TYPE_CLIPPATH (sp_clippath_get_type()) #define SP_CLIPPATH(obj) ((SPClipPath*)obj) -#define SP_IS_CLIPPATH(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPClipPath))) +#define SP_IS_CLIPPATH(obj) (dynamic_cast<const SPClipPath*>((SPObject*)obj)) struct SPClipPathView; @@ -25,8 +24,6 @@ struct SPClipPathView; #include "uri-references.h" #include "xml/node.h" -GType sp_clippath_get_type() G_GNUC_CONST; - namespace Inkscape { class Drawing; @@ -34,12 +31,10 @@ class DrawingItem; } // namespace Inkscape -class CClipPath; - class SPClipPath : public SPObjectGroup { public: SPClipPath(); - CClipPath* cclippath; + virtual ~SPClipPath(); class Reference; @@ -56,25 +51,7 @@ public: void setBBox(unsigned int key, Geom::OptRect const &bbox); Geom::OptRect geometricBounds(Geom::Affine const &transform); -private: - friend class SPClipPathClass; -}; - -class SPClipPathClass { -public: - SPObjectGroupClass parent_class; - -private: - friend class SPClipPath; -}; - - -class CClipPath : public CObjectGroup { -public: - CClipPath(SPClipPath* clippath); - virtual ~CClipPath(); - - virtual void build(SPDocument* doc, Inkscape::XML::Node* repr); + virtual void build(SPDocument* doc, Inkscape::XML::Node* repr); virtual void release(); virtual void child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref); @@ -85,9 +62,6 @@ public: virtual void modified(unsigned int flags); virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags); - -protected: - SPClipPath* spclippath; }; diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index 014d40a6a..101c041d2 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -47,49 +47,25 @@ namespace { bool maskRegistered = SPFactory::instance().registerObject("svg:mask", createMask); } -G_DEFINE_TYPE(SPMask, sp_mask, G_TYPE_OBJECT); - -static void -sp_mask_class_init (SPMaskClass *klass) -{ -} - -CMask::CMask(SPMask* mask) : CObjectGroup(mask) { - this->spmask = mask; -} - -CMask::~CMask() { -} - SPMask::SPMask() : SPObjectGroup() { - SPMask* mask = this; - - mask->cmask = new CMask(mask); - mask->typeHierarchy.insert(typeid(SPMask)); + this->cobject = this; - delete mask->cobjectgroup; - mask->cobjectgroup = mask->cmask; - mask->cobject = mask->cmask; + this->maskUnits_set = FALSE; + this->maskUnits = SP_CONTENT_UNITS_OBJECTBOUNDINGBOX; - mask->maskUnits_set = FALSE; - mask->maskUnits = SP_CONTENT_UNITS_OBJECTBOUNDINGBOX; + this->maskContentUnits_set = FALSE; + this->maskContentUnits = SP_CONTENT_UNITS_USERSPACEONUSE; - mask->maskContentUnits_set = FALSE; - mask->maskContentUnits = SP_CONTENT_UNITS_USERSPACEONUSE; - - mask->display = NULL; + this->display = NULL; } -static void -sp_mask_init (SPMask *mask) -{ - new (mask) SPMask(); +SPMask::~SPMask() { } -void CMask::build(SPDocument* doc, Inkscape::XML::Node* repr) { - SPMask* object = this->spmask; +void SPMask::build(SPDocument* doc, Inkscape::XML::Node* repr) { + SPMask* object = this; - CObjectGroup::build(doc, repr); + SPObjectGroup::build(doc, repr); object->readAttr( "maskUnits" ); object->readAttr( "maskContentUnits" ); @@ -98,8 +74,8 @@ void CMask::build(SPDocument* doc, Inkscape::XML::Node* repr) { doc->addResource("mask", object); } -void CMask::release() { - SPMask* object = this->spmask; +void SPMask::release() { + SPMask* object = this; if (object->document) { // Unregister ourselves @@ -112,11 +88,11 @@ void CMask::release() { cp->display = sp_mask_view_list_remove (cp->display, cp->display); } - CObjectGroup::release(); + SPObjectGroup::release(); } -void CMask::set(unsigned int key, const gchar* value) { - SPMask* object = this->spmask; +void SPMask::set(unsigned int key, const gchar* value) { + SPMask* object = this; SPMask *mask = SP_MASK (object); @@ -148,16 +124,16 @@ void CMask::set(unsigned int key, const gchar* value) { object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - CObjectGroup::set(key, value); + SPObjectGroup::set(key, value); break; } } -void CMask::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { - SPMask* object = this->spmask; +void SPMask::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { + SPMask* object = this; /* Invoke SPObjectGroup implementation */ - CObjectGroup::child_added(child, ref); + SPObjectGroup::child_added(child, ref); /* Show new object */ SPObject *ochild = object->document->getObjectByRepr(child); @@ -175,8 +151,8 @@ void CMask::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { } -void CMask::update(SPCtx* ctx, unsigned int flags) { - SPMask* object = this->spmask; +void SPMask::update(SPCtx* ctx, unsigned int flags) { + SPMask* object = this; if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -213,8 +189,8 @@ void CMask::update(SPCtx* ctx, unsigned int flags) { } } -void CMask::modified(unsigned int flags) { - SPMask* object = this->spmask; +void SPMask::modified(unsigned int flags) { + SPMask* object = this; if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -239,12 +215,12 @@ void CMask::modified(unsigned int flags) { } } -Inkscape::XML::Node* CMask::write(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* SPMask::write(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { repr = xml_doc->createElement("svg:mask"); } - CObjectGroup::write(xml_doc, repr, flags); + SPObjectGroup::write(xml_doc, repr, flags); return repr; } diff --git a/src/sp-mask.h b/src/sp-mask.h index bc70d2850..fe029ab56 100644 --- a/src/sp-mask.h +++ b/src/sp-mask.h @@ -18,14 +18,11 @@ #include "uri-references.h" #include "xml/node.h" -#define SP_TYPE_MASK (sp_mask_get_type ()) #define SP_MASK(obj) ((SPMask*)obj) -#define SP_IS_MASK(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPMask))) +#define SP_IS_MASK(obj) (dynamic_cast<const SPMask*>((SPObject*)obj)) struct SPMaskView; -class CMask; - namespace Inkscape { class Drawing; @@ -37,7 +34,7 @@ class DrawingItem; class SPMask : public SPObjectGroup { public: SPMask(); - CMask* cmask; + virtual ~SPMask(); unsigned int maskUnits_set : 1; unsigned int maskUnits : 1; @@ -46,16 +43,6 @@ public: unsigned int maskContentUnits : 1; SPMaskView *display; -}; - -struct SPMaskClass { - SPObjectGroupClass parent_class; -}; - -class CMask : public CObjectGroup { -public: - CMask(SPMask* mask); - virtual ~CMask(); virtual void build(SPDocument* doc, Inkscape::XML::Node* repr); virtual void release(); @@ -68,13 +55,8 @@ public: virtual void modified(unsigned int flags); virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags); - -protected: - SPMask* spmask; }; -GType sp_mask_get_type (void); - class SPMaskReference : public Inkscape::URIReference { public: SPMaskReference(SPObject *obj) : URIReference(obj) {} diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 762f56257..767017e6d 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -65,68 +65,45 @@ namespace { bool namedViewRegistered = SPFactory::instance().registerObject("sodipodi:namedview", createNamedView); } - -G_DEFINE_TYPE(SPNamedView, sp_namedview, G_TYPE_OBJECT); - -static void sp_namedview_class_init(SPNamedViewClass * klass) -{ -} - -CNamedView::CNamedView(SPNamedView* view) : CObjectGroup(view) { - this->spnamedview = view; -} - -CNamedView::~CNamedView() { -} - SPNamedView::SPNamedView() : SPObjectGroup(), snap_manager(this) { - SPNamedView* nv = this; - - nv->cnamedview = new CNamedView(nv); - nv->typeHierarchy.insert(typeid(SPNamedView)); - - delete nv->cobjectgroup; - nv->cobjectgroup = nv->cnamedview; - nv->cobject = nv->cnamedview; - - nv->zoom = 0; - nv->guidecolor = 0; - nv->guidehicolor = 0; - nv->views = NULL; - nv->borderlayer = 0; - nv->units = NULL; - nv->window_x = 0; - nv->cy = 0; - nv->window_y = 0; - nv->doc_units = NULL; - nv->pagecolor = 0; - nv->cx = 0; - nv->pageshadow = 0; - nv->window_width = 0; - nv->window_height = 0; - nv->window_maximized = 0; - nv->bordercolor = 0; - - nv->editable = TRUE; - nv->showguides = TRUE; - nv->grids_visible = false; - nv->showborder = TRUE; - nv->showpageshadow = TRUE; - - nv->guides = NULL; - nv->viewcount = 0; - nv->grids = NULL; - - nv->default_layer_id = 0; - - nv->connector_spacing = defaultConnSpacing; - - //new (&nv->snap_manager) SnapManager(nv); + this->cobject = this; + + this->zoom = 0; + this->guidecolor = 0; + this->guidehicolor = 0; + this->views = NULL; + this->borderlayer = 0; + this->units = NULL; + this->window_x = 0; + this->cy = 0; + this->window_y = 0; + this->doc_units = NULL; + this->pagecolor = 0; + this->cx = 0; + this->pageshadow = 0; + this->window_width = 0; + this->window_height = 0; + this->window_maximized = 0; + this->bordercolor = 0; + + this->editable = TRUE; + this->showguides = TRUE; + this->grids_visible = false; + this->showborder = TRUE; + this->showpageshadow = TRUE; + + this->guides = NULL; + this->viewcount = 0; + this->grids = NULL; + + this->default_layer_id = 0; + + this->connector_spacing = defaultConnSpacing; + + //new (&this->snap_manager) SnapManager(this); } -static void sp_namedview_init(SPNamedView *nv) -{ - new (nv) SPNamedView(); +SPNamedView::~SPNamedView() { } static void sp_namedview_generate_old_grid(SPNamedView * /*nv*/, SPDocument *document, Inkscape::XML::Node *repr) { @@ -217,13 +194,13 @@ static void sp_namedview_generate_old_grid(SPNamedView * /*nv*/, SPDocument *doc } } -void CNamedView::build(SPDocument *document, Inkscape::XML::Node *repr) { - SPNamedView* object = this->spnamedview; +void SPNamedView::build(SPDocument *document, Inkscape::XML::Node *repr) { + SPNamedView* object = this; SPNamedView *nv = (SPNamedView *) object; SPObjectGroup *og = (SPObjectGroup *) object; - CObjectGroup::build(document, repr); + SPObjectGroup::build(document, repr); object->readAttr( "inkscape:document-units" ); object->readAttr( "units" ); @@ -293,8 +270,8 @@ void CNamedView::build(SPDocument *document, Inkscape::XML::Node *repr) { sp_namedview_generate_old_grid(nv, document, repr); } -void CNamedView::release() { - SPNamedView* object = this->spnamedview; +void SPNamedView::release() { + SPNamedView* object = this; SPNamedView *namedview = (SPNamedView *) object; if (namedview->guides) { @@ -309,13 +286,13 @@ void CNamedView::release() { namedview->grids = g_slist_remove_link(namedview->grids, namedview->grids); // deletes first entry } - CObjectGroup::release(); + SPObjectGroup::release(); namedview->snap_manager.~SnapManager(); } -void CNamedView::set(unsigned int key, const gchar* value) { - SPNamedView* object = this->spnamedview; +void SPNamedView::set(unsigned int key, const gchar* value) { + SPNamedView* object = this; SPNamedView *nv = SP_NAMEDVIEW(object); @@ -629,7 +606,7 @@ void CNamedView::set(unsigned int key, const gchar* value) { break; } default: - CObjectGroup::set(key, value); + SPObjectGroup::set(key, value); break; } } @@ -675,12 +652,12 @@ sp_namedview_add_grid(SPNamedView *nv, Inkscape::XML::Node *repr, SPDesktop *des return grid; } -void CNamedView::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - SPNamedView* object = this->spnamedview; +void SPNamedView::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { + SPNamedView* object = this; SPNamedView *nv = (SPNamedView *) object; - CObjectGroup::child_added(child, ref); + SPObjectGroup::child_added(child, ref); if (!strcmp(child->name(), "inkscape:grid")) { sp_namedview_add_grid(nv, child, NULL); @@ -706,8 +683,8 @@ void CNamedView::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *re } } -void CNamedView::remove_child(Inkscape::XML::Node *child) { - SPNamedView* object = this->spnamedview; +void SPNamedView::remove_child(Inkscape::XML::Node *child) { + SPNamedView* object = this; SPNamedView *nv = (SPNamedView *) object; if (!strcmp(child->name(), "inkscape:grid")) { @@ -732,11 +709,11 @@ void CNamedView::remove_child(Inkscape::XML::Node *child) { } } - CObjectGroup::remove_child(child); + SPObjectGroup::remove_child(child); } -Inkscape::XML::Node* CNamedView::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { - SPNamedView* object = this->spnamedview; +Inkscape::XML::Node* SPNamedView::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPNamedView* object = this; if ( ( flags & SP_OBJECT_WRITE_EXT ) && repr != object->getRepr() ) diff --git a/src/sp-namedview.h b/src/sp-namedview.h index 28defe4d9..50ff57278 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -14,17 +14,14 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#define SP_TYPE_NAMEDVIEW (sp_namedview_get_type()) #define SP_NAMEDVIEW(obj) ((SPNamedView*)obj) -#define SP_IS_NAMEDVIEW(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPNamedView))) +#define SP_IS_NAMEDVIEW(obj) (dynamic_cast<const SPNamedView*>((SPObject*)obj)) #include "sp-object-group.h" #include "sp-metric.h" #include "snap.h" #include "document.h" -G_BEGIN_DECLS - struct SPUnit; namespace Inkscape { @@ -36,12 +33,10 @@ enum { SP_BORDER_LAYER_TOP }; -class CNamedView; - class SPNamedView : public SPObjectGroup { public: SPNamedView(); - CNamedView* cnamedview; + virtual ~SPNamedView(); unsigned int editable : 1; unsigned int showguides : 1; @@ -100,18 +95,8 @@ public: private: double getMarginLength(gchar const * const key,SPUnit const * const margin_units,SPUnit const * const return_units,double const width,double const height,bool const use_width); friend class SPDocument; -}; - -struct SPNamedViewClass { - SPObjectGroupClass parent_class; -}; - -class CNamedView : public CObjectGroup { public: - CNamedView(SPNamedView* view); - virtual ~CNamedView(); - virtual void build(SPDocument *document, Inkscape::XML::Node *repr); virtual void release(); virtual void set(unsigned int key, gchar const* value); @@ -120,14 +105,9 @@ public: virtual void remove_child(Inkscape::XML::Node* child); virtual Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags); - -protected: - SPNamedView* spnamedview; }; -GType sp_namedview_get_type(); - SPNamedView *sp_document_namedview(SPDocument *document, gchar const *name); void sp_namedview_window_from_document(SPDesktop *desktop); @@ -138,7 +118,6 @@ 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-object-group.cpp b/src/sp-object-group.cpp index 29ac0eb43..afe425211 100644 --- a/src/sp-object-group.cpp +++ b/src/sp-object-group.cpp @@ -16,40 +16,16 @@ #include "xml/repr.h" #include "document.h" - -G_DEFINE_TYPE(SPObjectGroup, sp_objectgroup, G_TYPE_OBJECT); - -static void -sp_objectgroup_class_init(SPObjectGroupClass *klass) -{ -} - -SPObjectGroup::SPObjectGroup() : SPObject() { - SPObjectGroup* objectgroup = this; - - objectgroup->cobjectgroup = new CObjectGroup(objectgroup); - objectgroup->typeHierarchy.insert(typeid(SPObjectGroup)); - - delete objectgroup->cobject; - objectgroup->cobject = objectgroup->cobjectgroup; +SPObjectGroup::SPObjectGroup() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; } -static void -sp_objectgroup_init(SPObjectGroup * objectgroup) -{ - new (objectgroup) SPObjectGroup(); +SPObjectGroup::~SPObjectGroup() { } -CObjectGroup::CObjectGroup(SPObjectGroup* gr) : CObject(gr) { - this->spobjectgroup = gr; -} - -CObjectGroup::~CObjectGroup() { -} - - -void CObjectGroup::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - SPObjectGroup* object = this->spobjectgroup; +void SPObjectGroup::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { + SPObjectGroup* object = this; CObject::child_added(child, ref); @@ -57,8 +33,8 @@ void CObjectGroup::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node * } -void CObjectGroup::remove_child(Inkscape::XML::Node *child) { - SPObjectGroup* object = this->spobjectgroup; +void SPObjectGroup::remove_child(Inkscape::XML::Node *child) { + SPObjectGroup* object = this; CObject::remove_child(child); @@ -66,8 +42,8 @@ void CObjectGroup::remove_child(Inkscape::XML::Node *child) { } -void CObjectGroup::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) { - SPObjectGroup* object = this->spobjectgroup; +void SPObjectGroup::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref) { + SPObjectGroup* object = this; CObject::order_changed(child, old_ref, new_ref); @@ -75,8 +51,8 @@ void CObjectGroup::order_changed(Inkscape::XML::Node *child, Inkscape::XML::Node } -Inkscape::XML::Node *CObjectGroup::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { - SPObjectGroup* object = this->spobjectgroup; +Inkscape::XML::Node *SPObjectGroup::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPObjectGroup* object = this; if (flags & SP_OBJECT_WRITE_BUILD) { if (!repr) { diff --git a/src/sp-object-group.h b/src/sp-object-group.h index 74c406b1e..faa7872ed 100644 --- a/src/sp-object-group.h +++ b/src/sp-object-group.h @@ -16,35 +16,13 @@ #include "sp-object.h" -#define SP_TYPE_OBJECTGROUP (sp_objectgroup_get_type ()) #define SP_OBJECTGROUP(obj) ((SPObjectGroup*)obj) -#define SP_IS_OBJECTGROUP(obj) (obj != NULL && static_cast<const SPObject*>(obj)->typeHierarchy.count(typeid(SPObjectGroup))) +#define SP_IS_OBJECTGROUP(obj) (dynamic_cast<const SPObjectGroup*>((SPObject*)obj)) -GType sp_objectgroup_get_type() G_GNUC_CONST; -class CObjectGroup; - -class SPObjectGroup : public SPObject { +class SPObjectGroup : public SPObject, public CObject { public: SPObjectGroup(); - CObjectGroup* cobjectgroup; - -private: - friend class SPObjectGroupClass; -}; - -class SPObjectGroupClass { -public: - SPObjectClass parent_class; - -private: - friend class SPObjectGroup; -}; - - -class CObjectGroup : public CObject { -public: - CObjectGroup(SPObjectGroup* gr); - virtual ~CObjectGroup(); + virtual ~SPObjectGroup(); virtual void child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref); virtual void remove_child(Inkscape::XML::Node* child); @@ -52,12 +30,8 @@ public: virtual void order_changed(Inkscape::XML::Node* child, Inkscape::XML::Node* old, Inkscape::XML::Node* new_repr); virtual Inkscape::XML::Node* write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags); - -protected: - SPObjectGroup* spobjectgroup; }; - #endif // SEEN_SP_OBJECTGROUP_H /* Local Variables: |
