summaryrefslogtreecommitdiff
path: root/basegfx/test
diff options
context:
space:
mode:
authorThorsten Behrens <tbehrens@suse.com>2011-12-13 19:18:39 +0100
committerThorsten Behrens <tbehrens@suse.com>2011-12-13 20:58:39 +0100
commit7b7c3b6e1102e7f8856f047fe475ddbc53438f4e (patch)
tree41c1f1a879bdaa0bf329ec159923d58b918ec90d /basegfx/test
parentb43fb02c9b7afcbb41b5140b80e97447b1a29945 (diff)
More efficient insertion of B3DPolygons
* some cleanup - removed ugly-as-hell exposure of only parts of the internal data struct on B2DPolygon (and reworked the only client of that code) * added stl-style begin/end to B3DPolyPolygon as well, mirroring B2DPolyPolygon, plus adapting the insert() func to make use of that (avoiding loads of temporaries)
Diffstat (limited to 'basegfx/test')
-rw-r--r--basegfx/test/boxclipper.cxx17
1 files changed, 12 insertions, 5 deletions
diff --git a/basegfx/test/boxclipper.cxx b/basegfx/test/boxclipper.cxx
index 05cbb7bc252f..20a17b031fe7 100644
--- a/basegfx/test/boxclipper.cxx
+++ b/basegfx/test/boxclipper.cxx
@@ -206,18 +206,25 @@ public:
aTmp.flip();
aTmp=tools::removeNeutralPoints(aTmp);
+ std::vector<B2DPoint> aTmp2(aTmp.count());
+ for(sal_uInt32 j=0; j<aTmp.count(); ++j)
+ aTmp2[j] = aTmp.getB2DPoint(j);
- B2DPoint* pSmallest=0;
- for(B2DPoint* pCurr=aTmp.begin(); pCurr!=aTmp.end(); ++pCurr)
+ std::vector<B2DPoint>::iterator pSmallest=aTmp2.end();
+ for(std::vector<B2DPoint>::iterator pCurr=aTmp2.begin(); pCurr!=aTmp2.end(); ++pCurr)
{
- if( ! pSmallest || compare(*pCurr, *pSmallest) )
+ if( pSmallest == aTmp2.end() || compare(*pCurr, *pSmallest) )
{
pSmallest=pCurr;
}
}
- if( pSmallest )
- std::rotate(aTmp.begin(),pSmallest,aTmp.end());
+ if( pSmallest != aTmp2.end() )
+ std::rotate(aTmp2.begin(),pSmallest,aTmp2.end());
+
+ aTmp.clear();
+ for(std::vector<B2DPoint>::iterator pCurr=aTmp2.begin(); pCurr!=aTmp2.end(); ++pCurr)
+ aTmp.append(*pCurr);
aRes.append(aTmp);
}