From a5317c14401c1b7ca2ed25ffde601ff28828771f Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 21 Aug 2012 15:30:08 +0200 Subject: Added "virtual pad" to SPClipPath. (bzr r11608.1.38) --- src/sp-clippath.cpp | 91 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 22 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 2213443a5..02dc53481 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -77,28 +77,45 @@ void SPClipPathClass::sp_clippath_class_init(SPClipPathClass *klass) sp_object_class->write = SPClipPath::write; } +CClipPath::CClipPath(SPClipPath* clippath) : CObjectGroup(clippath) { + this->spclippath = clippath; +} + +CClipPath::~CClipPath() { +} + void SPClipPath::init(SPClipPath *cp) { + cp->cclippath = new CClipPath(cp); + cp->cobjectgroup = cp->cclippath; + cp->cobject = cp->cclippath; + cp->clipPathUnits_set = FALSE; cp->clipPathUnits = SP_CONTENT_UNITS_USERSPACEONUSE; cp->display = NULL; } -void SPClipPath::build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ - if (((SPObjectClass *) SPClipPathClass::static_parent_class)->build) - ((SPObjectClass *) SPClipPathClass::static_parent_class)->build(object, document, repr); +void CClipPath::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { + SPClipPath* object = this->spclippath; + + CObjectGroup::onBuild(doc, repr); object->readAttr( "style" ); object->readAttr( "clipPathUnits" ); /* Register ourselves */ - document->addResource("clipPath", object); + doc->addResource("clipPath", object); } -void SPClipPath::release(SPObject * object) +void SPClipPath::build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { + ((SPClipPath*)object)->cclippath->onBuild(document, repr); +} + +void CClipPath::onRelease() { + SPClipPath* object = this->spclippath; + if (object->document) { // Unregister ourselves object->document->removeResource("clipPath", object); @@ -110,13 +127,17 @@ void SPClipPath::release(SPObject * object) cp->display = sp_clippath_view_list_remove(cp->display, cp->display); } - if (((SPObjectClass *) (SPClipPathClass::static_parent_class))->release) { - ((SPObjectClass *) SPClipPathClass::static_parent_class)->release(object); - } + CObjectGroup::onRelease(); } -void SPClipPath::set(SPObject *object, unsigned int key, gchar const *value) +void SPClipPath::release(SPObject * object) { + ((SPClipPath*)object)->cclippath->onRelease(); +} + +void CClipPath::onSet(unsigned int key, const gchar* value) { + SPClipPath* object = this->spclippath; + SPClipPath *cp = SP_CLIPPATH(object); switch (key) { @@ -138,25 +159,29 @@ void SPClipPath::set(SPObject *object, unsigned int 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 (((SPObjectClass *) SPClipPathClass::static_parent_class)->set) { - ((SPObjectClass *) SPClipPathClass::static_parent_class)->set(object, key, value); - } + CObjectGroup::onSet(key, value); } break; } } -void SPClipPath::childAdded(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) +void SPClipPath::set(SPObject *object, unsigned int key, gchar const *value) { + ((SPClipPath*)object)->cclippath->onSet(key, value); +} + +void CClipPath::onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { + SPClipPath* object = this->spclippath; + /* Invoke SPObjectGroup implementation */ - ((SPObjectClass *) (SPClipPathClass::static_parent_class))->child_added(object, child, ref); + CObjectGroup::onChildAdded(child, ref); /* Show new object */ SPObject *ochild = object->document->getObjectByRepr(child); if (SP_IS_ITEM(ochild)) { SPClipPath *cp = SP_CLIPPATH(object); for (SPClipPathView *v = cp->display; v != NULL; v = v->next) { - Inkscape::DrawingItem *ac = SP_ITEM(ochild)->invoke_show( v->arenaitem->drawing(), + Inkscape::DrawingItem *ac = SP_ITEM(ochild)->invoke_show(v->arenaitem->drawing(), v->key, SP_ITEM_REFERENCE_FLAGS); if (ac) { @@ -166,8 +191,14 @@ void SPClipPath::childAdded(SPObject *object, Inkscape::XML::Node *child, Inksca } } -void SPClipPath::update(SPObject *object, SPCtx *ctx, guint flags) +void SPClipPath::childAdded(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { + ((SPClipPath*)object)->cclippath->onChildAdded(child, ref); +} + +void CClipPath::onUpdate(SPCtx* ctx, unsigned int flags) { + SPClipPath* object = this->spclippath; + if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } @@ -203,8 +234,14 @@ void SPClipPath::update(SPObject *object, SPCtx *ctx, guint flags) } } -void SPClipPath::modified(SPObject *object, guint flags) +void SPClipPath::update(SPObject *object, SPCtx *ctx, guint flags) { + ((SPClipPath*)object)->cclippath->onUpdate(ctx, flags); +} + +void CClipPath::onModified(unsigned int flags) { + SPClipPath* object = this->spclippath; + if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } @@ -228,19 +265,29 @@ void SPClipPath::modified(SPObject *object, guint flags) } } -Inkscape::XML::Node *SPClipPath::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +void SPClipPath::modified(SPObject *object, guint flags) { + ((SPClipPath*)object)->cclippath->onModified(flags); +} + +Inkscape::XML::Node* CClipPath::onWrite(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { repr = xml_doc->createElement("svg:clipPath"); } - if (((SPObjectClass *) (SPClipPathClass::static_parent_class))->write) { - ((SPObjectClass *) (SPClipPathClass::static_parent_class))->write(object, xml_doc, repr, flags); - } + CObjectGroup::onWrite(xml_doc, repr, flags); return repr; } +Inkscape::XML::Node *SPClipPath::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +{ + return ((SPClipPath*)object)->cclippath->onWrite(xml_doc, repr, flags); +} + + +// CPPIFY: These methods are virtual in SPItem. So wouldn't it be better to derive SPClipPath from SPItem? + Inkscape::DrawingItem *SPClipPath::show(Inkscape::Drawing &drawing, unsigned int key) { Inkscape::DrawingGroup *ai = new Inkscape::DrawingGroup(drawing); -- cgit v1.2.3 From a0a8d020201e0e38a63d9aa3dce228d7d9e6fb35 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Thu, 14 Mar 2013 12:42:39 +0100 Subject: Various changes. (bzr r11608.1.48) --- src/sp-clippath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 02dc53481..da4e2c0d1 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -68,7 +68,7 @@ void SPClipPathClass::sp_clippath_class_init(SPClipPathClass *klass) static_parent_class = (SPObjectGroupClass*)g_type_class_ref(SP_TYPE_OBJECTGROUP); - sp_object_class->build = SPClipPath::build; + //sp_object_class->build = SPClipPath::build; sp_object_class->release = SPClipPath::release; sp_object_class->set = SPClipPath::set; sp_object_class->child_added = SPClipPath::childAdded; -- cgit v1.2.3 From 957c3e4b7909d42c5a13f1b1dd583f877fc32259 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:46:57 +0100 Subject: Removed function pointers from SPObject and subclasses. Added some missing virtual pads for classes that were hidden by preprocessor macros. (bzr r11608.1.55) --- src/sp-clippath.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index da4e2c0d1..3ad4a7cd1 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -69,12 +69,12 @@ void SPClipPathClass::sp_clippath_class_init(SPClipPathClass *klass) static_parent_class = (SPObjectGroupClass*)g_type_class_ref(SP_TYPE_OBJECTGROUP); //sp_object_class->build = SPClipPath::build; - sp_object_class->release = SPClipPath::release; - sp_object_class->set = SPClipPath::set; - sp_object_class->child_added = SPClipPath::childAdded; - sp_object_class->update = SPClipPath::update; - sp_object_class->modified = SPClipPath::modified; - sp_object_class->write = SPClipPath::write; +// sp_object_class->release = SPClipPath::release; +// sp_object_class->set = SPClipPath::set; +// sp_object_class->child_added = SPClipPath::childAdded; +// sp_object_class->update = SPClipPath::update; +// sp_object_class->modified = SPClipPath::modified; +// sp_object_class->write = SPClipPath::write; } CClipPath::CClipPath(SPClipPath* clippath) : CObjectGroup(clippath) { -- cgit v1.2.3 From 7df6616da5ea2debb86838366ddf746841549cdb Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:56:13 +0100 Subject: Renamed virtual function names. (bzr r11608.1.57) --- src/sp-clippath.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index af19cf24b..18ea91cc2 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -69,10 +69,10 @@ sp_clippath_init(SPClipPath *cp) cp->display = NULL; } -void CClipPath::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { +void CClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { SPClipPath* object = this->spclippath; - CObjectGroup::onBuild(doc, repr); + CObjectGroup::build(doc, repr); object->readAttr( "style" ); object->readAttr( "clipPathUnits" ); @@ -81,7 +81,7 @@ void CClipPath::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { doc->addResource("clipPath", object); } -void CClipPath::onRelease() { +void CClipPath::release() { SPClipPath* object = this->spclippath; if (object->document) { @@ -95,10 +95,10 @@ void CClipPath::onRelease() { cp->display = sp_clippath_view_list_remove(cp->display, cp->display); } - CObjectGroup::onRelease(); + CObjectGroup::release(); } -void CClipPath::onSet(unsigned int key, const gchar* value) { +void CClipPath::set(unsigned int key, const gchar* value) { SPClipPath* object = this->spclippath; SPClipPath *cp = SP_CLIPPATH(object); @@ -122,17 +122,17 @@ void CClipPath::onSet(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::onSet(key, value); + CObjectGroup::set(key, value); } break; } } -void CClipPath::onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { +void CClipPath::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { SPClipPath* object = this->spclippath; /* Invoke SPObjectGroup implementation */ - CObjectGroup::onChildAdded(child, ref); + CObjectGroup::child_added(child, ref); /* Show new object */ SPObject *ochild = object->document->getObjectByRepr(child); @@ -149,7 +149,7 @@ void CClipPath::onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* re } } -void CClipPath::onUpdate(SPCtx* ctx, unsigned int flags) { +void CClipPath::update(SPCtx* ctx, unsigned int flags) { SPClipPath* object = this->spclippath; if (flags & SP_OBJECT_MODIFIED_FLAG) { @@ -187,7 +187,7 @@ void CClipPath::onUpdate(SPCtx* ctx, unsigned int flags) { } } -void CClipPath::onModified(unsigned int flags) { +void CClipPath::modified(unsigned int flags) { SPClipPath* object = this->spclippath; if (flags & SP_OBJECT_MODIFIED_FLAG) { @@ -213,12 +213,12 @@ void CClipPath::onModified(unsigned int flags) { } } -Inkscape::XML::Node* CClipPath::onWrite(Inkscape::XML::Document* xml_doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* CClipPath::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::onWrite(xml_doc, repr, flags); + CObjectGroup::write(xml_doc, repr, flags); return repr; } -- cgit v1.2.3 From a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 1 Apr 2013 00:07:00 +0200 Subject: Prepared exchange of casting macros. (bzr r11608.1.63) --- src/sp-clippath.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 18ea91cc2..f4503386c 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -58,6 +58,7 @@ static void sp_clippath_init(SPClipPath *cp) { cp->cclippath = new CClipPath(cp); + cp->typeHierarchy.insert(typeid(SPClipPath)); delete cp->cobjectgroup; cp->cobjectgroup = cp->cclippath; -- cgit v1.2.3 From 7eb077e4097aed62c11e5b4e97ff4b16039e73fa Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 1 Apr 2013 23:04:54 +0200 Subject: Replaced calls to g_object_(un)ref with sp_object_(un)ref. (bzr r11608.1.65) --- src/sp-clippath.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index f4503386c..3263bbb58 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -162,7 +162,7 @@ void CClipPath::update(SPCtx* ctx, unsigned int flags) { SPObjectGroup *og = SP_OBJECTGROUP(object); GSList *l = NULL; for ( SPObject *child = og->firstChild(); child; child = child->getNext()) { - g_object_ref(G_OBJECT(child)); + sp_object_ref(child); l = g_slist_prepend(l, child); } l = g_slist_reverse(l); @@ -172,7 +172,7 @@ void CClipPath::update(SPCtx* ctx, unsigned int flags) { if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->updateDisplay(ctx, flags); } - g_object_unref(G_OBJECT(child)); + sp_object_unref(child); } SPClipPath *cp = SP_CLIPPATH(object); @@ -200,7 +200,7 @@ void CClipPath::modified(unsigned int flags) { SPObjectGroup *og = SP_OBJECTGROUP(object); GSList *l = NULL; for (SPObject *child = og->firstChild(); child; child = child->getNext()) { - g_object_ref(G_OBJECT(child)); + sp_object_ref(child); l = g_slist_prepend(l, child); } l = g_slist_reverse(l); @@ -210,7 +210,7 @@ void CClipPath::modified(unsigned int flags) { if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } - g_object_unref(G_OBJECT(child)); + sp_object_unref(child); } } -- cgit v1.2.3 From 69f3b6f1abb2bb422935d43262e1e99aab359954 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 01:41:30 +0200 Subject: Added constructors to SP classes. (bzr r11608.1.67) --- src/sp-clippath.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 3263bbb58..ff12f9678 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -40,7 +40,7 @@ struct SPClipPathView { static SPClipPathView* sp_clippath_view_new_prepend(SPClipPathView *list, unsigned int key, Inkscape::DrawingItem *arenaitem); static SPClipPathView* sp_clippath_view_list_remove(SPClipPathView *list, SPClipPathView *view); -G_DEFINE_TYPE(SPClipPath, sp_clippath, SP_TYPE_OBJECTGROUP); +G_DEFINE_TYPE(SPClipPath, sp_clippath, G_TYPE_OBJECT); static void sp_clippath_class_init(SPClipPathClass *klass) @@ -54,9 +54,9 @@ CClipPath::CClipPath(SPClipPath* clippath) : CObjectGroup(clippath) { CClipPath::~CClipPath() { } -static void -sp_clippath_init(SPClipPath *cp) -{ +SPClipPath::SPClipPath() : SPObjectGroup() { + SPClipPath* cp = this; + cp->cclippath = new CClipPath(cp); cp->typeHierarchy.insert(typeid(SPClipPath)); @@ -70,6 +70,12 @@ sp_clippath_init(SPClipPath *cp) cp->display = NULL; } +static void +sp_clippath_init(SPClipPath *cp) +{ + new (cp) SPClipPath(); +} + void CClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { SPClipPath* object = this->spclippath; -- cgit v1.2.3 From d1af3566872dfff2aeec84859c87f1f8d13f79df Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 19:14:36 +0200 Subject: Registered classes with new factory. Hkern, Vkern and FeFuncX have to be rewritten, as they aren't real classes. (bzr r11608.1.69) --- src/sp-clippath.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index ff12f9678..496a4ed82 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -40,6 +40,16 @@ struct SPClipPathView { static SPClipPathView* sp_clippath_view_new_prepend(SPClipPathView *list, unsigned int key, Inkscape::DrawingItem *arenaitem); static SPClipPathView* sp_clippath_view_list_remove(SPClipPathView *list, SPClipPathView *view); +#include "sp-factory.h" + +namespace { + SPObject* createClipPath() { + return new SPClipPath(); + } + + bool clipPathRegistered = SPFactory::instance().registerObject("svg:clipPath", createClipPath); +} + G_DEFINE_TYPE(SPClipPath, sp_clippath, G_TYPE_OBJECT); static void -- cgit v1.2.3 From 8f5e6d495f0478701218adc8078db5063b710a05 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 6 Apr 2013 16:26:39 +0200 Subject: Merged ObjectGroup and subclasses. (bzr r11608.1.83) --- src/sp-clippath.cpp | 70 ++++++++++++++++++----------------------------------- 1 file changed, 23 insertions(+), 47 deletions(-) (limited to 'src/sp-clippath.cpp') 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; } -- cgit v1.2.3 From 27e2102f96a5554bcd5310ec11435d155773b279 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sun, 7 Apr 2013 18:28:22 +0200 Subject: Merge Object and subclasses. Merging of SP- and C-classes complete. (bzr r11608.1.86) --- src/sp-clippath.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 17571d195..6a2fbfbb3 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -51,8 +51,6 @@ namespace { } SPClipPath::SPClipPath() : SPObjectGroup() { - this->cobject = this; - this->clipPathUnits_set = FALSE; this->clipPathUnits = SP_CONTENT_UNITS_USERSPACEONUSE; -- cgit v1.2.3 From bf4a1d2d49850170b936c30cfe2b30e798716406 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 3 Aug 2013 03:03:43 +0200 Subject: Cleaned up. (bzr r11608.1.117) --- src/sp-clippath.cpp | 104 ++++++++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 56 deletions(-) (limited to 'src/sp-clippath.cpp') diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 6a2fbfbb3..8e2e7d7a6 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -61,57 +61,50 @@ SPClipPath::~SPClipPath() { } void SPClipPath::build(SPDocument* doc, Inkscape::XML::Node* repr) { - SPClipPath* object = this; - SPObjectGroup::build(doc, repr); - object->readAttr( "style" ); - object->readAttr( "clipPathUnits" ); + this->readAttr( "style" ); + this->readAttr( "clipPathUnits" ); /* Register ourselves */ - doc->addResource("clipPath", object); + doc->addResource("clipPath", this); } void SPClipPath::release() { - SPClipPath* object = this; - - if (object->document) { + if (this->document) { // Unregister ourselves - object->document->removeResource("clipPath", object); + this->document->removeResource("clipPath", this); } - SPClipPath *cp = SP_CLIPPATH(object); - while (cp->display) { + while (this->display) { /* We simply unref and let item manage this in handler */ - cp->display = sp_clippath_view_list_remove(cp->display, cp->display); + this->display = sp_clippath_view_list_remove(this->display, this->display); } SPObjectGroup::release(); } void SPClipPath::set(unsigned int key, const gchar* value) { - SPClipPath* object = this; - - SPClipPath *cp = SP_CLIPPATH(object); - switch (key) { case SP_ATTR_CLIPPATHUNITS: - cp->clipPathUnits = SP_CONTENT_UNITS_USERSPACEONUSE; - cp->clipPathUnits_set = FALSE; + this->clipPathUnits = SP_CONTENT_UNITS_USERSPACEONUSE; + this->clipPathUnits_set = FALSE; + if (value) { if (!strcmp(value, "userSpaceOnUse")) { - cp->clipPathUnits_set = TRUE; + this->clipPathUnits_set = TRUE; } else if (!strcmp(value, "objectBoundingBox")) { - cp->clipPathUnits = SP_CONTENT_UNITS_OBJECTBOUNDINGBOX; - cp->clipPathUnits_set = TRUE; + this->clipPathUnits = SP_CONTENT_UNITS_OBJECTBOUNDINGBOX; + this->clipPathUnits_set = TRUE; } } - object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: if (SP_ATTRIBUTE_IS_CSS(key)) { - sp_style_read_from_object(object->style, object); - object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + sp_style_read_from_object(this->style, this); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); } else { SPObjectGroup::set(key, value); } @@ -120,19 +113,16 @@ void SPClipPath::set(unsigned int key, const gchar* value) { } void SPClipPath::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { - SPClipPath* object = this; - /* Invoke SPObjectGroup implementation */ SPObjectGroup::child_added(child, ref); /* Show new object */ - SPObject *ochild = object->document->getObjectByRepr(child); + SPObject *ochild = this->document->getObjectByRepr(child); + if (SP_IS_ITEM(ochild)) { - SPClipPath *cp = SP_CLIPPATH(object); - for (SPClipPathView *v = cp->display; v != NULL; v = v->next) { - Inkscape::DrawingItem *ac = SP_ITEM(ochild)->invoke_show( v->arenaitem->drawing(), - v->key, - SP_ITEM_REFERENCE_FLAGS); + for (SPClipPathView *v = this->display; v != NULL; v = v->next) { + Inkscape::DrawingItem *ac = SP_ITEM(ochild)->invoke_show(v->arenaitem->drawing(), v->key, SP_ITEM_REFERENCE_FLAGS); + if (ac) { v->arenaitem->prependChild(ac); } @@ -141,34 +131,35 @@ void SPClipPath::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* re } void SPClipPath::update(SPCtx* ctx, unsigned int flags) { - SPClipPath* object = this; - if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } flags &= SP_OBJECT_MODIFIED_CASCADE; - SPObjectGroup *og = SP_OBJECTGROUP(object); GSList *l = NULL; - for ( SPObject *child = og->firstChild(); child; child = child->getNext()) { + for ( SPObject *child = this->firstChild(); child; child = child->getNext()) { sp_object_ref(child); l = g_slist_prepend(l, child); } + l = g_slist_reverse(l); + while (l) { SPObject *child = SP_OBJECT(l->data); l = g_slist_remove(l, child); + if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->updateDisplay(ctx, flags); } + sp_object_unref(child); } - SPClipPath *cp = SP_CLIPPATH(object); - for (SPClipPathView *v = cp->display; v != NULL; v = v->next) { + for (SPClipPathView *v = this->display; v != NULL; v = v->next) { Inkscape::DrawingGroup *g = dynamic_cast(v->arenaitem); - if (cp->clipPathUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX && v->bbox) { + + if (this->clipPathUnits == SP_CONTENT_UNITS_OBJECTBOUNDINGBOX && v->bbox) { Geom::Affine t = Geom::Scale(v->bbox->dimensions()); t.setTranslation(v->bbox->min()); g->setChildTransform(t); @@ -179,27 +170,28 @@ void SPClipPath::update(SPCtx* ctx, unsigned int flags) { } void SPClipPath::modified(unsigned int flags) { - SPClipPath* object = this; - if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } flags &= SP_OBJECT_MODIFIED_CASCADE; - SPObjectGroup *og = SP_OBJECTGROUP(object); GSList *l = NULL; - for (SPObject *child = og->firstChild(); child; child = child->getNext()) { + for (SPObject *child = this->firstChild(); child; child = child->getNext()) { sp_object_ref(child); l = g_slist_prepend(l, child); } + l = g_slist_reverse(l); + while (l) { SPObject *child = SP_OBJECT(l->data); l = g_slist_remove(l, child); + if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->emitModified(flags); } + sp_object_unref(child); } } @@ -214,14 +206,14 @@ Inkscape::XML::Node* SPClipPath::write(Inkscape::XML::Document* xml_doc, Inkscap return repr; } -Inkscape::DrawingItem *SPClipPath::show(Inkscape::Drawing &drawing, unsigned int key) -{ +Inkscape::DrawingItem *SPClipPath::show(Inkscape::Drawing &drawing, unsigned int key) { Inkscape::DrawingGroup *ai = new Inkscape::DrawingGroup(drawing); display = sp_clippath_view_new_prepend(display, key, ai); for ( SPObject *child = firstChild() ; child ; child = child->getNext() ) { if (SP_IS_ITEM(child)) { Inkscape::DrawingItem *ac = SP_ITEM(child)->invoke_show(drawing, key, SP_ITEM_REFERENCE_FLAGS); + if (ac) { /* The order is not important in clippath */ ai->appendChild(ac); @@ -234,13 +226,13 @@ Inkscape::DrawingItem *SPClipPath::show(Inkscape::Drawing &drawing, unsigned int t.setTranslation(display->bbox->min()); ai->setChildTransform(t); } + ai->setStyle(this->style); return ai; } -void SPClipPath::hide(unsigned int key) -{ +void SPClipPath::hide(unsigned int key) { for ( SPObject *child = firstChild() ; child; child = child->getNext() ) { if (SP_IS_ITEM(child)) { SP_ITEM(child)->invoke_hide(key); @@ -258,8 +250,7 @@ void SPClipPath::hide(unsigned int key) g_assert_not_reached(); } -void SPClipPath::setBBox(unsigned int key, Geom::OptRect const &bbox) -{ +void SPClipPath::setBBox(unsigned int key, Geom::OptRect const &bbox) { for (SPClipPathView *v = display; v != NULL; v = v->next) { if (v->key == key) { v->bbox = bbox; @@ -268,15 +259,16 @@ void SPClipPath::setBBox(unsigned int key, Geom::OptRect const &bbox) } } -Geom::OptRect SPClipPath::geometricBounds(Geom::Affine const &transform) -{ - SPObject *i = 0; +Geom::OptRect SPClipPath::geometricBounds(Geom::Affine const &transform) { Geom::OptRect bbox; - for (i = firstChild(); i; i = i->getNext()) { - if (!SP_IS_ITEM(i)) continue; - Geom::OptRect tmp = SP_ITEM(i)->geometricBounds(Geom::Affine(SP_ITEM(i)->transform) * transform); - bbox.unionWith(tmp); + + for (SPObject *i = firstChild(); i; i = i->getNext()) { + if (SP_IS_ITEM(i)) { + Geom::OptRect tmp = SP_ITEM(i)->geometricBounds(Geom::Affine(SP_ITEM(i)->transform) * transform); + bbox.unionWith(tmp); + } } + return bbox; } -- cgit v1.2.3