[Libreoffice-commits] .: sd/source

Joseph Powers jpowers at kemper.freedesktop.org
Fri Aug 12 22:07:32 PDT 2011


 sd/source/ui/func/fumorph.cxx |   71 +++++++++++++++++++++++++++---------------
 sd/source/ui/inc/fumorph.hxx  |   42 +++++++++++++++++++-----
 2 files changed, 79 insertions(+), 34 deletions(-)

New commits:
commit 619378fd44f4296bfd52ad9172508ef9b34a4f84
Author: Joseph Powers <jpowers27 at cox.net>
Date:   Fri Aug 12 22:07:23 2011 -0700

    Replace List with std::vector< ::basegfx::B2DPolyPolygon* >

diff --git a/sd/source/ui/func/fumorph.cxx b/sd/source/ui/func/fumorph.cxx
index 256b54c..b15e2d6 100644
--- a/sd/source/ui/func/fumorph.cxx
+++ b/sd/source/ui/func/fumorph.cxx
@@ -76,7 +76,13 @@ FuMorph::FuMorph (
 {
 }
 
-FunctionReference FuMorph::Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq )
+FunctionReference FuMorph::Create(
+    ViewShell* pViewSh,
+    ::sd::Window* pWin,
+    ::sd::View* pView,
+    SdDrawDocument* pDoc,
+    SfxRequest& rReq
+)
 {
     FunctionReference xFunc( new FuMorph( pViewSh, pWin, pView, pDoc, rReq ) );
     xFunc->DoExecute(rReq);
@@ -106,10 +112,9 @@ void FuMorph::DoExecute( SfxRequest& )
         AbstractMorphDlg* pDlg = pFact ? pFact->CreateMorphDlg( static_cast< ::Window*>(mpWindow), pObj1, pObj2 ) : 0;
         if(pPolyObj1 && pPolyObj2 && pDlg && (pDlg->Execute() == RET_OK))
         {
-            List aPolyPolyList;
+            B2DPolyPolygonList_impl aPolyPolyList;
             ::basegfx::B2DPolyPolygon aPolyPoly1;
             ::basegfx::B2DPolyPolygon aPolyPoly2;
-            ::basegfx::B2DPolyPolygon* pPolyPoly;
 
             pDlg->SaveSettings();
 
@@ -184,10 +189,8 @@ void FuMorph::DoExecute( SfxRequest& )
                     mpView->EndUndo();
                 }
 
-                // erzeugte Polygone wieder loeschen
-                for(pPolyPoly = (::basegfx::B2DPolyPolygon*)aPolyPolyList.First(); pPolyPoly; pPolyPoly = (::basegfx::B2DPolyPolygon *)aPolyPolyList.Next())
-                {
-                    delete pPolyPoly;
+                for( size_t i = 0, n = aPolyPolyList.size(); i < n; ++i ) {
+                    delete aPolyPolyList[ i ];
                 }
             }
         }
@@ -200,7 +203,10 @@ void FuMorph::DoExecute( SfxRequest& )
     }
 }
 
-::basegfx::B2DPolygon ImpGetExpandedPolygon(const ::basegfx::B2DPolygon& rCandidate, sal_uInt32 nNum)
+::basegfx::B2DPolygon ImpGetExpandedPolygon(
+    const ::basegfx::B2DPolygon& rCandidate,
+    sal_uInt32 nNum
+)
 {
     if(rCandidate.count() && nNum && rCandidate.count() != nNum)
     {
@@ -251,7 +257,10 @@ void FuMorph::DoExecute( SfxRequest& )
 //////////////////////////////////////////////////////////////////////////////
 // make the point count of the polygons equal in adding points
 //
-void FuMorph::ImpEqualizePolyPointCount(::basegfx::B2DPolygon& rSmall, const ::basegfx::B2DPolygon& rBig)
+void FuMorph::ImpEqualizePolyPointCount(
+    ::basegfx::B2DPolygon& rSmall,
+    const ::basegfx::B2DPolygon& rBig
+)
 {
     // create poly with equal point count
     const sal_uInt32 nCnt(rBig.count());
@@ -283,7 +292,10 @@ void FuMorph::ImpEqualizePolyPointCount(::basegfx::B2DPolygon& rSmall, const ::b
 
 //////////////////////////////////////////////////////////////////////////////
 //
-sal_uInt32 FuMorph::ImpGetNearestIndex(const ::basegfx::B2DPolygon& rPoly, const ::basegfx::B2DPoint& rPos)
+sal_uInt32 FuMorph::ImpGetNearestIndex(
+    const ::basegfx::B2DPolygon& rPoly,
+    const ::basegfx::B2DPoint& rPos
+)
 {
     double fMinDist = 0.0;
     sal_uInt32 nActInd = 0;
@@ -305,7 +317,10 @@ sal_uInt32 FuMorph::ImpGetNearestIndex(const ::basegfx::B2DPolygon& rPoly, const
 //////////////////////////////////////////////////////////////////////////////
 // add to a point reduced polys until count is same
 //
-void FuMorph::ImpAddPolys(::basegfx::B2DPolyPolygon& rSmaller, const ::basegfx::B2DPolyPolygon& rBigger)
+void FuMorph::ImpAddPolys(
+    ::basegfx::B2DPolyPolygon& rSmaller,
+    const ::basegfx::B2DPolyPolygon& rBigger
+)
 {
     while(rSmaller.count() < rBigger.count())
     {
@@ -332,8 +347,12 @@ void FuMorph::ImpAddPolys(::basegfx::B2DPolyPolygon& rSmaller, const ::basegfx::
 //////////////////////////////////////////////////////////////////////////////
 // create group object with morphed polygons
 //
-void FuMorph::ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
-    const SdrObject* pObj1, const SdrObject* pObj2)
+void FuMorph::ImpInsertPolygons(
+    B2DPolyPolygonList_impl& rPolyPolyList3D,
+    sal_Bool bAttributeFade,
+    const SdrObject* pObj1,
+    const SdrObject* pObj2
+)
 {
     Color               aStartFillCol;
     Color               aEndFillCol;
@@ -345,11 +364,11 @@ void FuMorph::ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
     SfxItemPool*        pPool = pObj1->GetObjectItemPool();
     SfxItemSet          aSet1( *pPool,SDRATTR_START,SDRATTR_NOTPERSIST_FIRST-1,EE_ITEMS_START,EE_ITEMS_END,0 );
     SfxItemSet          aSet2( aSet1 );
-    sal_Bool                bLineColor = sal_False;
-    sal_Bool                bFillColor = sal_False;
-    sal_Bool                bLineWidth = sal_False;
-    sal_Bool                bIgnoreLine = sal_False;
-    sal_Bool                bIgnoreFill = sal_False;
+    sal_Bool            bLineColor = sal_False;
+    sal_Bool            bFillColor = sal_False;
+    sal_Bool            bLineWidth = sal_False;
+    sal_Bool            bIgnoreLine = sal_False;
+    sal_Bool            bIgnoreFill = sal_False;
 
     aSet1.Put(pObj1->GetMergedItemSet());
     aSet2.Put(pObj2->GetMergedItemSet());
@@ -393,7 +412,7 @@ void FuMorph::ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
         SfxItemSet      aSet( aSet1 );
         SdrObjGroup*    pObjGroup = new SdrObjGroup;
         SdrObjList*     pObjList = pObjGroup->GetSubList();
-        const sal_uLong     nCount = rPolyPolyList3D.Count();
+        const size_t    nCount = rPolyPolyList3D.size();
         const double    fStep = 1. / ( nCount + 1 );
         const double    fDelta = nEndLineWidth - nStartLineWidth;
         double          fFactor = fStep;
@@ -401,9 +420,9 @@ void FuMorph::ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
         aSet.Put( XLineStyleItem( XLINE_SOLID ) );
         aSet.Put( XFillStyleItem( XFILL_SOLID ) );
 
-        for ( sal_uLong i = 0; i < nCount; i++, fFactor += fStep )
+        for ( size_t i = 0; i < nCount; i++, fFactor += fStep )
         {
-            const ::basegfx::B2DPolyPolygon& rPolyPoly3D = *(::basegfx::B2DPolyPolygon*)rPolyPolyList3D.GetObject(i);
+            const ::basegfx::B2DPolyPolygon& rPolyPoly3D = *rPolyPolyList3D[ i ];
             SdrPathObj* pNewObj = new SdrPathObj(OBJ_POLY, rPolyPoly3D);
 
             // Linienfarbe
@@ -449,7 +468,8 @@ void FuMorph::ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
 ::basegfx::B2DPolyPolygon* FuMorph::ImpCreateMorphedPolygon(
     const ::basegfx::B2DPolyPolygon& rPolyPolyStart,
     const ::basegfx::B2DPolyPolygon& rPolyPolyEnd,
-    double fMorphingFactor)
+    double fMorphingFactor
+)
 {
     ::basegfx::B2DPolyPolygon* pNewPolyPolygon = new ::basegfx::B2DPolyPolygon();
     const double fFactor = 1.0 - fMorphingFactor;
@@ -481,7 +501,9 @@ void FuMorph::ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
 sal_Bool FuMorph::ImpMorphPolygons(
     const ::basegfx::B2DPolyPolygon& rPolyPoly1,
     const ::basegfx::B2DPolyPolygon& rPolyPoly2,
-    const sal_uInt16 nSteps, List& rPolyPolyList3D)
+    const sal_uInt16 nSteps,
+    B2DPolyPolygonList_impl& rPolyPolyList3D
+)
 {
     if(nSteps)
     {
@@ -504,13 +526,12 @@ sal_Bool FuMorph::ImpMorphPolygons(
             const ::basegfx::B2DPoint aDiff(aRealS - aNewS);
 
             pNewPolyPoly2D->transform(basegfx::tools::createTranslateB2DHomMatrix(aDiff));
-            rPolyPolyList3D.Insert(pNewPolyPoly2D, LIST_APPEND);
+            rPolyPolyList3D.push_back( pNewPolyPoly2D );
         }
     }
     return sal_True;
 }
 
-
 } // end of namespace sd
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/inc/fumorph.hxx b/sd/source/ui/inc/fumorph.hxx
index 4731210..95f54b6 100644
--- a/sd/source/ui/inc/fumorph.hxx
+++ b/sd/source/ui/inc/fumorph.hxx
@@ -32,8 +32,8 @@
 #include "fupoor.hxx"
 
 #include <math.h>
+#include <vector>
 
-class List;
 namespace basegfx {
     class B2DPolyPolygon;
     class B2DPolygon;
@@ -52,6 +52,8 @@ public:
     virtual void DoExecute( SfxRequest& rReq );
 
 private:
+    typedef ::std::vector< ::basegfx::B2DPolyPolygon* > B2DPolyPolygonList_impl;
+
     FuMorph (
         ViewShell* pViewSh,
         ::sd::Window* pWin,
@@ -59,18 +61,40 @@ private:
         SdDrawDocument* pDoc,
         SfxRequest& rReq);
 
-    void ImpInsertPolygons(List& rPolyPolyList3D, sal_Bool bAttributeFade,
-        const SdrObject* pObj1, const SdrObject* pObj2);
+    void ImpInsertPolygons(
+        B2DPolyPolygonList_impl& rPolyPolyList3D,
+        sal_Bool bAttributeFade,
+        const SdrObject* pObj1,
+        const SdrObject* pObj2
+    );
+
     ::basegfx::B2DPolyPolygon* ImpCreateMorphedPolygon(
         const ::basegfx::B2DPolyPolygon& rPolyPolyStart,
         const ::basegfx::B2DPolyPolygon& rPolyPolyEnd,
-        double fMorphingFactor);
+        double fMorphingFactor
+    );
+
     sal_Bool ImpMorphPolygons(
-        const ::basegfx::B2DPolyPolygon& rPolyPoly1, const ::basegfx::B2DPolyPolygon& rPolyPoly2,
-        const sal_uInt16 nSteps, List& rPolyPolyList3D);
-    void ImpAddPolys(::basegfx::B2DPolyPolygon& rSmaller, const ::basegfx::B2DPolyPolygon& rBigger);
-    void ImpEqualizePolyPointCount(::basegfx::B2DPolygon& rSmall, const ::basegfx::B2DPolygon& rBig);
-    sal_uInt32 ImpGetNearestIndex(const ::basegfx::B2DPolygon& rPoly, const ::basegfx::B2DPoint& rPos);
+        const ::basegfx::B2DPolyPolygon& rPolyPoly1,
+        const ::basegfx::B2DPolyPolygon& rPolyPoly2,
+        const sal_uInt16 nSteps,
+        B2DPolyPolygonList_impl& rPolyPolyList3D
+    );
+
+    void ImpAddPolys(
+        ::basegfx::B2DPolyPolygon& rSmaller,
+        const ::basegfx::B2DPolyPolygon& rBigger
+    );
+
+    void ImpEqualizePolyPointCount(
+        ::basegfx::B2DPolygon& rSmall,
+        const ::basegfx::B2DPolygon& rBig
+    );
+
+    sal_uInt32 ImpGetNearestIndex(
+        const ::basegfx::B2DPolygon& rPoly,
+        const ::basegfx::B2DPoint& rPos
+    );
 };
 
 } // end of namespace sd


More information about the Libreoffice-commits mailing list