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-font.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 852e6ba5d..c91abdaba 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -70,7 +70,7 @@ static void sp_font_class_init(SPFontClass *fc) parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_font_build; + //sp_object_class->build = sp_font_build; sp_object_class->release = sp_font_release; sp_object_class->set = sp_font_set; sp_object_class->write = sp_font_write; @@ -98,9 +98,11 @@ static void sp_font_init(SPFont *font) static void sp_font_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { - if (((SPObjectClass *) (parent_class))->build) { - ((SPObjectClass *) (parent_class))->build(object, document, repr); - } +// if (((SPObjectClass *) (parent_class))->build) { +// ((SPObjectClass *) (parent_class))->build(object, document, repr); +// } + // CPPIFY: todo + object->readAttr( "horiz-origin-x" ); object->readAttr( "horiz-origin-y" ); -- cgit v1.2.3 From 3d7b1356600880a43e44e864cab08fff29cd23af Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:45:33 +0100 Subject: Added "virtual pads" to - SPFeFuncNode - SPFeDistantLight - SPFeMergeNode - SPFePointLight - SPFeSpotLight - SPFilter - SPFont - SPGuide Changes in SPItem and SPNamedView. (bzr r11608.1.49) --- src/sp-font.cpp | 249 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 218 insertions(+), 31 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index c91abdaba..ec7af0dd1 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -86,8 +86,18 @@ double FNT_DEFAULT_ADV = 90; // TODO determine proper default double FNT_DEFAULT_ASCENT = 90; // TODO determine proper default double FNT_UNITS_PER_EM = 90; // TODO determine proper default +CFont::CFont(SPFont* font) : CObject(font) { + this->spfont = font; +} + +CFont::~CFont() { +} + static void sp_font_init(SPFont *font) { + font->cfont = new CFont(font); + font->cobject = font->cfont; + font->horiz_origin_x = 0; font->horiz_origin_y = 0; font->horiz_adv_x = FNT_DEFAULT_ADV; @@ -96,25 +106,37 @@ static void sp_font_init(SPFont *font) font->vert_adv_y = FNT_UNITS_PER_EM; } -static void sp_font_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ +//static void sp_font_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +//{ // if (((SPObjectClass *) (parent_class))->build) { // ((SPObjectClass *) (parent_class))->build(object, document, repr); // } - // CPPIFY: todo - - - object->readAttr( "horiz-origin-x" ); - object->readAttr( "horiz-origin-y" ); - object->readAttr( "horiz-adv-x" ); - object->readAttr( "vert-origin-x" ); - object->readAttr( "vert-origin-y" ); - object->readAttr( "vert-adv-y" ); - - document->addResource("font", object); +// +// object->readAttr( "horiz-origin-x" ); +// object->readAttr( "horiz-origin-y" ); +// object->readAttr( "horiz-adv-x" ); +// object->readAttr( "vert-origin-x" ); +// object->readAttr( "vert-origin-y" ); +// object->readAttr( "vert-adv-y" ); +// +// document->addResource("font", object); +//} + +void CFont::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { + CObject::onBuild(document, repr); + + SPFont* object = this->spfont; + + object->readAttr( "horiz-origin-x" ); + object->readAttr( "horiz-origin-y" ); + object->readAttr( "horiz-adv-x" ); + object->readAttr( "vert-origin-x" ); + object->readAttr( "vert-origin-y" ); + object->readAttr( "vert-adv-y" ); + + document->addResource("font", object); } - static void sp_font_children_modified(SPFont */*sp_font*/) { } @@ -125,10 +147,23 @@ static void sp_font_children_modified(SPFont */*sp_font*/) static void sp_font_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - SPFont *f = SP_FONT(object); +// SPFont *f = SP_FONT(object); +// +// if (((SPObjectClass *) parent_class)->child_added) +// (* ((SPObjectClass *) parent_class)->child_added)(object, child, ref); +// +// sp_font_children_modified(f); +// object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + ((SPFont*)object)->cfont->onChildAdded(child, ref); +} - if (((SPObjectClass *) parent_class)->child_added) - (* ((SPObjectClass *) parent_class)->child_added)(object, child, ref); +void CFont::onChildAdded(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { + SPFont* object = this->spfont; + SPFont *f = SP_FONT(object); +// +// if (((SPObjectClass *) parent_class)->child_added) +// (* ((SPObjectClass *) parent_class)->child_added)(object, child, ref); + CObject::onChildAdded(child, ref); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -141,10 +176,23 @@ sp_font_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML: static void sp_font_remove_child(SPObject *object, Inkscape::XML::Node *child) { +// SPFont *f = SP_FONT(object); +// +// if (((SPObjectClass *) parent_class)->remove_child) +// (* ((SPObjectClass *) parent_class)->remove_child)(object, child); +// +// sp_font_children_modified(f); +// object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + ((SPFont*)object)->cfont->onRemoveChild(child); +} + +void CFont::onRemoveChild(Inkscape::XML::Node* child) { + SPFont* object = this->spfont; SPFont *f = SP_FONT(object); - if (((SPObjectClass *) parent_class)->remove_child) - (* ((SPObjectClass *) parent_class)->remove_child)(object, child); +// if (((SPObjectClass *) parent_class)->remove_child) +// (* ((SPObjectClass *) parent_class)->remove_child)(object, child); + CObject::onRemoveChild(child); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -152,16 +200,98 @@ sp_font_remove_child(SPObject *object, Inkscape::XML::Node *child) static void sp_font_release(SPObject *object) { +// //SPFont *font = SP_FONT(object); +// object->document->removeResource("font", object); +// +// if (((SPObjectClass *) parent_class)->release) { +// ((SPObjectClass *) parent_class)->release(object); +// } + ((SPFont*)object)->cfont->onRelease(); +} + +void CFont::onRelease() { //SPFont *font = SP_FONT(object); + SPFont* object = this->spfont; + object->document->removeResource("font", object); - if (((SPObjectClass *) parent_class)->release) { - ((SPObjectClass *) parent_class)->release(object); - } +// if (((SPObjectClass *) parent_class)->release) { +// ((SPObjectClass *) parent_class)->release(object); +// } + CObject::onRelease(); } static void sp_font_set(SPObject *object, unsigned int key, const gchar *value) { +// SPFont *font = SP_FONT(object); +// +// // TODO these are floating point, so some epsilon comparison would be good +// switch (key) { +// case SP_ATTR_HORIZ_ORIGIN_X: +// { +// double number = value ? g_ascii_strtod(value, 0) : 0; +// if (number != font->horiz_origin_x){ +// font->horiz_origin_x = number; +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// } +// case SP_ATTR_HORIZ_ORIGIN_Y: +// { +// double number = value ? g_ascii_strtod(value, 0) : 0; +// if (number != font->horiz_origin_y){ +// font->horiz_origin_y = number; +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// } +// case SP_ATTR_HORIZ_ADV_X: +// { +// double number = value ? g_ascii_strtod(value, 0) : FNT_DEFAULT_ADV; +// if (number != font->horiz_adv_x){ +// font->horiz_adv_x = number; +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// } +// case SP_ATTR_VERT_ORIGIN_X: +// { +// double number = value ? g_ascii_strtod(value, 0) : FNT_DEFAULT_ADV / 2.0; +// if (number != font->vert_origin_x){ +// font->vert_origin_x = number; +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// } +// case SP_ATTR_VERT_ORIGIN_Y: +// { +// double number = value ? g_ascii_strtod(value, 0) : FNT_DEFAULT_ASCENT; +// if (number != font->vert_origin_y){ +// font->vert_origin_y = number; +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// } +// case SP_ATTR_VERT_ADV_Y: +// { +// double number = value ? g_ascii_strtod(value, 0) : FNT_UNITS_PER_EM; +// if (number != font->vert_adv_y){ +// font->vert_adv_y = number; +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// } +// break; +// } +// default: +// if (((SPObjectClass *) (parent_class))->set) { +// ((SPObjectClass *) (parent_class))->set(object, key, value); +// } +// break; +// } + ((SPFont*)object)->cfont->onSet(key, value); +} + +void CFont::onSet(unsigned int key, const gchar *value) { + SPFont* object = this->spfont; SPFont *font = SP_FONT(object); // TODO these are floating point, so some epsilon comparison would be good @@ -221,9 +351,10 @@ static void sp_font_set(SPObject *object, unsigned int key, const gchar *value) break; } default: - if (((SPObjectClass *) (parent_class))->set) { - ((SPObjectClass *) (parent_class))->set(object, key, value); - } +// if (((SPObjectClass *) (parent_class))->set) { +// ((SPObjectClass *) (parent_class))->set(object, key, value); +// } + CObject::onSet(key, value); break; } } @@ -234,6 +365,24 @@ static void sp_font_set(SPObject *object, unsigned int key, const gchar *value) static void sp_font_update(SPObject *object, SPCtx *ctx, guint flags) { +// if (flags & (SP_OBJECT_MODIFIED_FLAG)) { +// object->readAttr( "horiz-origin-x" ); +// object->readAttr( "horiz-origin-y" ); +// object->readAttr( "horiz-adv-x" ); +// object->readAttr( "vert-origin-x" ); +// object->readAttr( "vert-origin-y" ); +// object->readAttr( "vert-adv-y" ); +// } +// +// if (((SPObjectClass *) parent_class)->update) { +// ((SPObjectClass *) parent_class)->update(object, ctx, flags); +// } + ((SPFont*)object)->cfont->onUpdate(ctx, flags); +} + +void CFont::onUpdate(SPCtx *ctx, guint flags) { + SPFont* object = this->spfont; + if (flags & (SP_OBJECT_MODIFIED_FLAG)) { object->readAttr( "horiz-origin-x" ); object->readAttr( "horiz-origin-y" ); @@ -243,15 +392,51 @@ sp_font_update(SPObject *object, SPCtx *ctx, guint flags) object->readAttr( "vert-adv-y" ); } - if (((SPObjectClass *) parent_class)->update) { - ((SPObjectClass *) parent_class)->update(object, ctx, flags); - } +// if (((SPObjectClass *) parent_class)->update) { +// ((SPObjectClass *) parent_class)->update(object, ctx, flags); +// } + CObject::onUpdate(ctx, flags); } #define COPY_ATTR(rd,rs,key) (rd)->setAttribute((key), rs->attribute(key)); static Inkscape::XML::Node *sp_font_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { +// SPFont *font = SP_FONT(object); +// +// if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { +// repr = xml_doc->createElement("svg:font"); +// } +// +// sp_repr_set_svg_double(repr, "horiz-origin-x", font->horiz_origin_x); +// sp_repr_set_svg_double(repr, "horiz-origin-y", font->horiz_origin_y); +// sp_repr_set_svg_double(repr, "horiz-adv-x", font->horiz_adv_x); +// sp_repr_set_svg_double(repr, "vert-origin-x", font->vert_origin_x); +// sp_repr_set_svg_double(repr, "vert-origin-y", font->vert_origin_y); +// sp_repr_set_svg_double(repr, "vert-adv-y", font->vert_adv_y); +// +// if (repr != object->getRepr()) { +// // All the below COPY_ATTR funtions are directly using +// // the XML Tree while they shouldn't +// COPY_ATTR(repr, object->getRepr(), "horiz-origin-x"); +// COPY_ATTR(repr, object->getRepr(), "horiz-origin-y"); +// COPY_ATTR(repr, object->getRepr(), "horiz-adv-x"); +// COPY_ATTR(repr, object->getRepr(), "vert-origin-x"); +// COPY_ATTR(repr, object->getRepr(), "vert-origin-y"); +// COPY_ATTR(repr, object->getRepr(), "vert-adv-y"); +// } +// +// if (((SPObjectClass *) (parent_class))->write) { +// ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); +// } +// +// return repr; + + return ((SPFont*)object)->cfont->onWrite(xml_doc, repr, flags); +} + +Inkscape::XML::Node* CFont::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPFont* object = this->spfont; SPFont *font = SP_FONT(object); if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { @@ -276,12 +461,14 @@ static Inkscape::XML::Node *sp_font_write(SPObject *object, Inkscape::XML::Docum COPY_ATTR(repr, object->getRepr(), "vert-adv-y"); } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); - } +// if (((SPObjectClass *) (parent_class))->write) { +// ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); +// } + CObject::onWrite(xml_doc, repr, flags); return repr; } + #endif //#ifdef ENABLE_SVG_FONTS /* Local Variables: -- 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-font.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index ec7af0dd1..2221d6311 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -71,12 +71,12 @@ static void sp_font_class_init(SPFontClass *fc) parent_class = (SPObjectClass *) g_type_class_ref(SP_TYPE_OBJECT); //sp_object_class->build = sp_font_build; - sp_object_class->release = sp_font_release; - sp_object_class->set = sp_font_set; - sp_object_class->write = sp_font_write; - sp_object_class->child_added = sp_font_child_added; - sp_object_class->remove_child = sp_font_remove_child; - sp_object_class->update = sp_font_update; +// sp_object_class->release = sp_font_release; +// sp_object_class->set = sp_font_set; +// sp_object_class->write = sp_font_write; +// sp_object_class->child_added = sp_font_child_added; +// sp_object_class->remove_child = sp_font_remove_child; +// sp_object_class->update = sp_font_update; } //I think we should have extra stuff here and in the set method in order to set default value as specified at http://www.w3.org/TR/SVG/fonts.html -- 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-font.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 737891573..0028310a6 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -58,8 +58,8 @@ static void sp_font_init(SPFont *font) font->vert_adv_y = FNT_UNITS_PER_EM; } -void CFont::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { - CObject::onBuild(document, repr); +void CFont::build(SPDocument *document, Inkscape::XML::Node *repr) { + CObject::build(document, repr); SPFont* object = this->spfont; @@ -80,10 +80,10 @@ static void sp_font_children_modified(SPFont */*sp_font*/) /** * Callback for child_added event. */ -void CFont::onChildAdded(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { +void CFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { SPFont* object = this->spfont; SPFont *f = SP_FONT(object); - CObject::onChildAdded(child, ref); + CObject::child_added(child, ref); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -93,26 +93,26 @@ void CFont::onChildAdded(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { /** * Callback for remove_child event. */ -void CFont::onRemoveChild(Inkscape::XML::Node* child) { +void CFont::remove_child(Inkscape::XML::Node* child) { SPFont* object = this->spfont; SPFont *f = SP_FONT(object); - CObject::onRemoveChild(child); + CObject::remove_child(child); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } -void CFont::onRelease() { +void CFont::release() { //SPFont *font = SP_FONT(object); SPFont* object = this->spfont; object->document->removeResource("font", object); - CObject::onRelease(); + CObject::release(); } -void CFont::onSet(unsigned int key, const gchar *value) { +void CFont::set(unsigned int key, const gchar *value) { SPFont* object = this->spfont; SPFont *font = SP_FONT(object); @@ -173,7 +173,7 @@ void CFont::onSet(unsigned int key, const gchar *value) { break; } default: - CObject::onSet(key, value); + CObject::set(key, value); break; } } @@ -181,7 +181,7 @@ void CFont::onSet(unsigned int key, const gchar *value) { /** * Receives update notifications. */ -void CFont::onUpdate(SPCtx *ctx, guint flags) { +void CFont::update(SPCtx *ctx, guint flags) { SPFont* object = this->spfont; if (flags & (SP_OBJECT_MODIFIED_FLAG)) { @@ -193,12 +193,12 @@ void CFont::onUpdate(SPCtx *ctx, guint flags) { object->readAttr( "vert-adv-y" ); } - CObject::onUpdate(ctx, flags); + CObject::update(ctx, flags); } #define COPY_ATTR(rd,rs,key) (rd)->setAttribute((key), rs->attribute(key)); -Inkscape::XML::Node* CFont::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { +Inkscape::XML::Node* CFont::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SPFont* object = this->spfont; SPFont *font = SP_FONT(object); @@ -224,7 +224,7 @@ Inkscape::XML::Node* CFont::onWrite(Inkscape::XML::Document *xml_doc, Inkscape:: COPY_ATTR(repr, object->getRepr(), "vert-adv-y"); } - CObject::onWrite(xml_doc, repr, flags); + CObject::write(xml_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-font.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 0028310a6..0a7c63e33 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -46,6 +46,7 @@ CFont::~CFont() { static void sp_font_init(SPFont *font) { font->cfont = new CFont(font); + font->typeHierarchy.insert(typeid(SPFont)); delete font->cobject; font->cobject = font->cfont; -- 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-font.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 0a7c63e33..d7eafe84e 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -23,7 +23,7 @@ #include "display/nr-svgfonts.h" -G_DEFINE_TYPE(SPFont, sp_font, SP_TYPE_OBJECT); +G_DEFINE_TYPE(SPFont, sp_font, G_TYPE_OBJECT); static void sp_font_class_init(SPFontClass *fc) { @@ -43,8 +43,9 @@ CFont::CFont(SPFont* font) : CObject(font) { CFont::~CFont() { } -static void sp_font_init(SPFont *font) -{ +SPFont::SPFont() : SPObject() { + SPFont* font = this; + font->cfont = new CFont(font); font->typeHierarchy.insert(typeid(SPFont)); @@ -59,6 +60,11 @@ static void sp_font_init(SPFont *font) font->vert_adv_y = FNT_UNITS_PER_EM; } +static void sp_font_init(SPFont *font) +{ + new (font) SPFont(); +} + void CFont::build(SPDocument *document, Inkscape::XML::Node *repr) { CObject::build(document, 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-font.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index d7eafe84e..ed91dc6e7 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -23,6 +23,16 @@ #include "display/nr-svgfonts.h" +#include "sp-factory.h" + +namespace { + SPObject* createFont() { + return new SPFont(); + } + + bool fontRegistered = SPFactory::instance().registerObject("svg:font", createFont); +} + G_DEFINE_TYPE(SPFont, sp_font, G_TYPE_OBJECT); static void sp_font_class_init(SPFontClass *fc) -- 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-font.cpp | 68 ++++++++++++++++++++------------------------------------- 1 file changed, 24 insertions(+), 44 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index ed91dc6e7..3a8997820 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -33,12 +33,6 @@ namespace { bool fontRegistered = SPFactory::instance().registerObject("svg:font", createFont); } -G_DEFINE_TYPE(SPFont, sp_font, G_TYPE_OBJECT); - -static void sp_font_class_init(SPFontClass *fc) -{ -} - //I think we should have extra stuff here and in the set method in order to set default value as specified at http://www.w3.org/TR/SVG/fonts.html // TODO determine better values and/or make these dynamic: @@ -46,39 +40,25 @@ double FNT_DEFAULT_ADV = 90; // TODO determine proper default double FNT_DEFAULT_ASCENT = 90; // TODO determine proper default double FNT_UNITS_PER_EM = 90; // TODO determine proper default -CFont::CFont(SPFont* font) : CObject(font) { - this->spfont = font; -} +SPFont::SPFont() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; -CFont::~CFont() { + this->horiz_origin_x = 0; + this->horiz_origin_y = 0; + this->horiz_adv_x = FNT_DEFAULT_ADV; + this->vert_origin_x = FNT_DEFAULT_ADV / 2.0; + this->vert_origin_y = FNT_DEFAULT_ASCENT; + this->vert_adv_y = FNT_UNITS_PER_EM; } -SPFont::SPFont() : SPObject() { - SPFont* font = this; - - font->cfont = new CFont(font); - font->typeHierarchy.insert(typeid(SPFont)); - - delete font->cobject; - font->cobject = font->cfont; - - font->horiz_origin_x = 0; - font->horiz_origin_y = 0; - font->horiz_adv_x = FNT_DEFAULT_ADV; - font->vert_origin_x = FNT_DEFAULT_ADV / 2.0; - font->vert_origin_y = FNT_DEFAULT_ASCENT; - font->vert_adv_y = FNT_UNITS_PER_EM; -} - -static void sp_font_init(SPFont *font) -{ - new (font) SPFont(); +SPFont::~SPFont() { } -void CFont::build(SPDocument *document, Inkscape::XML::Node *repr) { +void SPFont::build(SPDocument *document, Inkscape::XML::Node *repr) { CObject::build(document, repr); - SPFont* object = this->spfont; + SPFont* object = this; object->readAttr( "horiz-origin-x" ); object->readAttr( "horiz-origin-y" ); @@ -97,8 +77,8 @@ static void sp_font_children_modified(SPFont */*sp_font*/) /** * Callback for child_added event. */ -void CFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - SPFont* object = this->spfont; +void SPFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { + SPFont* object = this; SPFont *f = SP_FONT(object); CObject::child_added(child, ref); @@ -110,8 +90,8 @@ void CFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { /** * Callback for remove_child event. */ -void CFont::remove_child(Inkscape::XML::Node* child) { - SPFont* object = this->spfont; +void SPFont::remove_child(Inkscape::XML::Node* child) { + SPFont* object = this; SPFont *f = SP_FONT(object); CObject::remove_child(child); @@ -120,17 +100,17 @@ void CFont::remove_child(Inkscape::XML::Node* child) { object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } -void CFont::release() { +void SPFont::release() { //SPFont *font = SP_FONT(object); - SPFont* object = this->spfont; + SPFont* object = this; object->document->removeResource("font", object); CObject::release(); } -void CFont::set(unsigned int key, const gchar *value) { - SPFont* object = this->spfont; +void SPFont::set(unsigned int key, const gchar *value) { + SPFont* object = this; SPFont *font = SP_FONT(object); // TODO these are floating point, so some epsilon comparison would be good @@ -198,8 +178,8 @@ void CFont::set(unsigned int key, const gchar *value) { /** * Receives update notifications. */ -void CFont::update(SPCtx *ctx, guint flags) { - SPFont* object = this->spfont; +void SPFont::update(SPCtx *ctx, guint flags) { + SPFont* object = this; if (flags & (SP_OBJECT_MODIFIED_FLAG)) { object->readAttr( "horiz-origin-x" ); @@ -215,8 +195,8 @@ void CFont::update(SPCtx *ctx, guint flags) { #define COPY_ATTR(rd,rs,key) (rd)->setAttribute((key), rs->attribute(key)); -Inkscape::XML::Node* CFont::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { - SPFont* object = this->spfont; +Inkscape::XML::Node* SPFont::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + SPFont* object = this; SPFont *font = SP_FONT(object); if ((flags & SP_OBJECT_WRITE_BUILD) && !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-font.cpp | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 3a8997820..b85d25918 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -40,10 +40,7 @@ double FNT_DEFAULT_ADV = 90; // TODO determine proper default double FNT_DEFAULT_ASCENT = 90; // TODO determine proper default double FNT_UNITS_PER_EM = 90; // TODO determine proper default -SPFont::SPFont() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; - +SPFont::SPFont() : SPObject() { this->horiz_origin_x = 0; this->horiz_origin_y = 0; this->horiz_adv_x = FNT_DEFAULT_ADV; @@ -56,7 +53,7 @@ SPFont::~SPFont() { } void SPFont::build(SPDocument *document, Inkscape::XML::Node *repr) { - CObject::build(document, repr); + SPObject::build(document, repr); SPFont* object = this; @@ -80,7 +77,7 @@ static void sp_font_children_modified(SPFont */*sp_font*/) void SPFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { SPFont* object = this; SPFont *f = SP_FONT(object); - CObject::child_added(child, ref); + SPObject::child_added(child, ref); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -94,7 +91,7 @@ void SPFont::remove_child(Inkscape::XML::Node* child) { SPFont* object = this; SPFont *f = SP_FONT(object); - CObject::remove_child(child); + SPObject::remove_child(child); sp_font_children_modified(f); object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -106,7 +103,7 @@ void SPFont::release() { object->document->removeResource("font", object); - CObject::release(); + SPObject::release(); } void SPFont::set(unsigned int key, const gchar *value) { @@ -170,7 +167,7 @@ void SPFont::set(unsigned int key, const gchar *value) { break; } default: - CObject::set(key, value); + SPObject::set(key, value); break; } } @@ -190,7 +187,7 @@ void SPFont::update(SPCtx *ctx, guint flags) { object->readAttr( "vert-adv-y" ); } - CObject::update(ctx, flags); + SPObject::update(ctx, flags); } #define COPY_ATTR(rd,rs,key) (rd)->setAttribute((key), rs->attribute(key)); @@ -221,7 +218,7 @@ Inkscape::XML::Node* SPFont::write(Inkscape::XML::Document *xml_doc, Inkscape::X COPY_ATTR(repr, object->getRepr(), "vert-adv-y"); } - CObject::write(xml_doc, repr, flags); + SPObject::write(xml_doc, repr, flags); return repr; } -- cgit v1.2.3 From 49c324545e713c1ca375b7e559418e02ebe52945 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Thu, 1 Aug 2013 01:06:31 +0200 Subject: Replacement of unnecessary variables. (bzr r11608.1.114) --- src/sp-font.cpp | 128 ++++++++++++++++++++++++-------------------------------- 1 file changed, 55 insertions(+), 73 deletions(-) (limited to 'src/sp-font.cpp') diff --git a/src/sp-font.cpp b/src/sp-font.cpp index b85d25918..4ac3278d7 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -55,32 +55,23 @@ SPFont::~SPFont() { void SPFont::build(SPDocument *document, Inkscape::XML::Node *repr) { SPObject::build(document, repr); - SPFont* object = this; - - object->readAttr( "horiz-origin-x" ); - object->readAttr( "horiz-origin-y" ); - object->readAttr( "horiz-adv-x" ); - object->readAttr( "vert-origin-x" ); - object->readAttr( "vert-origin-y" ); - object->readAttr( "vert-adv-y" ); - - document->addResource("font", object); -} - -static void sp_font_children_modified(SPFont */*sp_font*/) -{ + this->readAttr( "horiz-origin-x" ); + this->readAttr( "horiz-origin-y" ); + this->readAttr( "horiz-adv-x" ); + this->readAttr( "vert-origin-x" ); + this->readAttr( "vert-origin-y" ); + this->readAttr( "vert-adv-y" ); + + document->addResource("font", this); } /** * Callback for child_added event. */ void SPFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - SPFont* object = this; - SPFont *f = SP_FONT(object); SPObject::child_added(child, ref); - sp_font_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } @@ -88,81 +79,77 @@ void SPFont::child_added(Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { * Callback for remove_child event. */ void SPFont::remove_child(Inkscape::XML::Node* child) { - SPFont* object = this; - SPFont *f = SP_FONT(object); - SPObject::remove_child(child); - sp_font_children_modified(f); - object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); + this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG); } void SPFont::release() { - //SPFont *font = SP_FONT(object); - SPFont* object = this; - - object->document->removeResource("font", object); + this->document->removeResource("font", this); SPObject::release(); } void SPFont::set(unsigned int key, const gchar *value) { - SPFont* object = this; - SPFont *font = SP_FONT(object); - // TODO these are floating point, so some epsilon comparison would be good switch (key) { case SP_ATTR_HORIZ_ORIGIN_X: { double number = value ? g_ascii_strtod(value, 0) : 0; - if (number != font->horiz_origin_x){ - font->horiz_origin_x = number; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + + if (number != this->horiz_origin_x){ + this->horiz_origin_x = number; + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; } case SP_ATTR_HORIZ_ORIGIN_Y: { double number = value ? g_ascii_strtod(value, 0) : 0; - if (number != font->horiz_origin_y){ - font->horiz_origin_y = number; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + + if (number != this->horiz_origin_y){ + this->horiz_origin_y = number; + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; } case SP_ATTR_HORIZ_ADV_X: { double number = value ? g_ascii_strtod(value, 0) : FNT_DEFAULT_ADV; - if (number != font->horiz_adv_x){ - font->horiz_adv_x = number; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + + if (number != this->horiz_adv_x){ + this->horiz_adv_x = number; + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; } case SP_ATTR_VERT_ORIGIN_X: { double number = value ? g_ascii_strtod(value, 0) : FNT_DEFAULT_ADV / 2.0; - if (number != font->vert_origin_x){ - font->vert_origin_x = number; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + + if (number != this->vert_origin_x){ + this->vert_origin_x = number; + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; } case SP_ATTR_VERT_ORIGIN_Y: { double number = value ? g_ascii_strtod(value, 0) : FNT_DEFAULT_ASCENT; - if (number != font->vert_origin_y){ - font->vert_origin_y = number; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + + if (number != this->vert_origin_y){ + this->vert_origin_y = number; + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; } case SP_ATTR_VERT_ADV_Y: { double number = value ? g_ascii_strtod(value, 0) : FNT_UNITS_PER_EM; - if (number != font->vert_adv_y){ - font->vert_adv_y = number; - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + + if (number != this->vert_adv_y){ + this->vert_adv_y = number; + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; } @@ -176,15 +163,13 @@ void SPFont::set(unsigned int key, const gchar *value) { * Receives update notifications. */ void SPFont::update(SPCtx *ctx, guint flags) { - SPFont* object = this; - if (flags & (SP_OBJECT_MODIFIED_FLAG)) { - object->readAttr( "horiz-origin-x" ); - object->readAttr( "horiz-origin-y" ); - object->readAttr( "horiz-adv-x" ); - object->readAttr( "vert-origin-x" ); - object->readAttr( "vert-origin-y" ); - object->readAttr( "vert-adv-y" ); + this->readAttr( "horiz-origin-x" ); + this->readAttr( "horiz-origin-y" ); + this->readAttr( "horiz-adv-x" ); + this->readAttr( "vert-origin-x" ); + this->readAttr( "vert-origin-y" ); + this->readAttr( "vert-adv-y" ); } SPObject::update(ctx, flags); @@ -193,29 +178,26 @@ void SPFont::update(SPCtx *ctx, guint flags) { #define COPY_ATTR(rd,rs,key) (rd)->setAttribute((key), rs->attribute(key)); Inkscape::XML::Node* SPFont::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { - SPFont* object = this; - SPFont *font = SP_FONT(object); - if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) { - repr = xml_doc->createElement("svg:font"); + repr = xml_doc->createElement("svg:this"); } - sp_repr_set_svg_double(repr, "horiz-origin-x", font->horiz_origin_x); - sp_repr_set_svg_double(repr, "horiz-origin-y", font->horiz_origin_y); - sp_repr_set_svg_double(repr, "horiz-adv-x", font->horiz_adv_x); - sp_repr_set_svg_double(repr, "vert-origin-x", font->vert_origin_x); - sp_repr_set_svg_double(repr, "vert-origin-y", font->vert_origin_y); - sp_repr_set_svg_double(repr, "vert-adv-y", font->vert_adv_y); + sp_repr_set_svg_double(repr, "horiz-origin-x", this->horiz_origin_x); + sp_repr_set_svg_double(repr, "horiz-origin-y", this->horiz_origin_y); + sp_repr_set_svg_double(repr, "horiz-adv-x", this->horiz_adv_x); + sp_repr_set_svg_double(repr, "vert-origin-x", this->vert_origin_x); + sp_repr_set_svg_double(repr, "vert-origin-y", this->vert_origin_y); + sp_repr_set_svg_double(repr, "vert-adv-y", this->vert_adv_y); - if (repr != object->getRepr()) { + if (repr != this->getRepr()) { // All the below COPY_ATTR funtions are directly using // the XML Tree while they shouldn't - COPY_ATTR(repr, object->getRepr(), "horiz-origin-x"); - COPY_ATTR(repr, object->getRepr(), "horiz-origin-y"); - COPY_ATTR(repr, object->getRepr(), "horiz-adv-x"); - COPY_ATTR(repr, object->getRepr(), "vert-origin-x"); - COPY_ATTR(repr, object->getRepr(), "vert-origin-y"); - COPY_ATTR(repr, object->getRepr(), "vert-adv-y"); + COPY_ATTR(repr, this->getRepr(), "horiz-origin-x"); + COPY_ATTR(repr, this->getRepr(), "horiz-origin-y"); + COPY_ATTR(repr, this->getRepr(), "horiz-adv-x"); + COPY_ATTR(repr, this->getRepr(), "vert-origin-x"); + COPY_ATTR(repr, this->getRepr(), "vert-origin-y"); + COPY_ATTR(repr, this->getRepr(), "vert-adv-y"); } SPObject::write(xml_doc, repr, flags); -- cgit v1.2.3