diff options
| author | Markus Engel <markus.engel@tum.de> | 2012-08-21 00:31:16 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2012-08-21 00:31:16 +0000 |
| commit | 3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2 (patch) | |
| tree | 2d171e8ef53b91b377be17e9fc3c91c9e248814e /src/sp-string.cpp | |
| parent | Added "virtual pad" to SPStyleElem. (diff) | |
| download | inkscape-3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2.tar.gz inkscape-3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2.zip | |
Added "virtual pad" to SPString.
(bzr r11608.1.33)
Diffstat (limited to '')
| -rw-r--r-- | src/sp-string.cpp | 55 |
1 files changed, 43 insertions, 12 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: |
