summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2012-08-21 00:31:16 +0000
committerMarkus Engel <markus.engel@tum.de>2012-08-21 00:31:16 +0000
commit3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2 (patch)
tree2d171e8ef53b91b377be17e9fc3c91c9e248814e /src
parentAdded "virtual pad" to SPStyleElem. (diff)
downloadinkscape-3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2.tar.gz
inkscape-3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2.zip
Added "virtual pad" to SPString.
(bzr r11608.1.33)
Diffstat (limited to 'src')
-rw-r--r--src/sp-string.cpp55
-rw-r--r--src/sp-string.h24
2 files changed, 66 insertions, 13 deletions
diff --git a/src/sp-string.cpp b/src/sp-string.cpp
index 3512aa45a..45bf98ea6 100644
--- a/src/sp-string.cpp
+++ b/src/sp-string.cpp
@@ -84,35 +84,53 @@ sp_string_class_init(SPStringClass *classname)
sp_object_class->update = sp_string_update;
}
+CString::CString(SPString* str) : CObject(str) {
+ this->spstring = str;
+}
+
+CString::~CString() {
+}
+
static void
sp_string_init(SPString *string)
{
+ string->cstring = new CString(string);
+ string->cobject = string->cstring;
+
new (&string->string) Glib::ustring();
}
-static void
-sp_string_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr)
-{
+void CString::onBuild(SPDocument *doc, Inkscape::XML::Node *repr) {
+ SPString* object = this->spstring;
sp_string_read_content(object);
- if (((SPObjectClass *) string_parent_class)->build)
- ((SPObjectClass *) string_parent_class)->build(object, doc, repr);
+ CObject::onBuild(doc, repr);
}
static void
-sp_string_release(SPObject *object)
+sp_string_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr)
{
+ ((SPString*)object)->cstring->onBuild(doc, repr);
+}
+
+void CString::onRelease() {
+ SPString* object = this->spstring;
SPString *string = SP_STRING(object);
string->string.~ustring();
- if (((SPObjectClass *) string_parent_class)->release)
- ((SPObjectClass *) string_parent_class)->release(object);
+ CObject::onRelease();
}
static void
-sp_string_read_content(SPObject *object)
+sp_string_release(SPObject *object)
{
+ ((SPString*)object)->cstring->onRelease();
+}
+
+void CString::onReadContent() {
+ SPString* object = this->spstring;
+
SPString *string = SP_STRING(object);
string->string.clear();
@@ -154,10 +172,17 @@ sp_string_read_content(SPObject *object)
}
static void
-sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags)
+sp_string_read_content(SPObject *object)
{
- if (((SPObjectClass *) string_parent_class)->update)
- ((SPObjectClass *) string_parent_class)->update(object, ctx, flags);
+ ((SPString*)object)->cstring->onReadContent();
+}
+
+void CString::onUpdate(SPCtx *ctx, unsigned flags) {
+ // CPPIFY: This doesn't make no sense.
+ // CObject::onUpdate is pure. What was the idea behind these lines?
+// if (((SPObjectClass *) string_parent_class)->update)
+// ((SPObjectClass *) string_parent_class)->update(object, ctx, flags);
+// CObject::onUpdate(ctx, flags);
if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) {
/* Parent style or we ourselves changed, so recalculate */
@@ -165,6 +190,12 @@ sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags)
}
}
+static void
+sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags)
+{
+ ((SPString*)object)->cstring->onUpdate(ctx, flags);
+}
+
/*
Local Variables:
diff --git a/src/sp-string.h b/src/sp-string.h
index 7242589c6..428e2c557 100644
--- a/src/sp-string.h
+++ b/src/sp-string.h
@@ -16,8 +16,12 @@
#define SP_IS_STRING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_STRING))
#define SP_IS_STRING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_STRING))
+class CString;
+
+class SPString : public SPObject {
+public:
+ CString* cstring;
-struct SPString : public SPObject {
Glib::ustring string;
};
@@ -25,6 +29,24 @@ struct SPStringClass {
SPObjectClass parent_class;
};
+
+class CString : public CObject {
+public:
+ CString(SPString* str);
+ virtual ~CString();
+
+ virtual void onBuild(SPDocument* doc, Inkscape::XML::Node* repr);
+ virtual void onRelease();
+
+ virtual void onReadContent();
+
+ virtual void onUpdate(SPCtx* ctx, unsigned int flags);
+
+protected:
+ SPString* spstring;
+};
+
+
GType sp_string_get_type ();
#endif