From 99cb30e28d4ee193f39e23464abbd7630cac8a2d Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 6 Oct 2012 23:56:27 +0200 Subject: Added virtual pad to SPFlowtext; removed old calls to virtual SPItem methods. (bzr r11608.1.46) --- src/sp-flowtext.cpp | 183 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 136 insertions(+), 47 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index dc5b1d8bd..3779a19b5 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -82,7 +82,7 @@ sp_flowtext_class_init(SPFlowtextClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; SPObjectClass *sp_object_class = (SPObjectClass *) klass; - SPItemClass *item_class = (SPItemClass *) klass; + //SPItemClass *item_class = (SPItemClass *) klass; parent_class = (SPItemClass *)g_type_class_ref(SP_TYPE_ITEM); @@ -96,17 +96,28 @@ sp_flowtext_class_init(SPFlowtextClass *klass) sp_object_class->build = sp_flowtext_build; sp_object_class->set = sp_flowtext_set; - item_class->bbox = sp_flowtext_bbox; - item_class->print = sp_flowtext_print; - item_class->description = sp_flowtext_description; - item_class->snappoints = sp_flowtext_snappoints; - item_class->show = sp_flowtext_show; - item_class->hide = sp_flowtext_hide; +// item_class->bbox = sp_flowtext_bbox; +// item_class->print = sp_flowtext_print; +// item_class->description = sp_flowtext_description; +// item_class->snappoints = sp_flowtext_snappoints; +// item_class->show = sp_flowtext_show; +// item_class->hide = sp_flowtext_hide; +} + +CFlowtext::CFlowtext(SPFlowtext* flowtext) : CItem(flowtext) { + this->spflowtext = flowtext; +} + +CFlowtext::~CFlowtext() { } static void sp_flowtext_init(SPFlowtext *group) { + group->cflowtext = new CFlowtext(group); + group->citem = group->cflowtext; + group->cobject = group->cflowtext; + group->par_indent = 0; new (&group->layout) Inkscape::Text::Layout(); } @@ -119,35 +130,49 @@ sp_flowtext_dispose(GObject *object) group->layout.~Layout(); } +void CFlowtext::onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { + CItem::onChildAdded(child, ref); + + this->spflowtext->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + static void sp_flowtext_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref) { - if (((SPObjectClass *) (parent_class))->child_added) - (* ((SPObjectClass *) (parent_class))->child_added)(object, child, ref); - - object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// if (((SPObjectClass *) (parent_class))->child_added) +// (* ((SPObjectClass *) (parent_class))->child_added)(object, child, ref); +// +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); } /* fixme: hide (Lauris) */ +void CFlowtext::onRemoveChild(Inkscape::XML::Node* child) { + CItem::onRemoveChild(child); + + this->spflowtext->requestModified(SP_OBJECT_MODIFIED_FLAG); +} + static void sp_flowtext_remove_child(SPObject *object, Inkscape::XML::Node *child) { - if (((SPObjectClass *) (parent_class))->remove_child) - (* ((SPObjectClass *) (parent_class))->remove_child)(object, child); - - object->requestModified(SP_OBJECT_MODIFIED_FLAG); +// if (((SPObjectClass *) (parent_class))->remove_child) +// (* ((SPObjectClass *) (parent_class))->remove_child)(object, child); +// +// object->requestModified(SP_OBJECT_MODIFIED_FLAG); } -static void sp_flowtext_update(SPObject *object, SPCtx *ctx, unsigned flags) -{ +void CFlowtext::onUpdate(SPCtx* ctx, unsigned int flags) { + SPFlowtext* object = this->spflowtext; + SPFlowtext *group = SP_FLOWTEXT(object); SPItemCtx *ictx = (SPItemCtx *) ctx; SPItemCtx cctx = *ictx; - if (((SPObjectClass *) (parent_class))->update) { - ((SPObjectClass *) (parent_class))->update(object, ctx, flags); - } +// if (((SPObjectClass *) (parent_class))->update) { +// ((SPObjectClass *) (parent_class))->update(object, ctx, flags); +// } + CItem::onUpdate(ctx, flags); if (flags & SP_OBJECT_MODIFIED_FLAG) flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; flags &= SP_OBJECT_MODIFIED_CASCADE; @@ -186,8 +211,13 @@ static void sp_flowtext_update(SPObject *object, SPCtx *ctx, unsigned flags) } } -static void sp_flowtext_modified(SPObject *object, guint flags) +static void sp_flowtext_update(SPObject *object, SPCtx *ctx, unsigned flags) { + ((SPFlowtext*)object)->cflowtext->onUpdate(ctx, flags); +} + +void CFlowtext::onModified(unsigned int flags) { + SPFlowtext* object = this->spflowtext; SPObject *ft = object; SPObject *region = NULL; @@ -220,21 +250,32 @@ static void sp_flowtext_modified(SPObject *object, guint flags) } } -static void -sp_flowtext_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +static void sp_flowtext_modified(SPObject *object, guint flags) { + ((SPFlowtext*)object)->cflowtext->onModified(flags); +} + +void CFlowtext::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { + SPFlowtext* object = this->spflowtext; + object->_requireSVGVersion(Inkscape::Version(1, 2)); - if (((SPObjectClass *) (parent_class))->build) { - (* ((SPObjectClass *) (parent_class))->build)(object, document, repr); - } +// if (((SPObjectClass *) (parent_class))->build) { +// (* ((SPObjectClass *) (parent_class))->build)(object, document, repr); +// } + CItem::onBuild(doc, repr); object->readAttr( "inkscape:layoutOptions" ); // must happen after css has been read } static void -sp_flowtext_set(SPObject *object, unsigned key, gchar const *value) +sp_flowtext_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) { + ((SPFlowtext*)object)->cflowtext->onBuild(document, repr); +} + +void CFlowtext::onSet(unsigned int key, const gchar* value) { + SPFlowtext* object = this->spflowtext; SPFlowtext *group = (SPFlowtext *) object; switch (key) { @@ -284,24 +325,32 @@ sp_flowtext_set(SPObject *object, unsigned key, gchar const *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); +// } + CItem::onSet(key, value); break; } } -static Inkscape::XML::Node *sp_flowtext_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +static void +sp_flowtext_set(SPObject *object, unsigned key, gchar const *value) { + ((SPFlowtext*)object)->cflowtext->onSet(key, value); +} + +Inkscape::XML::Node* CFlowtext::onWrite(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { + SPFlowtext* object = this->spflowtext; + if ( flags & SP_OBJECT_WRITE_BUILD ) { if ( repr == NULL ) { - repr = xml_doc->createElement("svg:flowRoot"); + repr = doc->createElement("svg:flowRoot"); } GSList *l = NULL; for (SPObject *child = object->firstChild() ; child ; child = child->getNext() ) { Inkscape::XML::Node *c_repr = NULL; if ( SP_IS_FLOWDIV(child) || SP_IS_FLOWPARA(child) || SP_IS_FLOWREGION(child) || SP_IS_FLOWREGIONEXCLUDE(child)) { - c_repr = child->updateRepr(xml_doc, NULL, flags); + c_repr = child->updateRepr(doc, NULL, flags); } if ( c_repr ) { l = g_slist_prepend(l, c_repr); @@ -320,16 +369,22 @@ static Inkscape::XML::Node *sp_flowtext_write(SPObject *object, Inkscape::XML::D } } - if (((SPObjectClass *) (parent_class))->write) { - ((SPObjectClass *) (parent_class))->write(object, xml_doc, repr, flags); - } +// if (((SPObjectClass *) (parent_class))->write) { +// ((SPObjectClass *) (parent_class))->write(object, doc, repr, flags); +// } + CItem::onWrite(doc, repr, flags); return repr; } -static Geom::OptRect -sp_flowtext_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type) +static Inkscape::XML::Node *sp_flowtext_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { + return ((SPFlowtext*)object)->cflowtext->onWrite(xml_doc, repr, flags); +} + +Geom::OptRect CFlowtext::onBbox(Geom::Affine const &transform, SPItem::BBoxType type) { + SPFlowtext* item = this->spflowtext; + SPFlowtext *group = SP_FLOWTEXT(item); Geom::OptRect bbox = group->layout.bounds(transform); @@ -342,9 +397,15 @@ sp_flowtext_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBox return bbox; } -static void -sp_flowtext_print(SPItem *item, SPPrintContext *ctx) +static Geom::OptRect +sp_flowtext_bbox(SPItem const *item, Geom::Affine const &transform, SPItem::BBoxType type) { + return ((SPFlowtext*)item)->cflowtext->onBbox(transform, type); +} + +void CFlowtext::onPrint(SPPrintContext *ctx) { + SPFlowtext* item = this->spflowtext; + SPFlowtext *group = SP_FLOWTEXT(item); Geom::OptRect pbox, bbox, dbox; @@ -356,9 +417,15 @@ sp_flowtext_print(SPItem *item, SPPrintContext *ctx) group->layout.print(ctx, pbox, dbox, bbox, ctm); } - -static gchar *sp_flowtext_description(SPItem *item) +static void +sp_flowtext_print(SPItem *item, SPPrintContext *ctx) { + ((SPFlowtext*)item)->cflowtext->onPrint(ctx); +} + +gchar* CFlowtext::onDescription() { + SPFlowtext* item = this->spflowtext; + Inkscape::Text::Layout const &layout = SP_FLOWTEXT(item)->layout; int const nChars = layout.iteratorToCharIndex(layout.end()); @@ -371,8 +438,14 @@ static gchar *sp_flowtext_description(SPItem *item) } } -static void sp_flowtext_snappoints(SPItem const *item, std::vector &p, Inkscape::SnapPreferences const *snapprefs) +static gchar *sp_flowtext_description(SPItem *item) { + return ((SPFlowtext*)item)->cflowtext->onDescription(); +} + +void CFlowtext::onSnappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) { + SPFlowtext* item = this->spflowtext; + if (snapprefs->isTargetSnappable(Inkscape::SNAPTARGET_TEXT_BASELINE)) { // Choose a point on the baseline for snapping from or to, with the horizontal position // of this point depending on the text alignment (left vs. right) @@ -386,9 +459,14 @@ static void sp_flowtext_snappoints(SPItem const *item, std::vector &p, Inkscape::SnapPreferences const *snapprefs) { + ((SPFlowtext*)item)->cflowtext->onSnappoints(p, snapprefs); +} + +Inkscape::DrawingItem* CFlowtext::onShow(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags) { + SPFlowtext* item = this->spflowtext; + SPFlowtext *group = (SPFlowtext *) item; Inkscape::DrawingGroup *flowed = new Inkscape::DrawingGroup(drawing); flowed->setPickChildren(false); @@ -401,11 +479,22 @@ sp_flowtext_show(SPItem *item, Inkscape::Drawing &drawing, unsigned/* key*/, uns return flowed; } +static Inkscape::DrawingItem * +sp_flowtext_show(SPItem *item, Inkscape::Drawing &drawing, unsigned key, unsigned flags) +{ + return ((SPFlowtext*)item)->cflowtext->onShow(drawing, key, flags); +} + +void CFlowtext::onHide(unsigned int key) { + CItem::onHide(key); +} + static void sp_flowtext_hide(SPItem *item, unsigned int key) { - if (((SPItemClass *) parent_class)->hide) - ((SPItemClass *) parent_class)->hide(item, key); +// if (((SPItemClass *) parent_class)->hide) +// ((SPItemClass *) parent_class)->hide(item, key); + ((SPFlowtext*)item)->cflowtext->onHide(key); } -- 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-flowtext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 3779a19b5..b4d80e11d 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -93,7 +93,7 @@ sp_flowtext_class_init(SPFlowtextClass *klass) sp_object_class->update = sp_flowtext_update; sp_object_class->modified = sp_flowtext_modified; sp_object_class->write = sp_flowtext_write; - sp_object_class->build = sp_flowtext_build; + //sp_object_class->build = sp_flowtext_build; sp_object_class->set = sp_flowtext_set; // item_class->bbox = sp_flowtext_bbox; -- 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-flowtext.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index b4d80e11d..7ee5827b0 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -88,13 +88,13 @@ sp_flowtext_class_init(SPFlowtextClass *klass) object_class->dispose = sp_flowtext_dispose; - sp_object_class->child_added = sp_flowtext_child_added; - sp_object_class->remove_child = sp_flowtext_remove_child; - sp_object_class->update = sp_flowtext_update; - sp_object_class->modified = sp_flowtext_modified; - sp_object_class->write = sp_flowtext_write; - //sp_object_class->build = sp_flowtext_build; - sp_object_class->set = sp_flowtext_set; +// sp_object_class->child_added = sp_flowtext_child_added; +// sp_object_class->remove_child = sp_flowtext_remove_child; +// sp_object_class->update = sp_flowtext_update; +// sp_object_class->modified = sp_flowtext_modified; +// sp_object_class->write = sp_flowtext_write; +// //sp_object_class->build = sp_flowtext_build; +// sp_object_class->set = sp_flowtext_set; // item_class->bbox = sp_flowtext_bbox; // item_class->print = sp_flowtext_print; -- 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-flowtext.cpp | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 2759e4c47..89b718781 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -75,8 +75,8 @@ sp_flowtext_dispose(GObject *object) group->layout.~Layout(); } -void CFlowtext::onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { - CItem::onChildAdded(child, ref); +void CFlowtext::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { + CItem::child_added(child, ref); this->spflowtext->requestModified(SP_OBJECT_MODIFIED_FLAG); } @@ -84,21 +84,21 @@ void CFlowtext::onChildAdded(Inkscape::XML::Node* child, Inkscape::XML::Node* re /* fixme: hide (Lauris) */ -void CFlowtext::onRemoveChild(Inkscape::XML::Node* child) { - CItem::onRemoveChild(child); +void CFlowtext::remove_child(Inkscape::XML::Node* child) { + CItem::remove_child(child); this->spflowtext->requestModified(SP_OBJECT_MODIFIED_FLAG); } -void CFlowtext::onUpdate(SPCtx* ctx, unsigned int flags) { +void CFlowtext::update(SPCtx* ctx, unsigned int flags) { SPFlowtext* object = this->spflowtext; SPFlowtext *group = SP_FLOWTEXT(object); SPItemCtx *ictx = (SPItemCtx *) ctx; SPItemCtx cctx = *ictx; - CItem::onUpdate(ctx, flags); + CItem::update(ctx, flags); if (flags & SP_OBJECT_MODIFIED_FLAG) flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; flags &= SP_OBJECT_MODIFIED_CASCADE; @@ -137,7 +137,7 @@ void CFlowtext::onUpdate(SPCtx* ctx, unsigned int flags) { } } -void CFlowtext::onModified(unsigned int flags) { +void CFlowtext::modified(unsigned int flags) { SPFlowtext* object = this->spflowtext; SPObject *ft = object; SPObject *region = NULL; @@ -171,17 +171,17 @@ void CFlowtext::onModified(unsigned int flags) { } } -void CFlowtext::onBuild(SPDocument* doc, Inkscape::XML::Node* repr) { +void CFlowtext::build(SPDocument* doc, Inkscape::XML::Node* repr) { SPFlowtext* object = this->spflowtext; object->_requireSVGVersion(Inkscape::Version(1, 2)); - CItem::onBuild(doc, repr); + CItem::build(doc, repr); object->readAttr( "inkscape:layoutOptions" ); // must happen after css has been read } -void CFlowtext::onSet(unsigned int key, const gchar* value) { +void CFlowtext::set(unsigned int key, const gchar* value) { SPFlowtext* object = this->spflowtext; SPFlowtext *group = (SPFlowtext *) object; @@ -232,12 +232,12 @@ void CFlowtext::onSet(unsigned int key, const gchar* value) { break; } default: - CItem::onSet(key, value); + CItem::set(key, value); break; } } -Inkscape::XML::Node* CFlowtext::onWrite(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { +Inkscape::XML::Node* CFlowtext::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { SPFlowtext* object = this->spflowtext; if ( flags & SP_OBJECT_WRITE_BUILD ) { @@ -267,12 +267,12 @@ Inkscape::XML::Node* CFlowtext::onWrite(Inkscape::XML::Document* doc, Inkscape:: } } - CItem::onWrite(doc, repr, flags); + CItem::write(doc, repr, flags); return repr; } -Geom::OptRect CFlowtext::onBbox(Geom::Affine const &transform, SPItem::BBoxType type) { +Geom::OptRect CFlowtext::bbox(Geom::Affine const &transform, SPItem::BBoxType type) { SPFlowtext* item = this->spflowtext; SPFlowtext *group = SP_FLOWTEXT(item); @@ -287,7 +287,7 @@ Geom::OptRect CFlowtext::onBbox(Geom::Affine const &transform, SPItem::BBoxType return bbox; } -void CFlowtext::onPrint(SPPrintContext *ctx) { +void CFlowtext::print(SPPrintContext *ctx) { SPFlowtext* item = this->spflowtext; SPFlowtext *group = SP_FLOWTEXT(item); @@ -301,7 +301,7 @@ void CFlowtext::onPrint(SPPrintContext *ctx) { group->layout.print(ctx, pbox, dbox, bbox, ctm); } -gchar* CFlowtext::onDescription() { +gchar* CFlowtext::description() { SPFlowtext* item = this->spflowtext; Inkscape::Text::Layout const &layout = SP_FLOWTEXT(item)->layout; @@ -316,7 +316,7 @@ gchar* CFlowtext::onDescription() { } } -void CFlowtext::onSnappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) { +void CFlowtext::snappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) { SPFlowtext* item = this->spflowtext; if (snapprefs->isTargetSnappable(Inkscape::SNAPTARGET_TEXT_BASELINE)) { @@ -332,7 +332,7 @@ void CFlowtext::onSnappoints(std::vector &p, Inksc } } -Inkscape::DrawingItem* CFlowtext::onShow(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags) { +Inkscape::DrawingItem* CFlowtext::show(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags) { SPFlowtext* item = this->spflowtext; SPFlowtext *group = (SPFlowtext *) item; @@ -347,8 +347,8 @@ Inkscape::DrawingItem* CFlowtext::onShow(Inkscape::Drawing &drawing, unsigned in return flowed; } -void CFlowtext::onHide(unsigned int key) { - CItem::onHide(key); +void CFlowtext::hide(unsigned int key) { + CItem::hide(key); } -- cgit v1.2.3 From f51227a487f3d80e096c04470a969f5efa911a98 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 21:49:36 +0100 Subject: Turned all functions concerning SPRect into member functions. (bzr r11608.1.60) --- src/sp-flowtext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 89b718781..6496d017d 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -649,7 +649,7 @@ SPItem *create_flowtext_with_internal_frame (SPDesktop *desktop, Geom::Point p0, Geom::Coord const w = x1 - x0; Geom::Coord const h = y1 - y0; - sp_rect_position_set(rect, x0, y0, w, h); + rect->setPosition(x0, y0, w, h); rect->updateRepr(); Inkscape::XML::Node *para_repr = xml_doc->createElement("svg:flowPara"); -- 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-flowtext.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 6496d017d..7a695d68d 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -58,6 +58,7 @@ static void sp_flowtext_init(SPFlowtext *group) { group->cflowtext = new CFlowtext(group); + group->typeHierarchy.insert(typeid(SPFlowtext)); delete group->citem; group->citem = group->cflowtext; -- cgit v1.2.3 From 7eb077e4097aed62c11e5b4e97ff4b16039e73fa Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 1 Apr 2013 23:04:54 +0200 Subject: Replaced calls to g_object_(un)ref with sp_object_(un)ref. (bzr r11608.1.65) --- src/sp-flowtext.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 7a695d68d..0afd91379 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -106,7 +106,7 @@ void CFlowtext::update(SPCtx* ctx, unsigned int flags) { GSList *l = NULL; for (SPObject *child = object->firstChild() ; child ; child = child->getNext() ) { - g_object_ref(G_OBJECT(child)); + sp_object_ref(child); l = g_slist_prepend(l, child); } l = g_slist_reverse(l); @@ -123,7 +123,7 @@ void CFlowtext::update(SPCtx* ctx, unsigned int flags) { child->updateDisplay(ctx, flags); } } - g_object_unref(G_OBJECT(child)); + sp_object_unref(child); } group->rebuildLayout(); -- 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-flowtext.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 0afd91379..8b6cf4a25 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -37,7 +37,7 @@ static void sp_flowtext_init(SPFlowtext *group); static void sp_flowtext_dispose(GObject *object); -G_DEFINE_TYPE(SPFlowtext, sp_flowtext, SP_TYPE_ITEM); +G_DEFINE_TYPE(SPFlowtext, sp_flowtext, G_TYPE_OBJECT); static void sp_flowtext_class_init(SPFlowtextClass *klass) @@ -54,9 +54,9 @@ CFlowtext::CFlowtext(SPFlowtext* flowtext) : CItem(flowtext) { CFlowtext::~CFlowtext() { } -static void -sp_flowtext_init(SPFlowtext *group) -{ +SPFlowtext::SPFlowtext() : SPItem() { + SPFlowtext* group = this; + group->cflowtext = new CFlowtext(group); group->typeHierarchy.insert(typeid(SPFlowtext)); @@ -68,6 +68,12 @@ sp_flowtext_init(SPFlowtext *group) new (&group->layout) Inkscape::Text::Layout(); } +static void +sp_flowtext_init(SPFlowtext *group) +{ + new (group) SPFlowtext(); +} + static void sp_flowtext_dispose(GObject *object) { -- 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-flowtext.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 8b6cf4a25..1d08b8256 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -37,6 +37,16 @@ static void sp_flowtext_init(SPFlowtext *group); static void sp_flowtext_dispose(GObject *object); +#include "sp-factory.h" + +namespace { + SPObject* createFlowtext() { + return new SPFlowtext(); + } + + bool flowtextRegistered = SPFactory::instance().registerObject("svg:flowRoot", createFlowtext); +} + G_DEFINE_TYPE(SPFlowtext, sp_flowtext, G_TYPE_OBJECT); static void -- cgit v1.2.3 From 61003d31ea058fdf94f4f80c753c3e38426f35e4 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Fri, 5 Apr 2013 21:07:38 +0200 Subject: Merged FlowX classes. (bzr r11608.1.79) --- src/sp-flowtext.cpp | 220 ++++++++++++++++++++++------------------------------ 1 file changed, 91 insertions(+), 129 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 1d08b8256..8cdf52000 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -33,10 +33,6 @@ #include "display/drawing-text.h" - -static void sp_flowtext_init(SPFlowtext *group); -static void sp_flowtext_dispose(GObject *object); - #include "sp-factory.h" namespace { @@ -47,71 +43,35 @@ namespace { bool flowtextRegistered = SPFactory::instance().registerObject("svg:flowRoot", createFlowtext); } -G_DEFINE_TYPE(SPFlowtext, sp_flowtext, G_TYPE_OBJECT); - -static void -sp_flowtext_class_init(SPFlowtextClass *klass) -{ - GObjectClass *object_class = (GObjectClass *) klass; - - object_class->dispose = sp_flowtext_dispose; -} - -CFlowtext::CFlowtext(SPFlowtext* flowtext) : CItem(flowtext) { - this->spflowtext = flowtext; -} - -CFlowtext::~CFlowtext() { -} - -SPFlowtext::SPFlowtext() : SPItem() { - SPFlowtext* group = this; - - group->cflowtext = new CFlowtext(group); - group->typeHierarchy.insert(typeid(SPFlowtext)); - - delete group->citem; - group->citem = group->cflowtext; - group->cobject = group->cflowtext; - - group->par_indent = 0; - new (&group->layout) Inkscape::Text::Layout(); -} +SPFlowtext::SPFlowtext() : SPItem(), CItem(this) { + delete this->citem; + this->citem = this; + this->cobject = this; -static void -sp_flowtext_init(SPFlowtext *group) -{ - new (group) SPFlowtext(); + this->par_indent = 0; + new (&this->layout) Inkscape::Text::Layout(); } -static void -sp_flowtext_dispose(GObject *object) -{ - SPFlowtext *group = (SPFlowtext*)object; - - group->layout.~Layout(); +SPFlowtext::~SPFlowtext() { + this->layout.~Layout(); } -void CFlowtext::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { +void SPFlowtext::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { CItem::child_added(child, ref); - this->spflowtext->requestModified(SP_OBJECT_MODIFIED_FLAG); + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } /* fixme: hide (Lauris) */ -void CFlowtext::remove_child(Inkscape::XML::Node* child) { +void SPFlowtext::remove_child(Inkscape::XML::Node* child) { CItem::remove_child(child); - this->spflowtext->requestModified(SP_OBJECT_MODIFIED_FLAG); + this->requestModified(SP_OBJECT_MODIFIED_FLAG); } - -void CFlowtext::update(SPCtx* ctx, unsigned int flags) { - SPFlowtext* object = this->spflowtext; - - SPFlowtext *group = SP_FLOWTEXT(object); +void SPFlowtext::update(SPCtx* ctx, unsigned int flags) { SPItemCtx *ictx = (SPItemCtx *) ctx; SPItemCtx cctx = *ictx; @@ -121,14 +81,18 @@ void CFlowtext::update(SPCtx* ctx, unsigned int flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; GSList *l = NULL; - for (SPObject *child = object->firstChild() ; child ; child = child->getNext() ) { + + for (SPObject *child = this->firstChild() ; child ; child = child->getNext() ) { sp_object_ref(child); l = g_slist_prepend(l, child); } + l = g_slist_reverse(l); + while (l) { SPObject *child = SP_OBJECT(l->data); l = g_slist_remove(l, child); + if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { if (SP_IS_ITEM(child)) { SPItem const &chi = *SP_ITEM(child); @@ -139,42 +103,46 @@ void CFlowtext::update(SPCtx* ctx, unsigned int flags) { child->updateDisplay(ctx, flags); } } + sp_object_unref(child); } - group->rebuildLayout(); + this->rebuildLayout(); - Geom::OptRect pbox = group->geometricBounds(); - for (SPItemView *v = group->display; v != NULL; v = v->next) { + Geom::OptRect pbox = this->geometricBounds(); + + for (SPItemView *v = this->display; v != NULL; v = v->next) { Inkscape::DrawingGroup *g = dynamic_cast(v->arenaitem); - group->_clearFlow(g); - g->setStyle(object->style); + this->_clearFlow(g); + g->setStyle(this->style); // pass the bbox of the flowtext object as paintbox (used for paintserver fills) - group->layout.show(g, pbox); + this->layout.show(g, pbox); } } -void CFlowtext::modified(unsigned int flags) { - SPFlowtext* object = this->spflowtext; - SPObject *ft = object; +void SPFlowtext::modified(unsigned int flags) { SPObject *region = NULL; - if (flags & SP_OBJECT_MODIFIED_FLAG) flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; + if (flags & SP_OBJECT_MODIFIED_FLAG) { + flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; + } + flags &= SP_OBJECT_MODIFIED_CASCADE; // FIXME: the below stanza is copied over from sp_text_modified, consider factoring it out if (flags & ( SP_OBJECT_STYLE_MODIFIED_FLAG )) { - SPFlowtext *text = SP_FLOWTEXT(object); + SPFlowtext *text = SP_FLOWTEXT(this); Geom::OptRect pbox = text->geometricBounds(); + for (SPItemView* v = text->display; v != NULL; v = v->next) { Inkscape::DrawingGroup *g = dynamic_cast(v->arenaitem); text->_clearFlow(g); - g->setStyle(object->style); + g->setStyle(this->style); text->layout.show(g, pbox); } } - for ( SPObject *o = ft->firstChild() ; o ; o = o->getNext() ) { + for ( SPObject *o = this->firstChild() ; o ; o = o->getNext() ) { if (SP_IS_FLOWREGION(o)) { region = o; break; @@ -188,36 +156,33 @@ void CFlowtext::modified(unsigned int flags) { } } -void CFlowtext::build(SPDocument* doc, Inkscape::XML::Node* repr) { - SPFlowtext* object = this->spflowtext; - - object->_requireSVGVersion(Inkscape::Version(1, 2)); +void SPFlowtext::build(SPDocument* doc, Inkscape::XML::Node* repr) { + this->_requireSVGVersion(Inkscape::Version(1, 2)); CItem::build(doc, repr); - object->readAttr( "inkscape:layoutOptions" ); // must happen after css has been read + this->readAttr( "inkscape:layoutOptions" ); // must happen after css has been read } -void CFlowtext::set(unsigned int key, const gchar* value) { - SPFlowtext* object = this->spflowtext; - SPFlowtext *group = (SPFlowtext *) object; - +void SPFlowtext::set(unsigned int key, const gchar* value) { switch (key) { case SP_ATTR_LAYOUT_OPTIONS: { // deprecated attribute, read for backward compatibility only //XML Tree being directly used while it shouldn't be. - SPCSSAttr *opts = sp_repr_css_attr(group->getRepr(), "inkscape:layoutOptions"); + SPCSSAttr *opts = sp_repr_css_attr(this->getRepr(), "inkscape:layoutOptions"); { gchar const *val = sp_repr_css_property(opts, "justification", NULL); - if (val != NULL && !object->style->text_align.set) { + + if (val != NULL && !this->style->text_align.set) { if ( strcmp(val, "0") == 0 || strcmp(val, "false") == 0 ) { - object->style->text_align.value = SP_CSS_TEXT_ALIGN_LEFT; + this->style->text_align.value = SP_CSS_TEXT_ALIGN_LEFT; } else { - object->style->text_align.value = SP_CSS_TEXT_ALIGN_JUSTIFY; + this->style->text_align.value = SP_CSS_TEXT_ALIGN_JUSTIFY; } - object->style->text_align.set = TRUE; - object->style->text_align.inherit = FALSE; - object->style->text_align.computed = object->style->text_align.value; + + this->style->text_align.set = TRUE; + this->style->text_align.inherit = FALSE; + this->style->text_align.computed = this->style->text_align.value; } } /* no equivalent css attribute for these two (yet) @@ -238,46 +203,52 @@ void CFlowtext::set(unsigned int key, const gchar* value) { */ { // This would probably translate to padding-left, if SPStyle had it. gchar const *val = sp_repr_css_property(opts, "par-indent", NULL); + if ( val == NULL ) { - group->par_indent = 0.0; + this->par_indent = 0.0; } else { - sp_repr_get_double((Inkscape::XML::Node*)opts, "par-indent", &group->par_indent); + sp_repr_get_double((Inkscape::XML::Node*)opts, "par-indent", &this->par_indent); } } + sp_repr_css_attr_unref(opts); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); + this->requestModified(SP_OBJECT_MODIFIED_FLAG); break; } + default: CItem::set(key, value); break; } } -Inkscape::XML::Node* CFlowtext::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { - SPFlowtext* object = this->spflowtext; - +Inkscape::XML::Node* SPFlowtext::write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) { if ( flags & SP_OBJECT_WRITE_BUILD ) { if ( repr == NULL ) { repr = doc->createElement("svg:flowRoot"); } + GSList *l = NULL; - for (SPObject *child = object->firstChild() ; child ; child = child->getNext() ) { + + for (SPObject *child = this->firstChild() ; child ; child = child->getNext() ) { Inkscape::XML::Node *c_repr = NULL; + if ( SP_IS_FLOWDIV(child) || SP_IS_FLOWPARA(child) || SP_IS_FLOWREGION(child) || SP_IS_FLOWREGIONEXCLUDE(child)) { c_repr = child->updateRepr(doc, NULL, flags); } + if ( c_repr ) { l = g_slist_prepend(l, c_repr); } } + while ( l ) { repr->addChild((Inkscape::XML::Node *) l->data, NULL); Inkscape::GC::release((Inkscape::XML::Node *) l->data); l = g_slist_remove(l, l->data); } } else { - for (SPObject *child = object->firstChild() ; child ; child = child->getNext() ) { + for (SPObject *child = this->firstChild() ; child ; child = child->getNext() ) { if ( SP_IS_FLOWDIV(child) || SP_IS_FLOWPARA(child) || SP_IS_FLOWREGION(child) || SP_IS_FLOWREGIONEXCLUDE(child) ) { child->updateRepr(flags); } @@ -289,91 +260,79 @@ Inkscape::XML::Node* CFlowtext::write(Inkscape::XML::Document* doc, Inkscape::XM return repr; } -Geom::OptRect CFlowtext::bbox(Geom::Affine const &transform, SPItem::BBoxType type) { - SPFlowtext* item = this->spflowtext; - - SPFlowtext *group = SP_FLOWTEXT(item); - Geom::OptRect bbox = group->layout.bounds(transform); +Geom::OptRect SPFlowtext::bbox(Geom::Affine const &transform, SPItem::BBoxType type) { + Geom::OptRect bbox = this->layout.bounds(transform); // Add stroke width // FIXME this code is incorrect - if (bbox && type == SPItem::VISUAL_BBOX && !item->style->stroke.isNone()) { + if (bbox && type == SPItem::VISUAL_BBOX && !this->style->stroke.isNone()) { double scale = transform.descrim(); - bbox->expandBy(0.5 * item->style->stroke_width.computed * scale); + bbox->expandBy(0.5 * this->style->stroke_width.computed * scale); } + return bbox; } -void CFlowtext::print(SPPrintContext *ctx) { - SPFlowtext* item = this->spflowtext; - - SPFlowtext *group = SP_FLOWTEXT(item); +void SPFlowtext::print(SPPrintContext *ctx) { Geom::OptRect pbox, bbox, dbox; + pbox = this->geometricBounds(); + bbox = this->desktopVisualBounds(); + dbox = Geom::Rect::from_xywh(Geom::Point(0,0), this->document->getDimensions()); - pbox = item->geometricBounds(); - bbox = item->desktopVisualBounds(); - dbox = Geom::Rect::from_xywh(Geom::Point(0,0), item->document->getDimensions()); - Geom::Affine const ctm (item->i2dt_affine()); + Geom::Affine const ctm (this->i2dt_affine()); - group->layout.print(ctx, pbox, dbox, bbox, ctm); + this->layout.print(ctx, pbox, dbox, bbox, ctm); } -gchar* CFlowtext::description() { - SPFlowtext* item = this->spflowtext; - - Inkscape::Text::Layout const &layout = SP_FLOWTEXT(item)->layout; +gchar* SPFlowtext::description() { + Inkscape::Text::Layout const &layout = SP_FLOWTEXT(this)->layout; int const nChars = layout.iteratorToCharIndex(layout.end()); char const *trunc = (layout.inputTruncated()) ? _(" [truncated]") : ""; - if (SP_FLOWTEXT(item)->has_internal_frame()) { + if (SP_FLOWTEXT(this)->has_internal_frame()) { return g_strdup_printf(ngettext("Flowed text (%d character%s)", "Flowed text (%d characters%s)", nChars), nChars, trunc); } else { return g_strdup_printf(ngettext("Linked flowed text (%d character%s)", "Linked flowed text (%d characters%s)", nChars), nChars, trunc); } } -void CFlowtext::snappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) { - SPFlowtext* item = this->spflowtext; - +void SPFlowtext::snappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) { if (snapprefs->isTargetSnappable(Inkscape::SNAPTARGET_TEXT_BASELINE)) { // Choose a point on the baseline for snapping from or to, with the horizontal position // of this point depending on the text alignment (left vs. right) - Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) item); + Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) this); + if (layout != NULL && layout->outputExists()) { boost::optional pt = layout->baselineAnchorPoint(); + if (pt) { - p.push_back(Inkscape::SnapCandidatePoint((*pt) * item->i2dt_affine(), Inkscape::SNAPSOURCE_TEXT_ANCHOR, Inkscape::SNAPTARGET_TEXT_ANCHOR)); + p.push_back(Inkscape::SnapCandidatePoint((*pt) * this->i2dt_affine(), Inkscape::SNAPSOURCE_TEXT_ANCHOR, Inkscape::SNAPTARGET_TEXT_ANCHOR)); } } } } -Inkscape::DrawingItem* CFlowtext::show(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags) { - SPFlowtext* item = this->spflowtext; - - SPFlowtext *group = (SPFlowtext *) item; +Inkscape::DrawingItem* SPFlowtext::show(Inkscape::Drawing &drawing, unsigned int key, unsigned int flags) { Inkscape::DrawingGroup *flowed = new Inkscape::DrawingGroup(drawing); flowed->setPickChildren(false); - flowed->setStyle(group->style); + flowed->setStyle(this->style); // pass the bbox of the flowtext object as paintbox (used for paintserver fills) - Geom::OptRect bbox = group->geometricBounds(); - group->layout.show(flowed, bbox); + Geom::OptRect bbox = this->geometricBounds(); + this->layout.show(flowed, bbox); return flowed; } -void CFlowtext::hide(unsigned int key) { +void SPFlowtext::hide(unsigned int key) { CItem::hide(key); } - /* * */ - void SPFlowtext::_buildLayoutInput(SPObject *root, Shape const *exclusion_shape, std::list *shapes, SPObject **pending_line_break_object) { Inkscape::Text::Layout::OptionalTextTagAttrs pi; @@ -446,13 +405,14 @@ void SPFlowtext::_buildLayoutInput(SPObject *root, Shape const *exclusion_shape, Shape* SPFlowtext::_buildExclusionShape() const { - Shape *shape = new Shape; - Shape *shape_temp = new Shape; + Shape *shape = new Shape(); + Shape *shape_temp = new Shape(); for (SPObject *child = children ; child ; child = child->getNext() ) { // RH: is it right that this shouldn't be recursive? if ( SP_IS_FLOWREGIONEXCLUDE(child) ) { SPFlowregionExclude *c_child = SP_FLOWREGIONEXCLUDE(child); + if ( c_child->computed && c_child->computed->hasEdges() ) { if (shape->hasEdges()) { shape_temp->Booleen(shape, c_child->computed, bool_op_union); @@ -463,7 +423,9 @@ Shape* SPFlowtext::_buildExclusionShape() const } } } + delete shape_temp; + return shape; } -- cgit v1.2.3 From 8073924aacdda310fb7492750f78d5389b3186af Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Fri, 5 Apr 2013 22:45:01 +0200 Subject: Merged Item. (bzr r11608.1.81) --- src/sp-flowtext.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 8cdf52000..3b3d3cee7 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -43,9 +43,7 @@ namespace { bool flowtextRegistered = SPFactory::instance().registerObject("svg:flowRoot", createFlowtext); } -SPFlowtext::SPFlowtext() : SPItem(), CItem(this) { - delete this->citem; - this->citem = this; +SPFlowtext::SPFlowtext() : SPItem() { this->cobject = this; this->par_indent = 0; @@ -57,7 +55,7 @@ SPFlowtext::~SPFlowtext() { } void SPFlowtext::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { - CItem::child_added(child, ref); + SPItem::child_added(child, ref); this->requestModified(SP_OBJECT_MODIFIED_FLAG); } @@ -66,7 +64,7 @@ void SPFlowtext::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* re /* fixme: hide (Lauris) */ void SPFlowtext::remove_child(Inkscape::XML::Node* child) { - CItem::remove_child(child); + SPItem::remove_child(child); this->requestModified(SP_OBJECT_MODIFIED_FLAG); } @@ -75,7 +73,7 @@ void SPFlowtext::update(SPCtx* ctx, unsigned int flags) { SPItemCtx *ictx = (SPItemCtx *) ctx; SPItemCtx cctx = *ictx; - CItem::update(ctx, flags); + SPItem::update(ctx, flags); if (flags & SP_OBJECT_MODIFIED_FLAG) flags |= SP_OBJECT_PARENT_MODIFIED_FLAG; flags &= SP_OBJECT_MODIFIED_CASCADE; @@ -159,7 +157,7 @@ void SPFlowtext::modified(unsigned int flags) { void SPFlowtext::build(SPDocument* doc, Inkscape::XML::Node* repr) { this->_requireSVGVersion(Inkscape::Version(1, 2)); - CItem::build(doc, repr); + SPItem::build(doc, repr); this->readAttr( "inkscape:layoutOptions" ); // must happen after css has been read } @@ -217,7 +215,7 @@ void SPFlowtext::set(unsigned int key, const gchar* value) { } default: - CItem::set(key, value); + SPItem::set(key, value); break; } } @@ -255,7 +253,7 @@ Inkscape::XML::Node* SPFlowtext::write(Inkscape::XML::Document* doc, Inkscape::X } } - CItem::write(doc, repr, flags); + SPItem::write(doc, repr, flags); return repr; } @@ -326,7 +324,7 @@ Inkscape::DrawingItem* SPFlowtext::show(Inkscape::Drawing &drawing, unsigned int } void SPFlowtext::hide(unsigned int key) { - CItem::hide(key); + SPItem::hide(key); } -- 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-flowtext.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 3b3d3cee7..4ee0a64b1 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -44,8 +44,6 @@ namespace { } SPFlowtext::SPFlowtext() : SPItem() { - this->cobject = this; - this->par_indent = 0; new (&this->layout) Inkscape::Text::Layout(); } -- cgit v1.2.3 From 127543bae3c0a76770e197c7058a783dea18fe3e Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Wed, 31 Jul 2013 23:23:10 +0200 Subject: Removed placement news / explicit destructor calls. (bzr r11608.1.113) --- src/sp-flowtext.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 4ee0a64b1..c7ef579ac 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -45,11 +45,11 @@ namespace { SPFlowtext::SPFlowtext() : SPItem() { this->par_indent = 0; - new (&this->layout) Inkscape::Text::Layout(); + //new (&this->layout) Inkscape::Text::Layout(); } SPFlowtext::~SPFlowtext() { - this->layout.~Layout(); + //this->layout.~Layout(); } void SPFlowtext::child_added(Inkscape::XML::Node* child, Inkscape::XML::Node* ref) { -- cgit v1.2.3 From eb3598e7e27619c759ef33bb9ec4ffb8898523de Mon Sep 17 00:00:00 2001 From: Martin Owens Date: Fri, 20 Sep 2013 00:45:16 -0400 Subject: Refactor status-bar text for multiple items, was very broken Fixed bugs: - https://launchpad.net/bugs/1199192 (bzr r12550) --- src/sp-flowtext.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/sp-flowtext.cpp') diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index c7ef579ac..9d54ad92b 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -280,17 +280,20 @@ void SPFlowtext::print(SPPrintContext *ctx) { this->layout.print(ctx, pbox, dbox, bbox, ctm); } +const char* SPFlowtext::display_name() { + if (SP_FLOWTEXT(this)->has_internal_frame()) { + return _("Flowed Text"); + } else { + return _("Linked Flowed Text"); + } +} + gchar* SPFlowtext::description() { Inkscape::Text::Layout const &layout = SP_FLOWTEXT(this)->layout; int const nChars = layout.iteratorToCharIndex(layout.end()); - char const *trunc = (layout.inputTruncated()) ? _(" [truncated]") : ""; - if (SP_FLOWTEXT(this)->has_internal_frame()) { - return g_strdup_printf(ngettext("Flowed text (%d character%s)", "Flowed text (%d characters%s)", nChars), nChars, trunc); - } else { - return g_strdup_printf(ngettext("Linked flowed text (%d character%s)", "Linked flowed text (%d characters%s)", nChars), nChars, trunc); - } + return g_strdup_printf(ngettext(_("(%d character%s)"), _("(%d characters%s)"), nChars), nChars, trunc); } void SPFlowtext::snappoints(std::vector &p, Inkscape::SnapPreferences const *snapprefs) { -- cgit v1.2.3