From a744227f5585a589533611f0609edad961b8cbfc Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 21 Aug 2012 16:34:14 +0200 Subject: Added "virtual pad" to SPDefs. (bzr r11608.1.43) --- src/sp-defs.cpp | 49 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 2737b3f5c..9cd926d5b 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -56,20 +56,32 @@ void SPDefsClass::sp_defs_class_init(SPDefsClass *dc) sp_object_class->write = SPDefs::write; } -void SPDefs::init(SPDefs */*defs*/) +CDefs::CDefs(SPDefs* defs) : CObject(defs) { + this->spdefs = defs; +} + +CDefs::~CDefs() { +} + + +void SPDefs::init(SPDefs *defs) { + defs->cdefs = new CDefs(defs); + defs->cobject = defs->cdefs; +} +void CDefs::onRelease() { + CObject::onRelease(); } void SPDefs::release(SPObject *object) { - if (((SPObjectClass *) (SPDefsClass::static_parent_class))->release) { - ((SPObjectClass *) (SPDefsClass::static_parent_class))->release(object); - } + ((SPDefs*)object)->cdefs->onRelease(); } -void SPDefs::update(SPObject *object, SPCtx *ctx, guint flags) -{ +void CDefs::onUpdate(SPCtx *ctx, guint flags) { + SPDefs* object = this->spdefs; + if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } @@ -87,8 +99,14 @@ void SPDefs::update(SPObject *object, SPCtx *ctx, guint flags) } } -void SPDefs::modified(SPObject *object, guint flags) +void SPDefs::update(SPObject *object, SPCtx *ctx, guint flags) { + ((SPDefs*)object)->cdefs->onUpdate(ctx, flags); +} + +void CDefs::onModified(unsigned int flags) { + SPDefs* object = this->spdefs; + if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } @@ -113,8 +131,14 @@ void SPDefs::modified(SPObject *object, guint flags) } } -Inkscape::XML::Node * SPDefs::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +void SPDefs::modified(SPObject *object, guint flags) { + ((SPDefs*)object)->cdefs->onModified(flags); +} + +Inkscape::XML::Node* CDefs::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPDefs* object = this->spdefs; + if (flags & SP_OBJECT_WRITE_BUILD) { if (!repr) { @@ -141,13 +165,16 @@ Inkscape::XML::Node * SPDefs::write(SPObject *object, Inkscape::XML::Document *x } } - if (((SPObjectClass *) (SPDefsClass::static_parent_class))->write) { - (* ((SPObjectClass *) (SPDefsClass::static_parent_class))->write)(object, xml_doc, repr, flags); - } + CObject::onWrite(xml_doc, repr, flags); return repr; } +Inkscape::XML::Node * SPDefs::write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +{ + return ((SPDefs*)object)->cdefs->onWrite(xml_doc, repr, flags); +} + /* Local Variables: mode:c++ -- 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-defs.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 9cd926d5b..47df56141 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -50,10 +50,10 @@ void SPDefsClass::sp_defs_class_init(SPDefsClass *dc) static_parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); SPObjectClass *sp_object_class = (SPObjectClass *) dc; - sp_object_class->release = SPDefs::release; - sp_object_class->update = SPDefs::update; - sp_object_class->modified = SPDefs::modified; - sp_object_class->write = SPDefs::write; +// sp_object_class->release = SPDefs::release; +// sp_object_class->update = SPDefs::update; +// sp_object_class->modified = SPDefs::modified; +// sp_object_class->write = SPDefs::write; } CDefs::CDefs(SPDefs* defs) : CObject(defs) { -- 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-defs.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 80df6422f..ef3c7182b 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -47,11 +47,11 @@ CDefs::~CDefs() { -void CDefs::onRelease() { - CObject::onRelease(); +void CDefs::release() { + CObject::release(); } -void CDefs::onUpdate(SPCtx *ctx, guint flags) { +void CDefs::update(SPCtx *ctx, guint flags) { SPDefs* object = this->spdefs; if (flags & SP_OBJECT_MODIFIED_FLAG) { @@ -71,7 +71,7 @@ void CDefs::onUpdate(SPCtx *ctx, guint flags) { } } -void CDefs::onModified(unsigned int flags) { +void CDefs::modified(unsigned int flags) { SPDefs* object = this->spdefs; if (flags & SP_OBJECT_MODIFIED_FLAG) { @@ -98,7 +98,7 @@ void CDefs::onModified(unsigned int flags) { } } -Inkscape::XML::Node* CDefs::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { +Inkscape::XML::Node* CDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SPDefs* object = this->spdefs; if (flags & SP_OBJECT_WRITE_BUILD) { @@ -127,7 +127,7 @@ Inkscape::XML::Node* CDefs::onWrite(Inkscape::XML::Document *xml_doc, Inkscape:: } } - CObject::onWrite(xml_doc, repr, flags); + CObject::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-defs.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index ef3c7182b..0a8bdb3cb 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -33,6 +33,7 @@ static void sp_defs_init(SPDefs* defs) { defs->cdefs = new CDefs(defs); + defs->typeHierarchy.insert(typeid(SPDefs)); delete defs->cobject; defs->cobject = defs->cdefs; -- 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-defs.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 0a8bdb3cb..3957084a6 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -68,7 +68,7 @@ void CDefs::update(SPCtx *ctx, guint 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); } } @@ -83,7 +83,7 @@ void CDefs::modified(unsigned int flags) { GSList *l = NULL; for ( SPObject *child = object->firstChild() ; child; child = child->getNext() ) { - g_object_ref(G_OBJECT(child)); + sp_object_ref(child); l = g_slist_prepend(l, child); } @@ -95,7 +95,7 @@ void CDefs::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-defs.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 3957084a6..d73b6db74 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -21,7 +21,7 @@ #include "document.h" -G_DEFINE_TYPE(SPDefs, sp_defs, SP_TYPE_OBJECT); +G_DEFINE_TYPE(SPDefs, sp_defs, G_TYPE_OBJECT); static void sp_defs_class_init(SPDefsClass *dc) @@ -29,9 +29,10 @@ sp_defs_class_init(SPDefsClass *dc) SPObjectClass *sp_object_class = (SPObjectClass *) dc; } -static void -sp_defs_init(SPDefs* defs) -{ + +SPDefs::SPDefs() : SPObject() { + SPDefs* defs = this; + defs->cdefs = new CDefs(defs); defs->typeHierarchy.insert(typeid(SPDefs)); @@ -39,6 +40,12 @@ sp_defs_init(SPDefs* defs) defs->cobject = defs->cdefs; } +static void +sp_defs_init(SPDefs* defs) +{ + new (defs) SPDefs(); +} + CDefs::CDefs(SPDefs* defs) : CObject(defs) { this->spdefs = defs; } -- 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-defs.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index d73b6db74..a385dca6a 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -20,6 +20,15 @@ #include "xml/repr.h" #include "document.h" +#include "sp-factory.h" + +namespace { + SPObject* createDefs() { + return new SPDefs(); + } + + bool defsRegistered = SPFactory::instance().registerObject("svg:defs", createDefs); +} G_DEFINE_TYPE(SPDefs, sp_defs, G_TYPE_OBJECT); -- cgit v1.2.3 From 7b7e0294b0c06a8d3ec19b73486a91e12cf67adf Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 6 Apr 2013 22:16:05 +0200 Subject: Merged more classes. (bzr r11608.1.84) --- src/sp-defs.cpp | 48 +++++++++++------------------------------------- 1 file changed, 11 insertions(+), 37 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index a385dca6a..6202c19f7 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -30,46 +30,20 @@ namespace { bool defsRegistered = SPFactory::instance().registerObject("svg:defs", createDefs); } -G_DEFINE_TYPE(SPDefs, sp_defs, G_TYPE_OBJECT); - -static void -sp_defs_class_init(SPDefsClass *dc) -{ - SPObjectClass *sp_object_class = (SPObjectClass *) dc; - -} - -SPDefs::SPDefs() : SPObject() { - SPDefs* defs = this; - - defs->cdefs = new CDefs(defs); - defs->typeHierarchy.insert(typeid(SPDefs)); - - delete defs->cobject; - defs->cobject = defs->cdefs; +SPDefs::SPDefs() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; } -static void -sp_defs_init(SPDefs* defs) -{ - new (defs) SPDefs(); +SPDefs::~SPDefs() { } -CDefs::CDefs(SPDefs* defs) : CObject(defs) { - this->spdefs = defs; -} - -CDefs::~CDefs() { -} - - - -void CDefs::release() { +void SPDefs::release() { CObject::release(); } -void CDefs::update(SPCtx *ctx, guint flags) { - SPDefs* object = this->spdefs; +void SPDefs::update(SPCtx *ctx, guint flags) { + SPDefs* object = this; if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -88,8 +62,8 @@ void CDefs::update(SPCtx *ctx, guint flags) { } } -void CDefs::modified(unsigned int flags) { - SPDefs* object = this->spdefs; +void SPDefs::modified(unsigned int flags) { + SPDefs* object = this; if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; @@ -115,8 +89,8 @@ void CDefs::modified(unsigned int flags) { } } -Inkscape::XML::Node* CDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { - SPDefs* object = this->spdefs; +Inkscape::XML::Node* SPDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPDefs* object = this; if (flags & SP_OBJECT_WRITE_BUILD) { -- 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-defs.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index 6202c19f7..b60c830e6 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -30,16 +30,14 @@ namespace { bool defsRegistered = SPFactory::instance().registerObject("svg:defs", createDefs); } -SPDefs::SPDefs() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; +SPDefs::SPDefs() : SPObject() { } SPDefs::~SPDefs() { } void SPDefs::release() { - CObject::release(); + SPObject::release(); } void SPDefs::update(SPCtx *ctx, guint flags) { @@ -118,7 +116,7 @@ Inkscape::XML::Node* SPDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::X } } - CObject::write(xml_doc, repr, flags); + SPObject::write(xml_doc, repr, flags); return repr; } -- cgit v1.2.3 From beecbea1b415d5b9536f2309c4f30fc258e346f5 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Wed, 31 Jul 2013 22:51:23 +0200 Subject: Cleaned up a bit; fixed struct vs. class forward declarations. (bzr r11608.1.111) --- src/sp-defs.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'src/sp-defs.cpp') diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index b60c830e6..334570076 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -41,15 +41,13 @@ void SPDefs::release() { } void SPDefs::update(SPCtx *ctx, guint flags) { - SPDefs* object = this; - if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } flags &= SP_OBJECT_MODIFIED_CASCADE; - GSList *l = g_slist_reverse(object->childList(true)); + GSList *l = g_slist_reverse(this->childList(true)); while (l) { SPObject *child = SP_OBJECT(l->data); l = g_slist_remove(l, child); @@ -61,8 +59,6 @@ void SPDefs::update(SPCtx *ctx, guint flags) { } void SPDefs::modified(unsigned int flags) { - SPDefs* object = this; - if (flags & SP_OBJECT_MODIFIED_FLAG) { flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } @@ -70,7 +66,7 @@ void SPDefs::modified(unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; GSList *l = NULL; - for ( SPObject *child = object->firstChild() ; child; child = child->getNext() ) { + for ( SPObject *child = this->firstChild() ; child; child = child->getNext() ) { sp_object_ref(child); l = g_slist_prepend(l, child); } @@ -88,8 +84,6 @@ void SPDefs::modified(unsigned int flags) { } Inkscape::XML::Node* SPDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { - SPDefs* object = this; - if (flags & SP_OBJECT_WRITE_BUILD) { if (!repr) { @@ -97,7 +91,7 @@ Inkscape::XML::Node* SPDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::X } GSList *l = NULL; - for ( SPObject *child = object->firstChild() ; child; child = child->getNext() ) { + for ( SPObject *child = this->firstChild() ; child; child = child->getNext() ) { Inkscape::XML::Node *crepr = child->updateRepr(xml_doc, NULL, flags); if (crepr) { l = g_slist_prepend(l, crepr); @@ -111,7 +105,7 @@ Inkscape::XML::Node* SPDefs::write(Inkscape::XML::Document *xml_doc, Inkscape::X } } else { - for ( SPObject *child = object->firstChild() ; child; child = child->getNext() ) { + for ( SPObject *child = this->firstChild() ; child; child = child->getNext() ) { child->updateRepr(flags); } } -- cgit v1.2.3