diff options
| author | Marc Jeanmougin <mc> | 2015-02-19 19:20:09 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <mc> | 2015-02-19 19:20:09 +0000 |
| commit | 7e4b6f793d31d3245bd8afbf6f10aa255ac3e7ae (patch) | |
| tree | 4d885b8aa45917ceba4f64f2fc2af74f2766adee /src | |
| parent | Put a few std::vector<SPitem*> (diff) | |
| download | inkscape-7e4b6f793d31d3245bd8afbf6f10aa255ac3e7ae.tar.gz inkscape-7e4b6f793d31d3245bd8afbf6f10aa255ac3e7ae.zip | |
added a set to the Selection
(bzr r13922.1.6)
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/internal/cairo-renderer.cpp | 5 | ||||
| -rw-r--r-- | src/extension/internal/latex-text-renderer.cpp | 5 | ||||
| -rw-r--r-- | src/selection-chemistry.cpp | 10 | ||||
| -rw-r--r-- | src/selection.cpp | 23 | ||||
| -rw-r--r-- | src/selection.h | 12 | ||||
| -rw-r--r-- | src/sp-defs.cpp | 5 | ||||
| -rw-r--r-- | src/sp-filter.cpp | 5 | ||||
| -rw-r--r-- | src/sp-item-group.cpp | 29 | ||||
| -rw-r--r-- | src/sp-object.cpp | 6 | ||||
| -rw-r--r-- | src/sp-object.h | 5 | ||||
| -rw-r--r-- | src/sp-switch.cpp | 14 | ||||
| -rw-r--r-- | src/sp-switch.h | 2 | ||||
| -rw-r--r-- | src/ui/dialog/grid-arrange-tab.cpp | 28 | ||||
| -rw-r--r-- | src/ui/dialog/tags.cpp | 4 | ||||
| -rw-r--r-- | src/ui/tools/eraser-tool.cpp | 2 | ||||
| -rw-r--r-- | src/xml/repr-util.cpp | 12 | ||||
| -rw-r--r-- | src/xml/repr.h | 3 |
17 files changed, 83 insertions, 87 deletions
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp index 7ce5cdf8a..f614ec745 100644 --- a/src/extension/internal/cairo-renderer.cpp +++ b/src/extension/internal/cairo-renderer.cpp @@ -294,9 +294,8 @@ static void sp_group_render(SPGroup *group, CairoRenderContext *ctx) CairoRenderer *renderer = ctx->getRenderer(); TRACE(("sp_group_render opacity: %f\n", SP_SCALE24_TO_FLOAT(item->style->opacity.value))); - SelContainer l(group->childList(false)); - l.reverse(); - for(SelContainer::const_iterator x=l.begin();x!=l.end();x++){ + std::vector<SPObject*> l(group->childList(false)); + for(std::vector<SPObject*>::const_iterator x=l.begin();x!=l.end();x++){ SPObject *o = reinterpret_cast<SPObject *>(*x); SPItem *item = dynamic_cast<SPItem *>(o); if (item) { diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp index dab27a0e1..a2de264ab 100644 --- a/src/extension/internal/latex-text-renderer.cpp +++ b/src/extension/internal/latex-text-renderer.cpp @@ -228,9 +228,8 @@ LaTeXTextRenderer::writePostamble() void LaTeXTextRenderer::sp_group_render(SPGroup *group) { - SelContainer l = (group->childList(false)); - l.reverse(); - for(SelContainer::const_iterator x=l.begin();x!=l.end();x++){ + std::vector<SPObject*> l = (group->childList(false)); + for(std::vector<SPObject*>::const_iterator x=l.begin();x!=l.end();x++){ SPObject *o = reinterpret_cast<SPObject *>(*x); SPItem *item = dynamic_cast<SPItem *>(o); if (item) { diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index f1c96b6b8..736e020dd 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -558,7 +558,7 @@ void sp_edit_clear_all(Inkscape::Selection *selection) g_return_if_fail(group != NULL); std::vector<SPItem*> items = sp_item_group_item_list(group); - for(int i=0;i<items.size();i++){ + for(unsigned int i=0;i<items.size();i++){ reinterpret_cast<SPObject*>(items[i])->deleteObject(); } @@ -3061,7 +3061,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ ) doc->ensureUpToDate(); - SelContainer items(selection->list()); + std::vector<SPObject*> items(selection->list()); // Keep track of parent, this is where <use> will be inserted. Inkscape::XML::Node *the_first_repr = reinterpret_cast<SPObject *>( items.front() )->getRepr(); @@ -3128,7 +3128,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ ) } // Move selected items to new <symbol> - for (SelContainer::const_iterator i=items.begin();i!=items.end();i++){ + for (std::vector<SPObject*>::const_iterator i=items.begin();i!=items.end();i++){ Inkscape::XML::Node *repr = SP_OBJECT(*i)->getRepr(); repr->parent()->removeChild(repr); symbol_repr->addChild(repr,NULL); @@ -3195,7 +3195,7 @@ void sp_selection_unsymbol(SPDesktop *desktop) desktop->currentLayer()->getRepr()->appendChild(group); // Move all children of symbol to group - SelContainer children = symbol->childList(false); + std::vector<SPObject*> children = symbol->childList(false); // Converting a group to a symbol inserts a group for non-translational transform. // In converting a symbol back to a group we strip out the inserted group (or any other @@ -3212,7 +3212,7 @@ void sp_selection_unsymbol(SPDesktop *desktop) } } - for (SelContainer::const_iterator i=children.begin();i!=children.end();i++){ + for (std::vector<SPObject*>::const_iterator i=children.begin();i!=children.end();i++){ Inkscape::XML::Node *repr = SP_OBJECT(*i)->getRepr(); repr->parent()->removeChild(repr); group->addChild(repr,NULL); diff --git a/src/selection.cpp b/src/selection.cpp index 2e8251048..fd3b6abae 100644 --- a/src/selection.cpp +++ b/src/selection.cpp @@ -42,7 +42,9 @@ namespace Inkscape { Selection::Selection(LayerModel *layers, SPDesktop *desktop) : - _objs(SelContainer()), + _objs(std::list<SPObject*>()), + _objs_vector(std::vector<SPObject*>()), + _objs_set(std::set<SPObject*>()), _reprs(std::vector<XML::Node*>()), _items(std::vector<SPItem*>()), _layers(layers), @@ -145,7 +147,7 @@ bool Selection::includes(SPObject *obj) const { g_return_val_if_fail(SP_IS_OBJECT(obj), FALSE); - return ( find(_objs.begin(),_objs.end(),obj)!=_objs.end() ); + return ( _objs_set.find(obj)!=_objs_set.end() ); } void Selection::add(SPObject *obj, bool persist_selection_context/* = false */) { @@ -178,6 +180,7 @@ void Selection::_add(SPObject *obj) { _removeObjectAncestors(obj); _objs.push_front(obj); + _objs_set.insert(obj); add_3D_boxes_recursively(obj); @@ -232,6 +235,7 @@ void Selection::_remove(SPObject *obj) { remove_3D_boxes_recursively(obj); _objs.remove(obj); + _objs_set.erase(obj); } void Selection::setList(std::vector<SPItem*> const &list) { @@ -276,8 +280,15 @@ void Selection::clear() { _emitChanged(); } -SelContainer const &Selection::list() { - return _objs; +std::vector<SPObject*> const &Selection::list() { + if(!_objs_vector.empty()) + return _objs_vector; + + for ( std::list<SPObject*>::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) { + _objs_vector.push_back(*iter); + } + return _objs_vector; + } std::vector<SPItem*> const &Selection::itemList() { @@ -285,7 +296,7 @@ std::vector<SPItem*> const &Selection::itemList() { return _items; } - for ( SelContainer::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) { + for ( std::list<SPObject*>::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) { SPObject *obj=reinterpret_cast<SPObject *>(*iter); if (SP_IS_ITEM(obj)) { _items.push_back(SP_ITEM(obj)); @@ -470,7 +481,7 @@ std::vector<Inkscape::SnapCandidatePoint> Selection::getSnapPoints(SnapPreferenc } void Selection::_removeObjectDescendants(SPObject *obj) { - for ( SelContainer::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) { + for ( std::list<SPObject*>::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) { SPObject *sel_obj=reinterpret_cast<SPObject *>(*iter); SPObject *parent = sel_obj->parent; while (parent) { diff --git a/src/selection.h b/src/selection.h index 2d5e7c34a..e40810ded 100644 --- a/src/selection.h +++ b/src/selection.h @@ -16,14 +16,10 @@ #include <vector> #include <map> #include <list> +#include <set> #include <stddef.h> #include <sigc++/sigc++.h> -#include <boost/multi_index_container.hpp> -#include <boost/multi_index/ordered_index.hpp> -#include <boost/multi_index/identity.hpp> -#include <boost/multi_index/member.hpp> - #include "gc-managed.h" #include "gc-finalized.h" #include "gc-anchored.h" @@ -254,7 +250,7 @@ public: XML::Node *singleRepr(); /** Returns the list of selected objects. */ - std::list<SPObject*> const &list(); + std::vector<SPObject*> const &list(); /** Returns the list of selected SPItems. */ std::vector<SPItem*> const &itemList(); /** Returns a list of the xml nodes of all selected objects. */ @@ -376,7 +372,9 @@ private: /** Releases an active layer object that is being removed. */ void _releaseContext(SPObject *obj); - mutable std::list<SPObject*> _objs; + mutable std::list<SPObject*> _objs; //to more efficiently remove arbitrary elements + mutable std::vector<SPObject*> _objs_vector; // to be returned by list(); + mutable std::set<SPObject*> _objs_set; //to efficiently test if object is selected mutable std::vector<XML::Node*> _reprs; mutable std::vector<SPItem*> _items; diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index d52fa038a..76843fd28 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -46,9 +46,8 @@ void SPDefs::update(SPCtx *ctx, guint flags) { } flags &= SP_OBJECT_MODIFIED_CASCADE; - SelContainer l(this->childList(true)); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l(this->childList(true)); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *child = SP_OBJECT(*i); if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { child->updateDisplay(ctx, flags); diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp index bf8f7a5a4..93a979287 100644 --- a/src/sp-filter.cpp +++ b/src/sp-filter.cpp @@ -244,9 +244,8 @@ void SPFilter::update(SPCtx *ctx, guint flags) { childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } childflags &= SP_OBJECT_MODIFIED_CASCADE; - SelContainer l(this->childList(true, SPObject::ActionUpdate)); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l(this->childList(true, SPObject::ActionUpdate)); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *child = SP_OBJECT (*i); if( SP_IS_FILTER_PRIMITIVE( child ) ) { child->updateDisplay(ctx, childflags); diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index f09a4ee47..8a40df5ed 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -171,9 +171,8 @@ void SPGroup::update(SPCtx *ctx, unsigned int flags) { childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG; } childflags &= SP_OBJECT_MODIFIED_CASCADE; - SelContainer l=this->childList(true, SPObject::ActionUpdate); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l=this->childList(true, SPObject::ActionUpdate); + for(std::vector<SPObject*> ::const_iterator i=l.begin();i!=l.end();i++){ SPObject *child = SP_OBJECT (*i); if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { @@ -216,9 +215,8 @@ void SPGroup::modified(guint flags) { flags &= SP_OBJECT_MODIFIED_CASCADE; - SelContainer l=this->childList(true); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l=this->childList(true); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *child = SP_OBJECT (*i); if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) { @@ -291,8 +289,8 @@ Geom::OptRect SPGroup::bbox(Geom::Affine const &transform, SPItem::BBoxType bbox Geom::OptRect bbox; // TODO CPPIFY: replace this const_cast later - SelContainer l=const_cast<SPGroup*>(this)->childList(false, SPObject::ActionBBox); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l=const_cast<SPGroup*>(this)->childList(false, SPObject::ActionBBox); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *o = SP_OBJECT (*i); SPItem *item = dynamic_cast<SPItem *>(o); if (item && !item->isHidden()) { @@ -305,9 +303,8 @@ Geom::OptRect SPGroup::bbox(Geom::Affine const &transform, SPItem::BBoxType bbox } void SPGroup::print(SPPrintContext *ctx) { - SelContainer l=this->childList(false); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l=this->childList(false); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *o = SP_OBJECT (*i); SPItem *item = dynamic_cast<SPItem *>(o); if (item) { @@ -360,9 +357,8 @@ Inkscape::DrawingItem *SPGroup::show (Inkscape::Drawing &drawing, unsigned int k } void SPGroup::hide (unsigned int key) { - SelContainer l=this->childList(false, SPObject::ActionShow); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l=this->childList(false, SPObject::ActionShow); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *o = SP_OBJECT (*i); SPItem *item = dynamic_cast<SPItem *>(o); @@ -793,9 +789,8 @@ gint SPGroup::getItemCount() const { void SPGroup::_showChildren (Inkscape::Drawing &drawing, Inkscape::DrawingItem *ai, unsigned int key, unsigned int flags) { Inkscape::DrawingItem *ac = NULL; - SelContainer l=this->childList(false, SPObject::ActionShow); - l.reverse(); - for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){ + std::vector<SPObject*> l=this->childList(false, SPObject::ActionShow); + for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){ SPObject *o = SP_OBJECT (*i); SPItem * child = dynamic_cast<SPItem *>(o); if (child) { diff --git a/src/sp-object.cpp b/src/sp-object.cpp index 3ea480f66..6cc5d7114 100644 --- a/src/sp-object.cpp +++ b/src/sp-object.cpp @@ -382,14 +382,14 @@ void SPObject::changeCSS(SPCSSAttr *css, gchar const *attr) sp_repr_css_change(this->getRepr(), css, attr); } -SelContainer SPObject::childList(bool add_ref, Action) { - SelContainer l; +std::vector<SPObject*> SPObject::childList(bool add_ref, Action) { + std::vector<SPObject*> l; for ( SPObject *child = firstChild() ; child; child = child->getNext() ) { if (add_ref) { sp_object_ref (child); } - l.push_front(child); + l.push_back(child); } return l; diff --git a/src/sp-object.h b/src/sp-object.h index 858587611..1f3032a52 100644 --- a/src/sp-object.h +++ b/src/sp-object.h @@ -55,6 +55,7 @@ class SPObject; #include <sigc++/functors/slot.h> #include <sigc++/signal.h> #include <list> +#include <vector> #include "version.h" #include "util/forward-pointer-iterator.h" @@ -335,10 +336,10 @@ public: enum Action { ActionGeneral, ActionBBox, ActionUpdate, ActionShow }; /** - * Retrieves the children as a GSList object, optionally ref'ing the children + * Retrieves the children as a std vector object, optionally ref'ing the children * in the process, if add_ref is specified. */ - SelContainer childList(bool add_ref, Action action = ActionGeneral); + std::vector<SPObject*> childList(bool add_ref, Action action = ActionGeneral); /** * Append repr as child of this object. diff --git a/src/sp-switch.cpp b/src/sp-switch.cpp index 0090f1855..2c9427df8 100644 --- a/src/sp-switch.cpp +++ b/src/sp-switch.cpp @@ -55,13 +55,13 @@ SPObject *SPSwitch::_evaluateFirst() { return first; } -SelContainer SPSwitch::_childList(bool add_ref, SPObject::Action action) { +std::vector<SPObject*> SPSwitch::_childList(bool add_ref, SPObject::Action action) { if ( action != SPObject::ActionGeneral ) { return this->childList(add_ref, action); } SPObject *child = _evaluateFirst(); - SelContainer x; + std::vector<SPObject*> x; if (NULL == child) return x; @@ -69,7 +69,7 @@ SelContainer SPSwitch::_childList(bool add_ref, SPObject::Action action) { //g_object_ref (G_OBJECT (child)); sp_object_ref(child); } - x.push_front(child); + x.push_back(child); return x; } @@ -110,8 +110,8 @@ void SPSwitch::_reevaluate(bool /*add_to_drawing*/) { _releaseLastItem(_cached_item); - SelContainer item_list = _childList(false, SPObject::ActionShow); - for ( SelContainer::const_iterator iter=item_list.begin();iter!=item_list.end();iter++) { + std::vector<SPObject*> item_list = _childList(false, SPObject::ActionShow); + for ( std::vector<SPObject*>::const_reverse_iterator iter=item_list.rbegin();iter!=item_list.rend();iter++) { SPObject *o = SP_OBJECT (*iter); if ( !SP_IS_ITEM (o) ) { continue; @@ -144,9 +144,9 @@ void SPSwitch::_releaseLastItem(SPObject *obj) void SPSwitch::_showChildren (Inkscape::Drawing &drawing, Inkscape::DrawingItem *ai, unsigned int key, unsigned int flags) { SPObject *evaluated_child = this->_evaluateFirst(); - SelContainer l = this->_childList(false, SPObject::ActionShow); + std::vector<SPObject*> l = this->_childList(false, SPObject::ActionShow); - for ( SelContainer::const_iterator iter=l.begin();iter!=l.end();iter++) { + for ( std::vector<SPObject*>::const_reverse_iterator iter=l.rbegin();iter!=l.rend();iter++) { SPObject *o = SP_OBJECT (*iter); if (SP_IS_ITEM (o)) { diff --git a/src/sp-switch.h b/src/sp-switch.h index 6a83072e7..7152e1b82 100644 --- a/src/sp-switch.h +++ b/src/sp-switch.h @@ -29,7 +29,7 @@ public: void resetChildEvaluated() { _reevaluate(); } - SelContainer _childList(bool add_ref, SPObject::Action action); + std::vector<SPObject*> _childList(bool add_ref, SPObject::Action action); virtual void _showChildren (Inkscape::Drawing &drawing, Inkscape::DrawingItem *ai, unsigned int key, unsigned int flags); SPObject *_evaluateFirst(); diff --git a/src/ui/dialog/grid-arrange-tab.cpp b/src/ui/dialog/grid-arrange-tab.cpp index d62032e9d..10498b0f9 100644 --- a/src/ui/dialog/grid-arrange-tab.cpp +++ b/src/ui/dialog/grid-arrange-tab.cpp @@ -48,7 +48,7 @@ * 0 *elem1 == *elem2 * >0 *elem1 goes after *elem2 */ -static int sp_compare_x_position(SPItem *first, SPItem *second) +static bool sp_compare_x_position(SPItem *first, SPItem *second) { using Geom::X; using Geom::Y; @@ -58,7 +58,7 @@ static int sp_compare_x_position(SPItem *first, SPItem *second) if ( !a || !b ) { // FIXME? - return 0; + return false; } double const a_height = a->dimensions()[Y]; @@ -76,44 +76,38 @@ static int sp_compare_x_position(SPItem *first, SPItem *second) } if (!a_in_b_vert) { - return -1; + return true; } if (a_in_b_vert && a->min()[X] > b->min()[X]) { - return 1; + return false; } if (a_in_b_vert && a->min()[X] < b->min()[X]) { - return -1; + return true; } - return 0; + return false; } /* * Sort items by their y co-ordinates. */ -static int sp_compare_y_position(SPItem *first, SPItem *second) +static bool sp_compare_y_position(SPItem *first, SPItem *second) { Geom::OptRect a = first->documentVisualBounds(); Geom::OptRect b = second->documentVisualBounds(); if ( !a || !b ) { // FIXME? - return 0; + return false; } if (a->min()[Geom::Y] > b->min()[Geom::Y]) { - return 1; + return false; } if (a->min()[Geom::Y] < b->min()[Geom::Y]) { - return -1; + return true; } - return 0; -} -static bool sp_compare_y_position_obj(SPObject *first, SPObject *second){ - return sp_compare_y_position(static_cast<SPItem*>(first),static_cast<SPItem*>(second))<0; -} -static bool sp_compare_x_position_obj(SPObject *first, SPObject *second){ - return sp_compare_x_position(static_cast<SPItem*>(first),static_cast<SPItem*>(second))<0; + return false; } diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp index c2df5fc1c..bd34c7c66 100644 --- a/src/ui/dialog/tags.cpp +++ b/src/ui/dialog/tags.cpp @@ -371,8 +371,8 @@ void TagsPanel::_objectsSelected( Selection *sel ) { _selectedConnection.block(); _tree.get_selection()->unselect_all(); - SelContainer tmp=sel->list(); - for(SelContainer::const_iterator i=tmp.begin();i!=tmp.end();i++) + std::vector<SPObject*> tmp=sel->list(); + for(std::vector<SPObject*>::const_iterator i=tmp.begin();i!=tmp.end();i++) { SPObject *obj = reinterpret_cast<SPObject *>(*i); _store->foreach(sigc::bind<SPObject *>( sigc::mem_fun(*this, &TagsPanel::_checkForSelected), obj)); diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp index 520b93e72..b61a108f0 100644 --- a/src/ui/tools/eraser-tool.cpp +++ b/src/ui/tools/eraser-tool.cpp @@ -711,7 +711,7 @@ void EraserTool::set_to_accumulated() { if ( !selection->isEmpty() ) { // If the item was not completely erased, track the new remainder. std::vector<SPItem*> nowSel(selection->itemList()); - for (std::vector<SPItem*>::const_iterator i2 = nowSel.begin();i!=nowSel.end();i2++) { + for (std::vector<SPItem*>::const_iterator i2 = nowSel.begin();i2!=nowSel.end();i2++) { remainingItems.push_back(SP_ITEM(*i2)); } } diff --git a/src/xml/repr-util.cpp b/src/xml/repr-util.cpp index 12280ea5a..447f2ff40 100644 --- a/src/xml/repr-util.cpp +++ b/src/xml/repr-util.cpp @@ -259,7 +259,7 @@ gchar const *sp_xml_ns_prefix_uri(gchar const *prefix) * -1 first object's position is less than the second * @todo Rewrite this function's description to be understandable */ -int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second) +bool sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second) { int p1, p2; if (first->parent() == second->parent()) { @@ -276,9 +276,9 @@ int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::No g_assert(ancestor != NULL); if (ancestor == first) { - return 1; + return false; } else if (ancestor == second) { - return -1; + return true; } else { Inkscape::XML::Node const *to_first = AncetreFils(first, ancestor); Inkscape::XML::Node const *to_second = AncetreFils(second, ancestor); @@ -288,9 +288,9 @@ int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::No } } - if (p1 > p2) return 1; - if (p1 < p2) return -1; - return 0; + if (p1 > p2) return false; + if (p1 < p2) return true; + return false; /* effic: Assuming that the parent--child relationship is consistent (i.e. that the parent really does contain first and second among diff --git a/src/xml/repr.h b/src/xml/repr.h index e1d7fdfd6..c96560a98 100644 --- a/src/xml/repr.h +++ b/src/xml/repr.h @@ -118,7 +118,8 @@ unsigned sp_repr_set_svg_double(Inkscape::XML::Node *repr, char const *key, doub unsigned sp_repr_set_point(Inkscape::XML::Node *repr, char const *key, Geom::Point const & val); unsigned sp_repr_get_point(Inkscape::XML::Node *repr, char const *key, Geom::Point *val); -int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second); +//c++-style comparison : returns (bool)(a<b) +bool sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second); // Searching /** |
