From bf048763ea2423a0975ecdb956bf1b83bbae2030 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 21 Aug 2012 16:16:41 +0200 Subject: Added "virtual pad" to SPMetadata. (bzr r11608.1.41) --- src/sp-metadata.cpp | 90 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 60 insertions(+), 30 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index 831bb5a70..7f0503ce2 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -80,9 +80,19 @@ sp_metadata_class_init (SPMetadataClass *klass) sp_object_class->update = sp_metadata_update; } +CMetadata::CMetadata(SPMetadata* metadata) : CObject(metadata) { + this->spmetadata = metadata; +} + +CMetadata::~CMetadata() { +} + static void sp_metadata_init (SPMetadata *metadata) { + metadata->cmetadata = new CMetadata(metadata); + metadata->cobject = metadata->cmetadata; + (void)metadata; debug("0x%08x",(unsigned int)metadata); } @@ -101,15 +111,8 @@ void strip_ids_recursively(Inkscape::XML::Node *node) { } -/** - * Reads the Inkscape::XML::Node, and initializes SPMetadata variables. - * - * For this to get called, our name must be associated with - * a repr via "sp_object_type_register". Best done through - * sp-object-repr.cpp's repr_name_entries array. - */ -static void sp_metadata_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ + +void CMetadata::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { using Inkscape::XML::NodeSiblingIterator; debug("0x%08x",(unsigned int)object); @@ -123,43 +126,55 @@ static void sp_metadata_build(SPObject *object, SPDocument *document, Inkscape:: } } - if (((SPObjectClass *) metadata_parent_class)->build) - ((SPObjectClass *) metadata_parent_class)->build (object, document, repr); + CObject::onBuild(doc, repr); } /** - * Drops any allocated memory. + * Reads the Inkscape::XML::Node, and initializes SPMetadata variables. + * + * For this to get called, our name must be associated with + * a repr via "sp_object_type_register". Best done through + * sp-object-repr.cpp's repr_name_entries array. */ -static void sp_metadata_release(SPObject *object) +static void sp_metadata_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { + ((SPMetadata*)object)->cmetadata->onBuild(document, repr); +} + +void CMetadata::onRelease() { debug("0x%08x",(unsigned int)object); // handle ourself - if (((SPObjectClass *) metadata_parent_class)->release) - ((SPObjectClass *) metadata_parent_class)->release (object); + CObject::onRelease(); } /** - * Sets a specific value in the SPMetadata. + * Drops any allocated memory. */ -static void sp_metadata_set(SPObject *object, unsigned int key, const gchar *value) +static void sp_metadata_release(SPObject *object) { + ((SPMetadata*)object)->cmetadata->onRelease(); +} + +void CMetadata::onSet(unsigned int key, const gchar* value) { debug("0x%08x %s(%u): '%s'",(unsigned int)object, sp_attribute_name(key),key,value); - SP_METADATA(object); // ensures the object is of the proper type. + //SP_METADATA(object); // ensures the object is of the proper type. // see if any parents need this value - if (reinterpret_cast(metadata_parent_class)->set) { - reinterpret_cast(metadata_parent_class)->set(object, key, value); - } + CObject::onSet(key, value); } /** - * Receives update notifications. + * Sets a specific value in the SPMetadata. */ -static void sp_metadata_update(SPObject *object, SPCtx *ctx, guint flags) +static void sp_metadata_set(SPObject *object, unsigned int key, const gchar *value) { + ((SPMetadata*)object)->cmetadata->onSet(key, value); +} + +void CMetadata::onUpdate(SPCtx* ctx, unsigned int flags) { debug("0x%08x",(unsigned int)object); //SPMetadata *metadata = SP_METADATA(object); @@ -170,15 +185,24 @@ static void sp_metadata_update(SPObject *object, SPCtx *ctx, guint flags) } - if (((SPObjectClass *) metadata_parent_class)->update) - ((SPObjectClass *) metadata_parent_class)->update(object, ctx, flags); + // CPPIFY: As CMetadata is derived directly from CObject, this doesn't make no sense. + // CObject::onUpdate is pure. What was the idea behind these lines? +// if (((SPObjectClass *) metadata_parent_class)->update) +// ((SPObjectClass *) metadata_parent_class)->update(object, ctx, flags); +// CObject::onUpdate(ctx, flags); } /** - * Writes it's settings to an incoming repr object, if any. + * Receives update notifications. */ -static Inkscape::XML::Node *sp_metadata_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +static void sp_metadata_update(SPObject *object, SPCtx *ctx, guint flags) { + ((SPMetadata*)object)->cmetadata->onUpdate(ctx, flags); +} + +Inkscape::XML::Node* CMetadata::onWrite(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { + SPMetadata* object = this->spmetadata; + debug("0x%08x",(unsigned int)object); //SPMetadata *metadata = SP_METADATA(object); @@ -190,13 +214,19 @@ static Inkscape::XML::Node *sp_metadata_write(SPObject *object, Inkscape::XML::D } } - if (((SPObjectClass *) metadata_parent_class)->write) { - ((SPObjectClass *) metadata_parent_class)->write(object, doc, repr, flags); - } + CObject::onWrite(doc, repr, flags); return repr; } +/** + * Writes it's settings to an incoming repr object, if any. + */ +static Inkscape::XML::Node *sp_metadata_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) +{ + return ((SPMetadata*)object)->cmetadata->onWrite(doc, repr, flags); +} + /** * Retrieves the metadata object associated with a document. */ -- 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-metadata.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index 7f0503ce2..f75943f78 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -73,7 +73,7 @@ sp_metadata_class_init (SPMetadataClass *klass) metadata_parent_class = (SPObjectClass*)g_type_class_peek_parent (klass); - sp_object_class->build = sp_metadata_build; + //sp_object_class->build = sp_metadata_build; sp_object_class->release = sp_metadata_release; sp_object_class->write = sp_metadata_write; sp_object_class->set = sp_metadata_set; -- 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-metadata.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index f75943f78..45ed86ca4 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -74,10 +74,10 @@ sp_metadata_class_init (SPMetadataClass *klass) metadata_parent_class = (SPObjectClass*)g_type_class_peek_parent (klass); //sp_object_class->build = sp_metadata_build; - sp_object_class->release = sp_metadata_release; - sp_object_class->write = sp_metadata_write; - sp_object_class->set = sp_metadata_set; - sp_object_class->update = sp_metadata_update; +// sp_object_class->release = sp_metadata_release; +// sp_object_class->write = sp_metadata_write; +// sp_object_class->set = sp_metadata_set; +// sp_object_class->update = sp_metadata_update; } CMetadata::CMetadata(SPMetadata* metadata) : CObject(metadata) { -- 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-metadata.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index cf83ad239..d788ec48d 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -74,7 +74,7 @@ void strip_ids_recursively(Inkscape::XML::Node *node) { } -void CMetadata::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { +void CMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { using Inkscape::XML::NodeSiblingIterator; debug("0x%08x",(unsigned int)object); @@ -88,25 +88,25 @@ void CMetadata::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { } } - CObject::onBuild(doc, repr); + CObject::build(doc, repr); } -void CMetadata::onRelease() { +void CMetadata::release() { debug("0x%08x",(unsigned int)object); // handle ourself - CObject::onRelease(); + CObject::release(); } -void CMetadata::onSet(unsigned int key, const gchar* value) { +void CMetadata::set(unsigned int key, const gchar* value) { debug("0x%08x %s(%u): '%s'",(unsigned int)object, sp_attribute_name(key),key,value); // see if any parents need this value - CObject::onSet(key, value); + CObject::set(key, value); } -void CMetadata::onUpdate(SPCtx* ctx, unsigned int flags) { +void CMetadata::update(SPCtx* ctx, unsigned int flags) { debug("0x%08x",(unsigned int)object); //SPMetadata *metadata = SP_METADATA(object); @@ -120,7 +120,7 @@ void CMetadata::onUpdate(SPCtx* ctx, unsigned int flags) { // CObject::onUpdate(ctx, flags); } -Inkscape::XML::Node* CMetadata::onWrite(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* CMetadata::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { SPMetadata* object = this->spmetadata; debug("0x%08x",(unsigned int)object); @@ -134,7 +134,7 @@ Inkscape::XML::Node* CMetadata::onWrite(Inkscape::XML::Document* doc, Inkscape:: } } - CObject::onWrite(doc, repr, flags); + CObject::write(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-metadata.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index d788ec48d..28bf1767b 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -51,6 +51,7 @@ static void sp_metadata_init (SPMetadata *metadata) { metadata->cmetadata = new CMetadata(metadata); + metadata->typeHierarchy.insert(typeid(SPMetadata)); delete metadata->cobject; metadata->cobject = metadata->cmetadata; -- 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-metadata.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index 28bf1767b..40ed0c603 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -33,7 +33,7 @@ /* Metadata base class */ -G_DEFINE_TYPE(SPMetadata, sp_metadata, SP_TYPE_OBJECT); +G_DEFINE_TYPE(SPMetadata, sp_metadata, G_TYPE_OBJECT); static void sp_metadata_class_init (SPMetadataClass *klass) @@ -47,9 +47,9 @@ CMetadata::CMetadata(SPMetadata* metadata) : CObject(metadata) { CMetadata::~CMetadata() { } -static void -sp_metadata_init (SPMetadata *metadata) -{ +SPMetadata::SPMetadata() : SPObject() { + SPMetadata* metadata = this; + metadata->cmetadata = new CMetadata(metadata); metadata->typeHierarchy.insert(typeid(SPMetadata)); @@ -60,6 +60,12 @@ sp_metadata_init (SPMetadata *metadata) debug("0x%08x",(unsigned int)metadata); } +static void +sp_metadata_init (SPMetadata *metadata) +{ + new (metadata) SPMetadata(); +} + namespace { void strip_ids_recursively(Inkscape::XML::Node *node) { -- 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-metadata.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index 40ed0c603..12973191f 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -33,6 +33,16 @@ /* Metadata base class */ +#include "sp-factory.h" + +namespace { + SPObject* createMetadata() { + return new SPMetadata(); + } + + bool metadataRegistered = SPFactory::instance().registerObject("svg:metadata", createMetadata); +} + G_DEFINE_TYPE(SPMetadata, sp_metadata, G_TYPE_OBJECT); static void -- 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-metadata.cpp | 47 +++++++++++++---------------------------------- 1 file changed, 13 insertions(+), 34 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index 12973191f..22fbc320a 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -43,37 +43,15 @@ namespace { bool metadataRegistered = SPFactory::instance().registerObject("svg:metadata", createMetadata); } -G_DEFINE_TYPE(SPMetadata, sp_metadata, G_TYPE_OBJECT); +SPMetadata::SPMetadata() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; -static void -sp_metadata_class_init (SPMetadataClass *klass) -{ -} - -CMetadata::CMetadata(SPMetadata* metadata) : CObject(metadata) { - this->spmetadata = metadata; -} - -CMetadata::~CMetadata() { -} - -SPMetadata::SPMetadata() : SPObject() { - SPMetadata* metadata = this; - - metadata->cmetadata = new CMetadata(metadata); - metadata->typeHierarchy.insert(typeid(SPMetadata)); - - delete metadata->cobject; - metadata->cobject = metadata->cmetadata; - - (void)metadata; - debug("0x%08x",(unsigned int)metadata); + (void)this; + debug("0x%08x",(unsigned int)this); } -static void -sp_metadata_init (SPMetadata *metadata) -{ - new (metadata) SPMetadata(); +SPMetadata::~SPMetadata() { } namespace { @@ -91,7 +69,7 @@ void strip_ids_recursively(Inkscape::XML::Node *node) { } -void CMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { +void SPMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { using Inkscape::XML::NodeSiblingIterator; debug("0x%08x",(unsigned int)object); @@ -107,7 +85,8 @@ void CMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { CObject::build(doc, repr); } -void CMetadata::release() { + +void SPMetadata::release() { debug("0x%08x",(unsigned int)object); // handle ourself @@ -115,7 +94,7 @@ void CMetadata::release() { CObject::release(); } -void CMetadata::set(unsigned int key, const gchar* value) { +void SPMetadata::set(unsigned int key, const gchar* value) { debug("0x%08x %s(%u): '%s'",(unsigned int)object, sp_attribute_name(key),key,value); @@ -123,7 +102,7 @@ void CMetadata::set(unsigned int key, const gchar* value) { CObject::set(key, value); } -void CMetadata::update(SPCtx* ctx, unsigned int flags) { +void SPMetadata::update(SPCtx* ctx, unsigned int flags) { debug("0x%08x",(unsigned int)object); //SPMetadata *metadata = SP_METADATA(object); @@ -137,8 +116,8 @@ void CMetadata::update(SPCtx* ctx, unsigned int flags) { // CObject::onUpdate(ctx, flags); } -Inkscape::XML::Node* CMetadata::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { - SPMetadata* object = this->spmetadata; +Inkscape::XML::Node* SPMetadata::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { + SPMetadata* object = this; debug("0x%08x",(unsigned int)object); //SPMetadata *metadata = SP_METADATA(object); -- 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-metadata.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index 22fbc320a..edb73c9b1 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -43,10 +43,7 @@ namespace { bool metadataRegistered = SPFactory::instance().registerObject("svg:metadata", createMetadata); } -SPMetadata::SPMetadata() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; - +SPMetadata::SPMetadata() : SPObject() { (void)this; debug("0x%08x",(unsigned int)this); } @@ -83,7 +80,7 @@ void SPMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { } } - CObject::build(doc, repr); + SPObject::build(doc, repr); } void SPMetadata::release() { @@ -91,7 +88,7 @@ void SPMetadata::release() { // handle ourself - CObject::release(); + SPObject::release(); } void SPMetadata::set(unsigned int key, const gchar* value) { @@ -99,7 +96,7 @@ void SPMetadata::set(unsigned int key, const gchar* value) { sp_attribute_name(key),key,value); // see if any parents need this value - CObject::set(key, value); + SPObject::set(key, value); } void SPMetadata::update(SPCtx* ctx, unsigned int flags) { @@ -113,7 +110,7 @@ void SPMetadata::update(SPCtx* ctx, unsigned int flags) { } -// CObject::onUpdate(ctx, flags); +// SPObject::onUpdate(ctx, flags); } Inkscape::XML::Node* SPMetadata::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { @@ -130,7 +127,7 @@ Inkscape::XML::Node* SPMetadata::write(Inkscape::XML::Document* doc, Inkscape::X } } - CObject::write(doc, repr, flags); + SPObject::write(doc, repr, flags); return repr; } -- 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-metadata.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'src/sp-metadata.cpp') diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index edb73c9b1..a093107ac 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -44,8 +44,6 @@ namespace { } SPMetadata::SPMetadata() : SPObject() { - (void)this; - debug("0x%08x",(unsigned int)this); } SPMetadata::~SPMetadata() { @@ -69,11 +67,12 @@ void strip_ids_recursively(Inkscape::XML::Node *node) { void SPMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { using Inkscape::XML::NodeSiblingIterator; - debug("0x%08x",(unsigned int)object); + debug("0x%08x",(unsigned int)this); /* clean up our mess from earlier versions; elements under rdf:RDF should not * have id= attributes... */ - static GQuark const rdf_root_name=g_quark_from_static_string("rdf:RDF"); + static GQuark const rdf_root_name = g_quark_from_static_string("rdf:RDF"); + for ( NodeSiblingIterator iter=repr->firstChild() ; iter ; ++iter ) { if ( (GQuark)iter->code() == rdf_root_name ) { strip_ids_recursively(iter); @@ -84,7 +83,7 @@ void SPMetadata::build(SPDocument* doc, Inkscape::XML::Node* repr) { } void SPMetadata::release() { - debug("0x%08x",(unsigned int)object); + debug("0x%08x",(unsigned int)this); // handle ourself @@ -92,7 +91,7 @@ void SPMetadata::release() { } void SPMetadata::set(unsigned int key, const gchar* value) { - debug("0x%08x %s(%u): '%s'",(unsigned int)object, + debug("0x%08x %s(%u): '%s'",(unsigned int)this, sp_attribute_name(key),key,value); // see if any parents need this value @@ -100,7 +99,7 @@ void SPMetadata::set(unsigned int key, const gchar* value) { } void SPMetadata::update(SPCtx* ctx, unsigned int flags) { - debug("0x%08x",(unsigned int)object); + debug("0x%08x",(unsigned int)this); //SPMetadata *metadata = SP_METADATA(object); if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | @@ -114,16 +113,13 @@ void SPMetadata::update(SPCtx* ctx, unsigned int flags) { } Inkscape::XML::Node* SPMetadata::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { - SPMetadata* object = this; - - debug("0x%08x",(unsigned int)object); - //SPMetadata *metadata = SP_METADATA(object); + debug("0x%08x",(unsigned int)this); - if ( repr != object->getRepr() ) { + if ( repr != this->getRepr() ) { if (repr) { - repr->mergeFrom(object->getRepr(), "id"); + repr->mergeFrom(this->getRepr(), "id"); } else { - repr = object->getRepr()->duplicate(doc); + repr = this->getRepr()->duplicate(doc); } } -- cgit v1.2.3