diff options
Diffstat (limited to 'src/sp-string.cpp')
| -rw-r--r-- | src/sp-string.cpp | 102 |
1 files changed, 27 insertions, 75 deletions
diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 3512aa45a..08755a5fc 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -32,87 +32,42 @@ #include "sp-string.h" #include "xml/repr.h" +#include "sp-factory.h" -/*##################################################### -# SPSTRING -#####################################################*/ - -static void sp_string_class_init(SPStringClass *classname); -static void sp_string_init(SPString *string); - -static void sp_string_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); -static void sp_string_release(SPObject *object); -static void sp_string_read_content(SPObject *object); -static void sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags); - -static SPObjectClass *string_parent_class; - -GType -sp_string_get_type() -{ - static GType type = 0; - if (!type) { - GTypeInfo info = { - sizeof(SPStringClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) sp_string_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(SPString), - 16, /* n_preallocs */ - (GInstanceInitFunc) sp_string_init, - NULL, /* value_table */ - }; - type = g_type_register_static(SP_TYPE_OBJECT, "SPString", &info, (GTypeFlags)0); +namespace { + SPObject* createString() { + return new SPString(); } - return type; -} - -static void -sp_string_class_init(SPStringClass *classname) -{ - SPObjectClass *sp_object_class; - sp_object_class = (SPObjectClass *) classname; + bool stringRegistered = SPFactory::instance().registerObject("string", createString); +} - string_parent_class = (SPObjectClass*)g_type_class_ref(SP_TYPE_OBJECT); +/*##################################################### +# SPSTRING +#####################################################*/ - sp_object_class->build = sp_string_build; - sp_object_class->release = sp_string_release; - sp_object_class->read_content = sp_string_read_content; - sp_object_class->update = sp_string_update; +SPString::SPString() : SPObject() { + //new (&this->string) Glib::ustring(); } -static void -sp_string_init(SPString *string) -{ - new (&string->string) Glib::ustring(); +SPString::~SPString() { } -static void -sp_string_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr) -{ - sp_string_read_content(object); +void SPString::build(SPDocument *doc, Inkscape::XML::Node *repr) { + SPString* object = this; + object->read_content(); - if (((SPObjectClass *) string_parent_class)->build) - ((SPObjectClass *) string_parent_class)->build(object, doc, repr); + SPObject::build(doc, repr); } -static void -sp_string_release(SPObject *object) -{ - SPString *string = SP_STRING(object); +void SPString::release() { + SPObject::release(); +} - string->string.~ustring(); - if (((SPObjectClass *) string_parent_class)->release) - ((SPObjectClass *) string_parent_class)->release(object); -} +void SPString::read_content() { + SPString* object = this; -static void -sp_string_read_content(SPObject *object) -{ SPString *string = SP_STRING(object); string->string.clear(); @@ -153,16 +108,13 @@ sp_string_read_content(SPObject *object) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } -static void -sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags) -{ - if (((SPObjectClass *) string_parent_class)->update) - ((SPObjectClass *) string_parent_class)->update(object, ctx, flags); +void SPString::update(SPCtx * /*ctx*/, unsigned /*flags*/) { +// SPObject::onUpdate(ctx, flags); - if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) { - /* Parent style or we ourselves changed, so recalculate */ - flags &= ~SP_OBJECT_USER_MODIFIED_FLAG_B; // won't be "just a transformation" anymore, we're going to recompute "x" and "y" attributes - } + // if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) { + // /* Parent style or we ourselves changed, so recalculate */ + // flags &= ~SP_OBJECT_USER_MODIFIED_FLAG_B; // won't be "just a transformation" anymore, we're going to recompute "x" and "y" attributes + // } } |
