From d0397d78191419e6e8b55009a7a932a07f9e4eb4 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 21 Aug 2012 02:31:46 +0200 Subject: Added "virtual pad" to SPScript. (bzr r11608.1.34) --- src/sp-script.cpp | 77 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 22 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index f18d231b0..307e7ad3d 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -64,11 +64,29 @@ static void sp_script_class_init(SPScriptClass *sc) sp_object_class->set = sp_script_set; } -static void sp_script_init(SPScript */*script*/) -{ +CScript::CScript(SPScript* script) : CObject(script) { + this->spscript = script; +} + +CScript::~CScript() { +} +static void sp_script_init(SPScript *script) +{ + script->cscript = new CScript(script); + script->cobject = script->cscript; } +void CScript::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { + SPScript* object = this->spscript; + + CObject::onBuild(doc, repr); + + //Read values of key attributes from XML nodes into object. + object->readAttr( "xlink:href" ); + + doc->addResource("script", object); +} /** * Reads the Inkscape::XML::Node, and initializes SPScript variables. For this to get called, @@ -78,39 +96,44 @@ static void sp_script_init(SPScript */*script*/) static void sp_script_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build(object, document, repr); - } - - //Read values of key attributes from XML nodes into object. - object->readAttr( "xlink:href" ); - - document->addResource("script", object); + ((SPScript*)object)->cscript->onBuild(document, repr); } -static void sp_script_release(SPObject *object) -{ +void CScript::onRelease() { + SPScript* object = this->spscript; + if (object->document) { // Unregister ourselves object->document->removeResource("script", object); } - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); - } + CObject::onRelease(); +} + +static void sp_script_release(SPObject *object) +{ + ((SPScript*)object)->cscript->onRelease(); +} + +void CScript::onUpdate(SPCtx* ctx, unsigned int flags) { + } static void sp_script_update(SPObject */*object*/, SPCtx */*ctx*/, guint /*flags*/) { } +void CScript::onModified(unsigned int flags) { + +} + static void sp_script_modified(SPObject */*object*/, guint /*flags*/) { } -static void -sp_script_set(SPObject *object, unsigned int key, gchar const *value) -{ +void CScript::onSet(unsigned int key, const gchar* value) { + SPScript* object = this->spscript; + SPScript *scr = SP_SCRIPT(object); switch (key) { @@ -120,13 +143,22 @@ sp_script_set(SPObject *object, unsigned int key, gchar const *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) parent_class)->set) - ((SPObjectClass *) parent_class)->set(object, key, value); + CObject::onSet(key, value); break; } } -static Inkscape::XML::Node *sp_script_write(SPObject */*object*/, Inkscape::XML::Document */*xml_doc*/, Inkscape::XML::Node *repr, guint /*flags*/) +static void +sp_script_set(SPObject *object, unsigned int key, gchar const *value) +{ + ((SPScript*)object)->cscript->onSet(key, value); +} + +Inkscape::XML::Node* CScript::onWrite(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { + return repr; +} + +static Inkscape::XML::Node *sp_script_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { /* TODO: @@ -163,7 +195,8 @@ TODO: (* ((SPObjectClass *) (parent_class))->write)(object, xml_doc, repr, flags); } */ - return repr; + + return ((SPScript*)object)->cscript->onWrite(xml_doc, repr, flags); } /* -- 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-script.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 307e7ad3d..c875cfc0f 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -56,7 +56,7 @@ static void sp_script_class_init(SPScriptClass *sc) parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); SPObjectClass *sp_object_class = (SPObjectClass *) sc; - sp_object_class->build = sp_script_build; + //sp_object_class->build = sp_script_build; sp_object_class->release = sp_script_release; sp_object_class->update = sp_script_update; sp_object_class->modified = sp_script_modified; -- 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-script.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index c875cfc0f..0d999feca 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -57,11 +57,11 @@ static void sp_script_class_init(SPScriptClass *sc) SPObjectClass *sp_object_class = (SPObjectClass *) sc; //sp_object_class->build = sp_script_build; - sp_object_class->release = sp_script_release; - sp_object_class->update = sp_script_update; - sp_object_class->modified = sp_script_modified; - sp_object_class->write = sp_script_write; - sp_object_class->set = sp_script_set; +// sp_object_class->release = sp_script_release; +// sp_object_class->update = sp_script_update; +// sp_object_class->modified = sp_script_modified; +// sp_object_class->write = sp_script_write; +// sp_object_class->set = sp_script_set; } CScript::CScript(SPScript* script) : CObject(script) { -- 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-script.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index f9c2e6493..8190fe81c 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -37,10 +37,10 @@ static void sp_script_init(SPScript *script) script->cobject = script->cscript; } -void CScript::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { +void CScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { SPScript* object = this->spscript; - CObject::onBuild(doc, repr); + CObject::build(doc, repr); //Read values of key attributes from XML nodes into object. object->readAttr( "xlink:href" ); @@ -54,7 +54,7 @@ void CScript::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { * sp-object-repr.cpp's repr_name_entries array. */ -void CScript::onRelease() { +void CScript::release() { SPScript* object = this->spscript; if (object->document) { @@ -62,18 +62,18 @@ void CScript::onRelease() { object->document->removeResource("script", object); } - CObject::onRelease(); + CObject::release(); } -void CScript::onUpdate(SPCtx* ctx, unsigned int flags) { +void CScript::update(SPCtx* ctx, unsigned int flags) { } -void CScript::onModified(unsigned int flags) { +void CScript::modified(unsigned int flags) { } -void CScript::onSet(unsigned int key, const gchar* value) { +void CScript::set(unsigned int key, const gchar* value) { SPScript* object = this->spscript; SPScript *scr = SP_SCRIPT(object); @@ -85,12 +85,12 @@ void CScript::onSet(unsigned int key, const gchar* value) { object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - CObject::onSet(key, value); + CObject::set(key, value); break; } } -Inkscape::XML::Node* CScript::onWrite(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* CScript::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint 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-script.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 8190fe81c..6c2a029a0 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -32,6 +32,7 @@ CScript::~CScript() { static void sp_script_init(SPScript *script) { script->cscript = new CScript(script); + script->typeHierarchy.insert(typeid(SPScript)); delete script->cobject; script->cobject = script->cscript; -- 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-script.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 6c2a029a0..0c286e276 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -16,7 +16,7 @@ #include #include "document.h" -G_DEFINE_TYPE(SPScript, sp_script, SP_TYPE_OBJECT); +G_DEFINE_TYPE(SPScript, sp_script, G_TYPE_OBJECT); static void sp_script_class_init(SPScriptClass *sc) { @@ -29,13 +29,21 @@ CScript::CScript(SPScript* script) : CObject(script) { CScript::~CScript() { } -static void sp_script_init(SPScript *script) -{ +SPScript::SPScript() : SPObject() { + SPScript* script = this; + script->cscript = new CScript(script); script->typeHierarchy.insert(typeid(SPScript)); delete script->cobject; script->cobject = script->cscript; + + script->xlinkhref = NULL; +} + +static void sp_script_init(SPScript *script) +{ + new (script) SPScript(); } void CScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { -- 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-script.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 0c286e276..5d706a17e 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -16,6 +16,16 @@ #include #include "document.h" +#include "sp-factory.h" + +namespace { + SPObject* createScript() { + return new SPScript(); + } + + bool scriptRegistered = SPFactory::instance().registerObject("svg:script", createScript); +} + G_DEFINE_TYPE(SPScript, sp_script, G_TYPE_OBJECT); static void sp_script_class_init(SPScriptClass *sc) -- 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-script.cpp | 48 ++++++++++++++---------------------------------- 1 file changed, 14 insertions(+), 34 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 5d706a17e..e0cae1ea5 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -26,38 +26,18 @@ namespace { bool scriptRegistered = SPFactory::instance().registerObject("svg:script", createScript); } -G_DEFINE_TYPE(SPScript, sp_script, G_TYPE_OBJECT); +SPScript::SPScript() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; -static void sp_script_class_init(SPScriptClass *sc) -{ + this->xlinkhref = NULL; } -CScript::CScript(SPScript* script) : CObject(script) { - this->spscript = script; +SPScript::~SPScript() { } -CScript::~CScript() { -} - -SPScript::SPScript() : SPObject() { - SPScript* script = this; - - script->cscript = new CScript(script); - script->typeHierarchy.insert(typeid(SPScript)); - - delete script->cobject; - script->cobject = script->cscript; - - script->xlinkhref = NULL; -} - -static void sp_script_init(SPScript *script) -{ - new (script) SPScript(); -} - -void CScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { - SPScript* object = this->spscript; +void SPScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { + SPScript* object = this; CObject::build(doc, repr); @@ -73,8 +53,8 @@ void CScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { * sp-object-repr.cpp's repr_name_entries array. */ -void CScript::release() { - SPScript* object = this->spscript; +void SPScript::release() { + SPScript* object = this; if (object->document) { // Unregister ourselves @@ -84,16 +64,16 @@ void CScript::release() { CObject::release(); } -void CScript::update(SPCtx* ctx, unsigned int flags) { +void SPScript::update(SPCtx* ctx, unsigned int flags) { } -void CScript::modified(unsigned int flags) { +void SPScript::modified(unsigned int flags) { } -void CScript::set(unsigned int key, const gchar* value) { - SPScript* object = this->spscript; +void SPScript::set(unsigned int key, const gchar* value) { + SPScript* object = this; SPScript *scr = SP_SCRIPT(object); @@ -109,7 +89,7 @@ void CScript::set(unsigned int key, const gchar* value) { } } -Inkscape::XML::Node* CScript::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* SPScript::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint 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-script.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index e0cae1ea5..99b57d8e9 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -26,10 +26,7 @@ namespace { bool scriptRegistered = SPFactory::instance().registerObject("svg:script", createScript); } -SPScript::SPScript() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; - +SPScript::SPScript() : SPObject() { this->xlinkhref = NULL; } @@ -39,7 +36,7 @@ SPScript::~SPScript() { void SPScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { SPScript* object = this; - CObject::build(doc, repr); + SPObject::build(doc, repr); //Read values of key attributes from XML nodes into object. object->readAttr( "xlink:href" ); @@ -61,7 +58,7 @@ void SPScript::release() { object->document->removeResource("script", object); } - CObject::release(); + SPObject::release(); } void SPScript::update(SPCtx* ctx, unsigned int flags) { @@ -84,7 +81,7 @@ void SPScript::set(unsigned int key, const gchar* value) { object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - CObject::set(key, value); + SPObject::set(key, value); break; } } -- 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-script.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'src/sp-script.cpp') diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 99b57d8e9..158796e51 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -34,14 +34,12 @@ SPScript::~SPScript() { } void SPScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { - SPScript* object = this; - SPObject::build(doc, repr); //Read values of key attributes from XML nodes into object. - object->readAttr( "xlink:href" ); + this->readAttr( "xlink:href" ); - doc->addResource("script", object); + doc->addResource("script", this); } /** @@ -51,11 +49,9 @@ void SPScript::build(SPDocument* doc, Inkscape::XML::Node* repr) { */ void SPScript::release() { - SPScript* object = this; - - if (object->document) { + if (this->document) { // Unregister ourselves - object->document->removeResource("script", object); + this->document->removeResource("script", this); } SPObject::release(); @@ -70,15 +66,14 @@ void SPScript::modified(unsigned int flags) { void SPScript::set(unsigned int key, const gchar* value) { - SPScript* object = this; - - SPScript *scr = SP_SCRIPT(object); - switch (key) { case SP_ATTR_XLINK_HREF: - if (scr->xlinkhref) g_free(scr->xlinkhref); - scr->xlinkhref = g_strdup(value); - object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + if (this->xlinkhref) { + g_free(this->xlinkhref); + } + + this->xlinkhref = g_strdup(value); + this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: SPObject::set(key, value); -- cgit v1.2.3