summaryrefslogtreecommitdiffstats
path: root/src/sp-item-group.cpp
diff options
context:
space:
mode:
authorAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-07-13 11:36:19 +0000
committerAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-07-13 11:36:19 +0000
commitd1947e768272c703674129d5c583204ff2b59251 (patch)
treec1bf1563d0c0837cbab3733c18df0c7c82b18ff4 /src/sp-item-group.cpp
parentMerged trunk (diff)
downloadinkscape-d1947e768272c703674129d5c583204ff2b59251.tar.gz
inkscape-d1947e768272c703674129d5c583204ff2b59251.zip
Second part of new SPObject children list
(bzr r14954.1.19)
Diffstat (limited to 'src/sp-item-group.cpp')
-rw-r--r--src/sp-item-group.cpp61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index d775e306f..7915b0453 100644
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
@@ -235,9 +235,9 @@ Inkscape::XML::Node* SPGroup::write(Inkscape::XML::Document *xml_doc, Inkscape::
l = NULL;
- for (SPObject *child = firstChild(); child; child = child->getNext() ) {
- if ( !dynamic_cast<SPTitle *>(child) && !dynamic_cast<SPDesc *>(child) ) {
- Inkscape::XML::Node *crepr = child->updateRepr(xml_doc, NULL, flags);
+ for (auto& child: _children) {
+ if ( !dynamic_cast<SPTitle *>(&child) && !dynamic_cast<SPDesc *>(&child) ) {
+ Inkscape::XML::Node *crepr = child.updateRepr(xml_doc, NULL, flags);
if (crepr) {
l = g_slist_prepend (l, crepr);
@@ -251,9 +251,9 @@ Inkscape::XML::Node* SPGroup::write(Inkscape::XML::Document *xml_doc, Inkscape::
l = g_slist_remove (l, l->data);
}
} else {
- for (SPObject *child = firstChild() ; child ; child = child->getNext() ) {
- if ( !dynamic_cast<SPTitle *>(child) && !dynamic_cast<SPDesc *>(child) ) {
- child->updateRepr(flags);
+ for (auto& child: _children) {
+ if ( !dynamic_cast<SPTitle *>(&child) && !dynamic_cast<SPDesc *>(&child) ) {
+ child.updateRepr(flags);
}
}
}
@@ -365,9 +365,9 @@ void SPGroup::hide (unsigned int key) {
void SPGroup::snappoints(std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) const {
- for ( SPObject const *o = this->firstChild(); o; o = o->getNext() )
+ for (auto& o: _children)
{
- SPItem const *item = dynamic_cast<SPItem const *>(o);
+ SPItem const *item = dynamic_cast<SPItem const *>(&o);
if (item) {
item->getSnappoints(p, snapprefs);
}
@@ -511,20 +511,21 @@ sp_item_group_ungroup (SPGroup *group, std::vector<SPItem*> &children, bool do_d
GSList *objects = NULL;
Geom::Affine const g(group->transform);
- for (SPObject *child = group->firstChild() ; child; child = child->getNext() )
- if (SPItem *citem = dynamic_cast<SPItem *>(child))
- sp_item_group_ungroup_handle_clones(citem,g);
-
+ for (auto& child: group->_children) {
+ if (SPItem *citem = dynamic_cast<SPItem *>(&child)) {
+ sp_item_group_ungroup_handle_clones(citem, g);
+ }
+ }
- for (SPObject *child = group->firstChild() ; child; child = child->getNext() ) {
- SPItem *citem = dynamic_cast<SPItem *>(child);
+ for (auto& child: group->_children) {
+ SPItem *citem = dynamic_cast<SPItem *>(&child);
if (citem) {
/* Merging of style */
// this converts the gradient/pattern fill/stroke, if any, to userSpaceOnUse; we need to do
// it here _before_ the new transform is set, so as to use the pre-transform bbox
citem->adjust_paint_recursive (Geom::identity(), Geom::identity(), false);
- child->style->merge( group->style );
+ child.style->merge( group->style );
/*
* fixme: We currently make no allowance for the case where child is cloned
* and the group has any style settings.
@@ -546,9 +547,9 @@ sp_item_group_ungroup (SPGroup *group, std::vector<SPItem*> &children, bool do_d
* extra complication & maintenance burden and this case is rare.
*/
- child->updateRepr();
+ child.updateRepr();
- Inkscape::XML::Node *nrepr = child->getRepr()->duplicate(prepr->document());
+ Inkscape::XML::Node *nrepr = child.getRepr()->duplicate(prepr->document());
// Merging transform
Geom::Affine ctrans = citem->transform * g;
@@ -599,7 +600,7 @@ sp_item_group_ungroup (SPGroup *group, std::vector<SPItem*> &children, bool do_d
items = g_slist_prepend (items, nrepr);
} else {
- Inkscape::XML::Node *nrepr = child->getRepr()->duplicate(prepr->document());
+ Inkscape::XML::Node *nrepr = child.getRepr()->duplicate(prepr->document());
objects = g_slist_prepend (objects, nrepr);
}
}
@@ -661,9 +662,9 @@ std::vector<SPItem*> sp_item_group_item_list(SPGroup * group)
std::vector<SPItem*> s;
g_return_val_if_fail(group != NULL, s);
- for (SPObject *o = group->firstChild() ; o ; o = o->getNext() ) {
- if ( dynamic_cast<SPItem *>(o) ) {
- s.push_back((SPItem*)o);
+ for (auto& o: group->_children) {
+ if ( dynamic_cast<SPItem *>(&o) ) {
+ s.push_back((SPItem*)&o);
}
}
return s;
@@ -734,8 +735,8 @@ void SPGroup::_updateLayerMode(unsigned int display_key) {
void SPGroup::translateChildItems(Geom::Translate const &tr)
{
if ( hasChildren() ) {
- for (SPObject *o = firstChild() ; o ; o = o->getNext() ) {
- SPItem *item = dynamic_cast<SPItem *>(o);
+ for (auto& o: _children) {
+ SPItem *item = dynamic_cast<SPItem *>(&o);
if ( item ) {
sp_item_move_rel(item, tr);
}
@@ -747,14 +748,14 @@ void SPGroup::translateChildItems(Geom::Translate const &tr)
void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bool noRecurse)
{
if ( hasChildren() ) {
- for (SPObject *o = firstChild() ; o ; o = o->getNext() ) {
- if ( SPDefs *defs = dynamic_cast<SPDefs *>(o) ) { // select symbols from defs, ignore clips, masks, patterns
- for (SPObject *defschild = defs->firstChild() ; defschild ; defschild = defschild->getNext() ) {
- SPGroup *defsgroup = dynamic_cast<SPGroup *>(defschild);
+ for (auto& o: _children) {
+ if ( SPDefs *defs = dynamic_cast<SPDefs *>(&o) ) { // select symbols from defs, ignore clips, masks, patterns
+ for (auto& defschild: defs->_children) {
+ SPGroup *defsgroup = dynamic_cast<SPGroup *>(&defschild);
if (defsgroup)
defsgroup->scaleChildItemsRec(sc, p, false);
}
- } else if ( SPItem *item = dynamic_cast<SPItem *>(o) ) {
+ } else if ( SPItem *item = dynamic_cast<SPItem *>(&o) ) {
SPGroup *group = dynamic_cast<SPGroup *>(item);
if (group && !dynamic_cast<SPBox3D *>(item)) {
/* Using recursion breaks clipping because transforms are applied
@@ -870,8 +871,8 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo
gint SPGroup::getItemCount() const {
gint len = 0;
- for (SPObject const *o = this->firstChild() ; o ; o = o->getNext() ) {
- if (dynamic_cast<SPItem const *>(o)) {
+ for (auto& child: _children) {
+ if (dynamic_cast<SPItem const *>(&child)) {
len++;
}
}