You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ar...@apache.org on 2012/10/12 23:29:49 UTC

svn commit: r1397728 [6/10] - in /incubator/ooo/branches/buildsys: ./ ext_sources/ extras/l10n/source/da/ extras/l10n/source/gd/ extras/l10n/source/pl/ main/ main/basctl/source/basicide/ main/basegfx/inc/basegfx/pixel/ main/basegfx/inc/basegfx/point/ m...

Modified: incubator/ooo/branches/buildsys/main/basegfx/source/tools/gradienttools.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/basegfx/source/tools/gradienttools.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/basegfx/source/tools/gradienttools.cxx (original)
+++ incubator/ooo/branches/buildsys/main/basegfx/source/tools/gradienttools.cxx Fri Oct 12 21:29:36 2012
@@ -31,19 +31,35 @@
 
 namespace basegfx
 {
+    bool ODFGradientInfo::operator==(const ODFGradientInfo& rODFGradientInfo) const
+    {
+        return getTextureTransform() == rODFGradientInfo.getTextureTransform()
+            && getAspectRatio() == rODFGradientInfo.getAspectRatio()
+            && getSteps() == rODFGradientInfo.getSteps();
+    }
+
+    const B2DHomMatrix& ODFGradientInfo::getBackTextureTransform() const
+    {
+        if(maBackTextureTransform.isIdentity())
+        {
+            const_cast< ODFGradientInfo* >(this)->maBackTextureTransform = getTextureTransform();
+            const_cast< ODFGradientInfo* >(this)->maBackTextureTransform.invert();
+        }
+
+        return maBackTextureTransform;
+    }
+
     /** Most of the setup for linear & axial gradient is the same, except
         for the border treatment. Factored out here.
     */
-    static void init1DGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                   const B2DRange&  rTargetRange, 
-                                   sal_uInt32       nSteps,
-                                   double           fBorder, 
-                                   double           fAngle,
-                                   bool             bAxial)
+    ODFGradientInfo init1DGradientInfo(
+        const B2DRange& rTargetRange, 
+        sal_uInt32 nSteps,
+        double fBorder, 
+        double fAngle,
+        bool bAxial)
     {
-        o_rGradientInfo.maTextureTransform.identity();
-        o_rGradientInfo.maBackTextureTransform.identity();
-        o_rGradientInfo.mnSteps = nSteps;
+        B2DHomMatrix aTextureTransform;
 
         fAngle = -fAngle;
 
@@ -53,70 +69,69 @@ namespace basegfx
         double fTargetOffsetY(rTargetRange.getMinY());
 
         // add object expansion
-        if(0.0 != fAngle)
+        const bool bAngleUsed(!fTools::equalZero(fAngle));
+        
+        if(bAngleUsed)
         {
             const double fAbsCos(fabs(cos(fAngle)));
             const double fAbsSin(fabs(sin(fAngle)));
             const double fNewX(fTargetSizeX * fAbsCos + fTargetSizeY * fAbsSin);
             const double fNewY(fTargetSizeY * fAbsCos + fTargetSizeX * fAbsSin);
+            
             fTargetOffsetX -= (fNewX - fTargetSizeX) / 2.0;
             fTargetOffsetY -= (fNewY - fTargetSizeY) / 2.0;
             fTargetSizeX = fNewX;
             fTargetSizeY = fNewY;
         }
 
-        const double fSizeWithoutBorder=1.0 - fBorder;
-        if( bAxial )
+        const double fSizeWithoutBorder(1.0 - fBorder);
+
+        if(bAxial)
         {
-            o_rGradientInfo.maTextureTransform.scale(1.0, fSizeWithoutBorder * .5);
-            o_rGradientInfo.maTextureTransform.translate(0.0, 0.5);
+            aTextureTransform.scale(1.0, fSizeWithoutBorder * 0.5);
+            aTextureTransform.translate(0.0, 0.5);
         }
         else 
         {
             if(!fTools::equal(fSizeWithoutBorder, 1.0))
             {
-                o_rGradientInfo.maTextureTransform.scale(1.0, fSizeWithoutBorder);
-                o_rGradientInfo.maTextureTransform.translate(0.0, fBorder);
+                aTextureTransform.scale(1.0, fSizeWithoutBorder);
+                aTextureTransform.translate(0.0, fBorder);
             }
         }
 
-        o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
+        aTextureTransform.scale(fTargetSizeX, fTargetSizeY);
 
         // add texture rotate after scale to keep perpendicular angles
-        if(0.0 != fAngle)
+        if(bAngleUsed)
         {
-            const B2DPoint aCenter(0.5*fTargetSizeX,
-                                   0.5*fTargetSizeY);
-            o_rGradientInfo.maTextureTransform *= 
-                basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
+            const B2DPoint aCenter(0.5 * fTargetSizeX, 0.5 * fTargetSizeY);
+
+            aTextureTransform *= basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
         }
 
         // add object translate
-        o_rGradientInfo.maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
+        aTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
 
         // prepare aspect for texture
-        o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ?  fTargetSizeX / fTargetSizeY : 1.0;
+        const double fAspectRatio(fTools::equalZero(fTargetSizeY) ?  1.0 : fTargetSizeX / fTargetSizeY);
 
-        // build transform from u,v to [0.0 .. 1.0].
-        o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
-        o_rGradientInfo.maBackTextureTransform.invert();
+        return ODFGradientInfo(aTextureTransform, fAspectRatio, nSteps);
     }
 
     /** Most of the setup for radial & ellipsoidal gradient is the same,
         except for the border treatment. Factored out here.
     */
-    static void initEllipticalGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                           const B2DRange&  rTargetRange, 
-                                           const B2DVector& rOffset,
-                                           sal_uInt32       nSteps,
-                                           double           fBorder, 
-                                           double           fAngle,
-                                           bool             bCircular)
+    ODFGradientInfo initEllipticalGradientInfo(
+        const B2DRange& rTargetRange, 
+        const B2DVector& rOffset,
+        sal_uInt32 nSteps,
+        double fBorder, 
+        double fAngle,
+        bool bCircular)
     {
-        o_rGradientInfo.maTextureTransform.identity();
-        o_rGradientInfo.maBackTextureTransform.identity();
-        o_rGradientInfo.mnSteps = nSteps;
-    
+        B2DHomMatrix aTextureTransform;
+
         fAngle = -fAngle;
 
         double fTargetSizeX(rTargetRange.getWidth());
@@ -125,9 +140,10 @@ namespace basegfx
         double fTargetOffsetY(rTargetRange.getMinY());
 
         // add object expansion
-        if( bCircular )
+        if(bCircular)
         {
             const double fOriginalDiag(sqrt((fTargetSizeX * fTargetSizeX) + (fTargetSizeY * fTargetSizeY)));
+
             fTargetOffsetX -= (fOriginalDiag - fTargetSizeX) / 2.0;
             fTargetOffsetY -= (fOriginalDiag - fTargetSizeY) / 2.0;
             fTargetSizeX = fOriginalDiag;
@@ -142,22 +158,21 @@ namespace basegfx
         }
 
         const double fHalfBorder((1.0 - fBorder) * 0.5);
-        o_rGradientInfo.maTextureTransform.scale(fHalfBorder, fHalfBorder);
 
-        o_rGradientInfo.maTextureTransform.translate(0.5, 0.5);
-        o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
+        aTextureTransform.scale(fHalfBorder, fHalfBorder);
+        aTextureTransform.translate(0.5, 0.5);
+        aTextureTransform.scale(fTargetSizeX, fTargetSizeY);
 
         // add texture rotate after scale to keep perpendicular angles
-        if( !bCircular && 0.0 != fAngle)
+        if(!bCircular && !fTools::equalZero(fAngle))
         {
-            const B2DPoint aCenter(0.5*fTargetSizeX,
-                                   0.5*fTargetSizeY);
-            o_rGradientInfo.maTextureTransform *=
-                basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
+            const B2DPoint aCenter(0.5 * fTargetSizeX, 0.5 * fTargetSizeY);
+
+            aTextureTransform *= basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
         }
 
         // add defined offsets after rotation
-        if(0.5 != rOffset.getX() || 0.5 != rOffset.getY())
+        if(!fTools::equal(0.5, rOffset.getX()) || !fTools::equal(0.5, rOffset.getY()))
         {
             // use original target size
             fTargetOffsetX += (rOffset.getX() - 0.5) * rTargetRange.getWidth();
@@ -165,30 +180,26 @@ namespace basegfx
         }
 
         // add object translate
-        o_rGradientInfo.maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
+        aTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
 
         // prepare aspect for texture
-        o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ?  fTargetSizeX / fTargetSizeY : 1.0;
+        const double fAspectRatio((0.0 != fTargetSizeY) ?  fTargetSizeX / fTargetSizeY : 1.0);
 
-        // build transform from u,v to [0.0 .. 1.0].
-        o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
-        o_rGradientInfo.maBackTextureTransform.invert();
+        return ODFGradientInfo(aTextureTransform, fAspectRatio, nSteps);
     }
 
     /** Setup for rect & square gradient is exactly the same. Factored out
         here.
     */
-    static void initRectGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                     const B2DRange&  rTargetRange, 
-                                     const B2DVector& rOffset,
-                                     sal_uInt32       nSteps,
-                                     double           fBorder, 
-                                     double           fAngle,
-                                     bool             bSquare)
+    ODFGradientInfo initRectGradientInfo(
+        const B2DRange& rTargetRange, 
+        const B2DVector& rOffset,
+        sal_uInt32 nSteps,
+        double fBorder, 
+        double fAngle,
+        bool bSquare)
     {
-        o_rGradientInfo.maTextureTransform.identity();
-        o_rGradientInfo.maBackTextureTransform.identity();
-        o_rGradientInfo.mnSteps = nSteps;
+        B2DHomMatrix aTextureTransform;
 
         fAngle = -fAngle;
 
@@ -201,18 +212,22 @@ namespace basegfx
         if(bSquare)
         {
             const double fSquareWidth(std::max(fTargetSizeX, fTargetSizeY));
+            
             fTargetOffsetX -= (fSquareWidth - fTargetSizeX) / 2.0;
             fTargetOffsetY -= (fSquareWidth - fTargetSizeY) / 2.0;
             fTargetSizeX = fTargetSizeY = fSquareWidth;
         }    
 
         // add object expansion
-        if(0.0 != fAngle)
+        const bool bAngleUsed(!fTools::equalZero(fAngle));
+
+        if(bAngleUsed)
         {
             const double fAbsCos(fabs(cos(fAngle)));
             const double fAbsSin(fabs(sin(fAngle)));
             const double fNewX(fTargetSizeX * fAbsCos + fTargetSizeY * fAbsSin);
             const double fNewY(fTargetSizeY * fAbsCos + fTargetSizeX * fAbsSin);
+
             fTargetOffsetX -= (fNewX - fTargetSizeX) / 2.0;
             fTargetOffsetY -= (fNewY - fTargetSizeY) / 2.0;
             fTargetSizeX = fNewX;
@@ -220,22 +235,21 @@ namespace basegfx
         }
 
         const double fHalfBorder((1.0 - fBorder) * 0.5);
-        o_rGradientInfo.maTextureTransform.scale(fHalfBorder, fHalfBorder);
-
-        o_rGradientInfo.maTextureTransform.translate(0.5, 0.5);
-        o_rGradientInfo.maTextureTransform.scale(fTargetSizeX, fTargetSizeY);
+        
+        aTextureTransform.scale(fHalfBorder, fHalfBorder);
+        aTextureTransform.translate(0.5, 0.5);
+        aTextureTransform.scale(fTargetSizeX, fTargetSizeY);
 
         // add texture rotate after scale to keep perpendicular angles
-        if(0.0 != fAngle)
+        if(bAngleUsed)
         {
-            const B2DPoint aCenter(0.5*fTargetSizeX, 
-                                   0.5*fTargetSizeY);
-            o_rGradientInfo.maTextureTransform *= 
-                basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
+            const B2DPoint aCenter(0.5 * fTargetSizeX, 0.5 * fTargetSizeY);
+
+            aTextureTransform *= basegfx::tools::createRotateAroundPoint(aCenter, fAngle);
         }
 
         // add defined offsets after rotation
-        if(0.5 != rOffset.getX() || 0.5 != rOffset.getY())
+        if(!fTools::equal(0.5, rOffset.getX()) || !fTools::equal(0.5, rOffset.getY()))
         {
             // use scaled target size
             fTargetOffsetX += (rOffset.getX() - 0.5) * fTargetSizeX;
@@ -243,115 +257,222 @@ namespace basegfx
         }
 
         // add object translate
-        o_rGradientInfo.maTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
+        aTextureTransform.translate(fTargetOffsetX, fTargetOffsetY);
 
         // prepare aspect for texture
-        o_rGradientInfo.mfAspectRatio = (0.0 != fTargetSizeY) ?  fTargetSizeX / fTargetSizeY : 1.0;
+        const double fAspectRatio((0.0 != fTargetSizeY) ?  fTargetSizeX / fTargetSizeY : 1.0);
 
-        // build transform from u,v to [0.0 .. 1.0]. As base, use inverse texture transform
-        o_rGradientInfo.maBackTextureTransform = o_rGradientInfo.maTextureTransform;
-        o_rGradientInfo.maBackTextureTransform.invert();
+        return ODFGradientInfo(aTextureTransform, fAspectRatio, nSteps);
     }
 
     namespace tools
     {
-		ODFGradientInfo& createLinearODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                                     const B2DRange&  rTargetArea, 
-                                                     sal_uInt32       nSteps, 
-                                                     double           fBorder, 
-                                                     double           fAngle)
-        {
-            init1DGradientInfo(o_rGradientInfo,
-                               rTargetArea, 
-                               nSteps,
-                               fBorder, 
-                               fAngle,
-                               false);
-            return o_rGradientInfo;
-        }
-
-		ODFGradientInfo& createAxialODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                                    const B2DRange&  rTargetArea, 
-                                                    sal_uInt32       nSteps, 
-                                                    double           fBorder, 
-                                                    double           fAngle)
-        {
-            init1DGradientInfo(o_rGradientInfo,
-                               rTargetArea, 
-                               nSteps,
-                               fBorder, 
-                               fAngle,
-                               true);
-            return o_rGradientInfo;
-        }
-
-		ODFGradientInfo& createRadialODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                                     const B2DRange&  rTargetArea, 
-                                                     const B2DVector& rOffset,
-                                                     sal_uInt32       nSteps, 
-                                                     double           fBorder)
-        {
-            initEllipticalGradientInfo(o_rGradientInfo,
-                                       rTargetArea, 
-                                       rOffset,
-                                       nSteps,
-                                       fBorder, 
-                                       0.0,
-                                       true);
-            return o_rGradientInfo;
-        }
-
-		ODFGradientInfo& createEllipticalODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                                         const B2DRange&  rTargetArea, 
-                                                         const B2DVector& rOffset,
-                                                         sal_uInt32       nSteps, 
-                                                         double           fBorder, 
-                                                         double           fAngle)
-        {
-            initEllipticalGradientInfo(o_rGradientInfo,
-                                       rTargetArea, 
-                                       rOffset,
-                                       nSteps,
-                                       fBorder, 
-                                       fAngle,
-                                       false);
-            return o_rGradientInfo;
-        }
-
-		ODFGradientInfo& createSquareODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                                     const B2DRange&  rTargetArea, 
-                                                     const B2DVector& rOffset,
-                                                     sal_uInt32       nSteps, 
-                                                     double           fBorder, 
-                                                     double           fAngle)
-        {
-            initRectGradientInfo(o_rGradientInfo,
-                                 rTargetArea, 
-                                 rOffset,
-                                 nSteps,
-                                 fBorder, 
-                                 fAngle,
-                                 true);
-            return o_rGradientInfo;
-        }
-
-		ODFGradientInfo& createRectangularODFGradientInfo(ODFGradientInfo& o_rGradientInfo,
-                                                          const B2DRange&  rTargetArea, 
-                                                          const B2DVector& rOffset,
-                                                          sal_uInt32       nSteps, 
-                                                          double           fBorder, 
-                                                          double           fAngle)
-        {
-            initRectGradientInfo(o_rGradientInfo,
-                                 rTargetArea, 
-                                 rOffset,
-                                 nSteps,
-                                 fBorder, 
-                                 fAngle,
-                                 false);
-            return o_rGradientInfo;
+        ODFGradientInfo createLinearODFGradientInfo(
+            const B2DRange& rTargetArea, 
+            sal_uInt32 nSteps, 
+            double fBorder, 
+            double fAngle)
+        {
+            return init1DGradientInfo(
+                rTargetArea, 
+                nSteps,
+                fBorder, 
+                fAngle,
+                false);
+        }
+
+        ODFGradientInfo createAxialODFGradientInfo(
+            const B2DRange& rTargetArea, 
+            sal_uInt32 nSteps, 
+            double fBorder, 
+            double fAngle)
+        {
+            return init1DGradientInfo(
+                rTargetArea, 
+                nSteps,
+                fBorder, 
+                fAngle,
+                true);
+        }
+
+        ODFGradientInfo createRadialODFGradientInfo(
+            const B2DRange& rTargetArea, 
+            const B2DVector& rOffset,
+            sal_uInt32 nSteps, 
+            double fBorder)
+        {
+            return initEllipticalGradientInfo(
+                rTargetArea, 
+                rOffset,
+                nSteps,
+                fBorder, 
+                0.0,
+                true);
+        }
+
+        ODFGradientInfo createEllipticalODFGradientInfo(
+            const B2DRange& rTargetArea, 
+            const B2DVector& rOffset,
+            sal_uInt32 nSteps, 
+            double fBorder, 
+            double fAngle)
+        {
+            return initEllipticalGradientInfo(
+                rTargetArea, 
+                rOffset,
+                nSteps,
+                fBorder, 
+                fAngle,
+                false);
+        }
+
+        ODFGradientInfo createSquareODFGradientInfo(
+            const B2DRange& rTargetArea, 
+            const B2DVector& rOffset,
+            sal_uInt32 nSteps, 
+            double fBorder, 
+            double fAngle)
+        {
+            return initRectGradientInfo(
+                rTargetArea, 
+                rOffset,
+                nSteps,
+                fBorder, 
+                fAngle,
+                true);
+        }
+
+        ODFGradientInfo createRectangularODFGradientInfo(
+            const B2DRange& rTargetArea, 
+            const B2DVector& rOffset,
+            sal_uInt32 nSteps, 
+            double fBorder, 
+            double fAngle)
+        {
+            return initRectGradientInfo(
+                rTargetArea, 
+                rOffset,
+                nSteps,
+                fBorder, 
+                fAngle,
+                false);
+        }
+
+        double getLinearGradientAlpha(const B2DPoint& rUV, const ODFGradientInfo& rGradInfo)
+        {
+            const B2DPoint aCoor(rGradInfo.getBackTextureTransform() * rUV);
+
+            // Ignore Y, this is not needed at all for Y-Oriented gradients
+            // if(aCoor.getX() < 0.0 || aCoor.getX() > 1.0)
+            // {
+            //     return 0.0;
+            // }
+
+            if(aCoor.getY() <= 0.0)
+            {
+                return 0.0; // start value for inside
+            }
+
+            if(aCoor.getY() >= 1.0)
+            {
+                return 1.0; // end value for outside
+            }
+
+            const sal_uInt32 nSteps(rGradInfo.getSteps());
+
+            if(nSteps)
+            {
+                return floor(aCoor.getY() * nSteps) / double(nSteps - 1);
+            }
+
+            return aCoor.getY();
         }
-        
-    } // namespace tools
 
+        double getAxialGradientAlpha(const B2DPoint& rUV, const ODFGradientInfo& rGradInfo)
+        {
+            const B2DPoint aCoor(rGradInfo.getBackTextureTransform() * rUV);
+
+            // Ignore Y, this is not needed at all for Y-Oriented gradients
+            //if(aCoor.getX() < 0.0 || aCoor.getX() > 1.0)
+            //{
+            //    return 0.0;
+            //}
+
+            const double fAbsY(fabs(aCoor.getY()));
+
+            if(fAbsY >= 1.0)
+            {
+                return 1.0; // use end value when outside in Y
+            }
+
+            const sal_uInt32 nSteps(rGradInfo.getSteps());
+
+            if(nSteps)
+            {
+                return floor(fAbsY * nSteps) / double(nSteps - 1);
+            }
+
+            return fAbsY;
+        }
+
+        double getRadialGradientAlpha(const B2DPoint& rUV, const ODFGradientInfo& rGradInfo)
+        {
+            const B2DPoint aCoor(rGradInfo.getBackTextureTransform() * rUV);
+
+            if(aCoor.getX() < -1.0 || aCoor.getX() > 1.0 || aCoor.getY() < -1.0 || aCoor.getY() > 1.0)
+            {
+                return 0.0;
+            }
+
+            const double t(1.0 - sqrt(aCoor.getX() * aCoor.getX() + aCoor.getY() * aCoor.getY()));
+            const sal_uInt32 nSteps(rGradInfo.getSteps());
+
+            if(nSteps && t < 1.0)
+            {
+                return floor(t * nSteps) / double(nSteps - 1);
+            }
+
+            return t;
+        }
+
+        double getEllipticalGradientAlpha(const B2DPoint& rUV, const ODFGradientInfo& rGradInfo)
+        {
+            return getRadialGradientAlpha(rUV, rGradInfo); // only matrix setup differs
+        }
+
+        double getSquareGradientAlpha(const B2DPoint& rUV, const ODFGradientInfo& rGradInfo)
+        {
+            const B2DPoint aCoor(rGradInfo.getBackTextureTransform() * rUV);
+            const double fAbsX(fabs(aCoor.getX()));
+
+            if(fAbsX >= 1.0)
+            {
+                return 0.0;
+            }
+
+            const double fAbsY(fabs(aCoor.getY()));
+
+            if(fAbsY >= 1.0)
+            {
+                return 0.0;
+            }
+
+            const double t(1.0 - std::max(fAbsX, fAbsY));
+            const sal_uInt32 nSteps(rGradInfo.getSteps());
+
+            if(nSteps && t < 1.0)
+            {
+                return floor(t * nSteps) / double(nSteps - 1);
+            }
+
+            return t;
+        }
+
+        double getRectangularGradientAlpha(const B2DPoint& rUV, const ODFGradientInfo& rGradInfo)
+        {
+            return getSquareGradientAlpha(rUV, rGradInfo); // only matrix setup differs
+        }
+    } // namespace tools
 } // namespace basegfx
+
+// eof

Modified: incubator/ooo/branches/buildsys/main/basegfx/source/tuple/b2ituple.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/basegfx/source/tuple/b2ituple.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/basegfx/source/tuple/b2ituple.cxx (original)
+++ incubator/ooo/branches/buildsys/main/basegfx/source/tuple/b2ituple.cxx Fri Oct 12 21:29:36 2012
@@ -33,117 +33,12 @@ namespace basegfx
 {
     const B2ITuple& B2ITuple::getEmptyTuple()
     {
-            return EmptyTuple::get();
+        return EmptyTuple::get();
     }
 
 	// external operators
 	//////////////////////////////////////////////////////////////////////////
 
-	B2ITuple minimum(const B2ITuple& rTupA, const B2ITuple& rTupB) 
-	{ 
-		B2ITuple aMin(
-			(rTupB.getX() < rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
-			(rTupB.getY() < rTupA.getY()) ? rTupB.getY() : rTupA.getY()); 
-		return aMin;
-	}
-
-	B2ITuple maximum(const B2ITuple& rTupA, const B2ITuple& rTupB) 
-	{ 
-		B2ITuple aMax(
-			(rTupB.getX() > rTupA.getX()) ? rTupB.getX() : rTupA.getX(),
-			(rTupB.getY() > rTupA.getY()) ? rTupB.getY() : rTupA.getY()); 
-		return aMax;
-	}
-
-	B2ITuple absolute(const B2ITuple& rTup) 
-	{ 
-		B2ITuple aAbs(
-			(0 > rTup.getX()) ? -rTup.getX() : rTup.getX(),
-			(0 > rTup.getY()) ? -rTup.getY() : rTup.getY()); 
-		return aAbs;
-	}
-
-	B2DTuple interpolate(const B2ITuple& rOld1, const B2ITuple& rOld2, double t) 
-	{ 
-		B2DTuple aInt(
-			((rOld2.getX() - rOld1.getX()) * t) + rOld1.getX(),
-			((rOld2.getY() - rOld1.getY()) * t) + rOld1.getY()); 
-		return aInt;
-	}
-
-	B2DTuple average(const B2ITuple& rOld1, const B2ITuple& rOld2) 
-	{ 
-		B2DTuple aAvg(
-			(rOld1.getX() + rOld2.getX()) * 0.5,
-			(rOld1.getY() + rOld2.getY()) * 0.5); 
-		return aAvg;
-	}
-	
-	B2DTuple average(const B2ITuple& rOld1, const B2ITuple& rOld2, const B2ITuple& rOld3)
-	{ 
-		B2DTuple aAvg(
-			(rOld1.getX() + rOld2.getX() + rOld3.getX()) * (1.0 / 3.0),
-			(rOld1.getY() + rOld2.getY() + rOld3.getY()) * (1.0 / 3.0)); 
-		return aAvg;
-	}
-
-	B2ITuple operator+(const B2ITuple& rTupA, const B2ITuple& rTupB)
-	{ 
-		B2ITuple aSum(rTupA); 
-		aSum += rTupB; 
-		return aSum; 
-	}
-
-	B2ITuple operator-(const B2ITuple& rTupA, const B2ITuple& rTupB)
-	{ 
-		B2ITuple aSub(rTupA); 
-		aSub -= rTupB; 
-		return aSub; 
-	}
-
-	B2ITuple operator/(const B2ITuple& rTupA, const B2ITuple& rTupB)
-	{ 
-		B2ITuple aDiv(rTupA); 
-		aDiv /= rTupB; 
-		return aDiv; 
-	}
-
-	B2ITuple operator*(const B2ITuple& rTupA, const B2ITuple& rTupB)
-	{ 
-		B2ITuple aMul(rTupA); 
-		aMul *= rTupB; 
-		return aMul; 
-	}
-
-	B2ITuple operator*(const B2ITuple& rTup, sal_Int32 t)
-	{ 
-		B2ITuple aNew(rTup); 
-		aNew *= t; 
-		return aNew; 
-	}
-
-	B2ITuple operator*(sal_Int32 t, const B2ITuple& rTup)
-	{ 
-		B2ITuple aNew(rTup); 
-		aNew *= t; 
-		return aNew; 
-	}
-
-	B2ITuple operator/(const B2ITuple& rTup, sal_Int32 t)
-	{ 
-		B2ITuple aNew(rTup); 
-		aNew /= t; 
-		return aNew; 
-	}
-
-	B2ITuple operator/(sal_Int32 t, const B2ITuple& rTup)
-	{
-		B2ITuple aNew(t, t); 
-		B2ITuple aTmp(rTup); 
-		aNew /= aTmp; 
-		return aNew; 
-	}
-
 } // end of namespace basegfx
 
 // eof

Modified: incubator/ooo/branches/buildsys/main/boost/makefile.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/boost/makefile.mk?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/boost/makefile.mk (original)
+++ incubator/ooo/branches/buildsys/main/boost/makefile.mk Fri Oct 12 21:29:36 2012
@@ -77,26 +77,87 @@ $(PACKAGE_DIR)$/$(NORMALIZE_FLAG_FILE) :
     -@$(MKDIRHIER) $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/*.h $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/*.hpp $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/accumulators $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/algorithm $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/archive $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/asio $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/assign $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/bimap $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/bind $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/chrono $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/circular_buffer $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/compatibility $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/concept $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/concept_check $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/config $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/date_time $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/detail $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/dynamic_bitset $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/exception $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/filesystem $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/flyweight $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/format $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/function $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/functional $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/function_types $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/fusion $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/geometry $(INCCOM)$/$(PRJNAME)   
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/gil $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/graph $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/graph $(INCCOM)$/$(PRJNAME)   
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/icl $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/integer $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/interprocess $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/intrusive $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/io $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/iostreams $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/iterator $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/lambda $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/logic $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/math $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/mpi $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/mpl $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/msm $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/multi_array $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/multi_index $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/numeric $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/optional $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/parameter $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/pending $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/phoenix $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/polygon $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/pool $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/preprocessor $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/program_options $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/property_map $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/property_tree $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/proto $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/ptr_container $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/random $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/range $(INCCOM)$/$(PRJNAME)
-    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/spirit $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/ratio $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/regex $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/serialization $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/signals $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/signals2 $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/smart_ptr $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/spirit $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/statechart $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/system $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/test $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/thread $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/timer $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/tr1 $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/tuple $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/typeof $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/type_traits $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/units $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/unordered $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/utility $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/uuid $(INCCOM)$/$(PRJNAME)
     @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/variant $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/wave $(INCCOM)$/$(PRJNAME)
+    @$(GNUCOPY) -R $(PACKAGE_DIR)$/$(TARFILE_NAME)$/boost$/xpressive $(INCCOM)$/$(PRJNAME)
     @$(TOUCH) $(PACKAGE_DIR)$/$(NORMALIZE_FLAG_FILE)
 
 normalize: $(PACKAGE_DIR)$/$(NORMALIZE_FLAG_FILE)

Modified: incubator/ooo/branches/buildsys/main/bootstrap.1
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/bootstrap.1?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/bootstrap.1 (original)
+++ incubator/ooo/branches/buildsys/main/bootstrap.1 Fri Oct 12 21:29:36 2012
@@ -56,7 +56,7 @@ chmod +x "$SRC_ROOT/solenv/bin/gccinstli
 
 # fetch or update external tarballs
 if [ "$DO_FETCH_TARBALLS" = "yes" ]; then
-    download_external_dependencies.pl $SRC_ROOT/external_deps.lst
+    "$PERL" "$SOLARENV/bin/download_external_dependencies.pl" $SRC_ROOT/external_deps.lst
 fi
 
 # ------------------------------------------------------------------------------
@@ -169,4 +169,4 @@ else
 fi
 
 # Download missing extensions.
-download_missing_extensions.pl
+"$PERL" "$SOLARENV/bin/download_missing_extensions.pl"

Modified: incubator/ooo/branches/buildsys/main/configure.in
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/configure.in?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/configure.in (original)
+++ incubator/ooo/branches/buildsys/main/configure.in Fri Oct 12 21:29:36 2012
@@ -52,6 +52,9 @@ AC_ARG_ENABLE(graphite,
 AC_ARG_WITH(system-graphite,
 [  --with-system-graphite    use graphite library already installed on system
 ],,)
+AC_ARG_WITH(system-apache-commons,
+[  --with-system-apache-commons    use apache-commons jar files already installed on system
+],,)
 AC_ARG_ENABLE(online-update,
 [  --disable-online-update Disables the Online Update feature.
 ],,enable_online_update=yes)

Modified: incubator/ooo/branches/buildsys/main/cppcanvas/source/mtfrenderer/implrenderer.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/cppcanvas/source/mtfrenderer/implrenderer.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/cppcanvas/source/mtfrenderer/implrenderer.cxx (original)
+++ incubator/ooo/branches/buildsys/main/cppcanvas/source/mtfrenderer/implrenderer.cxx Fri Oct 12 21:29:36 2012
@@ -688,14 +688,14 @@ namespace cppcanvas
                     switch( rGradient.GetStyle() )
                     {
                         case GRADIENT_LINEAR:
-                            basegfx::tools::createLinearODFGradientInfo(aGradInfo,
+                            aGradInfo = basegfx::tools::createLinearODFGradientInfo(
                                                                         aBounds,
                                                                         nSteps,
                                                                         fBorder,
                                                                         fRotation);
                             // map odf to svg gradient orientation - x
                             // instead of y direction
-                            aGradInfo.maTextureTransform = aGradInfo.maTextureTransform * aRot90;
+                            aGradInfo.setTextureTransform(aGradInfo.getTextureTransform() * aRot90);
                             aGradientService = rtl::OUString::createFromAscii("LinearGradient");
                             break;
 
@@ -714,27 +714,27 @@ namespace cppcanvas
                             // border value, hence the second (left
                             // most 1-...
                             const double fAxialBorder (1-2*(1-fBorder));
-                            basegfx::tools::createAxialODFGradientInfo(aGradInfo,
+                            aGradInfo = basegfx::tools::createAxialODFGradientInfo(
                                                                         aBounds,
                                                                         nSteps,
                                                                         fAxialBorder,
                                                                         fRotation);
                             // map odf to svg gradient orientation - x
                             // instead of y direction
-                            aGradInfo.maTextureTransform = aGradInfo.maTextureTransform * aRot90;
+                            aGradInfo.setTextureTransform(aGradInfo.getTextureTransform() * aRot90);
 
                             // map odf axial gradient to 3-stop linear
                             // gradient - shift left by 0.5
                             basegfx::B2DHomMatrix aShift;
+                            
                             aShift.translate(-0.5,0);
-                            aGradInfo.maTextureTransform = aGradInfo.maTextureTransform * aShift;
-
+                            aGradInfo.setTextureTransform(aGradInfo.getTextureTransform() * aShift);
                             aGradientService = rtl::OUString::createFromAscii("LinearGradient");
                             break;
                         }
 
                         case GRADIENT_RADIAL:
-                            basegfx::tools::createRadialODFGradientInfo(aGradInfo,
+                            aGradInfo = basegfx::tools::createRadialODFGradientInfo(
                                                                         aBounds,
                                                                         aOffset,
                                                                         nSteps,
@@ -743,7 +743,7 @@ namespace cppcanvas
                             break;
 
                         case GRADIENT_ELLIPTICAL:
-                            basegfx::tools::createEllipticalODFGradientInfo(aGradInfo,
+                            aGradInfo = basegfx::tools::createEllipticalODFGradientInfo(
                                                                             aBounds,
                                                                             aOffset,
                                                                             nSteps,
@@ -753,7 +753,7 @@ namespace cppcanvas
                             break;
 
                         case GRADIENT_SQUARE:
-                            basegfx::tools::createSquareODFGradientInfo(aGradInfo,
+                            aGradInfo = basegfx::tools::createSquareODFGradientInfo(
                                                                         aBounds,
                                                                         aOffset,
                                                                         nSteps,
@@ -763,7 +763,7 @@ namespace cppcanvas
                             break;
 
                         case GRADIENT_RECT:
-                            basegfx::tools::createRectangularODFGradientInfo(aGradInfo,
+                            aGradInfo = basegfx::tools::createRectangularODFGradientInfo(
                                                                              aBounds,
                                                                              aOffset,
                                                                              nSteps,
@@ -785,10 +785,12 @@ namespace cppcanvas
                     // gradient will always display at the origin, and
                     // not within the polygon bound (which might be
                     // miles away from the origin).
-                    aGradInfo.maTextureTransform.translate( aBounds.getMinX(),
-                                                            aBounds.getMinY() );
+                    aGradInfo.setTextureTransform(
+                        basegfx::tools::createTranslateB2DHomMatrix(
+                            aBounds.getMinX(), 
+                            aBounds.getMinY()) * aGradInfo.getTextureTransform());
                     ::basegfx::unotools::affineMatrixFromHomMatrix( aTexture.AffineTransform,
-                                                                    aGradInfo.maTextureTransform );
+                                                                    aGradInfo.getTextureTransform() );
 
                     uno::Sequence<uno::Any> args(3);
                     beans::PropertyValue aProp;
@@ -799,7 +801,7 @@ namespace cppcanvas
                     aProp.Value <<= aStops;
                     args[1] <<= aProp;
                     aProp.Name = rtl::OUString::createFromAscii("AspectRatio");
-                    aProp.Value <<= aGradInfo.mfAspectRatio;
+                    aProp.Value <<= aGradInfo.getAspectRatio();
                     args[2] <<= aProp;
 
                     aTexture.Gradient.set(

Modified: incubator/ooo/branches/buildsys/main/cppu/source/uno/data.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/cppu/source/uno/data.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/cppu/source/uno/data.cxx (original)
+++ incubator/ooo/branches/buildsys/main/cppu/source/uno/data.cxx Fri Oct 12 21:29:36 2012
@@ -366,7 +366,7 @@ sal_Bool SAL_CALL uno_type_isAssignableF
 #define BINTEST_VERIFY( c ) \
     if (! (c)) { fprintf( stderr, "### binary compatibility test failed: %s [line %d]!!!\n", #c, __LINE__ ); abort(); }
 #define BINTEST_VERIFYOFFSET( s, m, n ) \
-    if (OFFSET_OF(s, m) != n) { fprintf( stderr, "### OFFSET_OF(" #s ", "  #m ") = %" SAL_PRI_SIZET "u instead of expected %d!!!\n", OFFSET_OF(s, m), n ); abort(); }
+    if (OFFSET_OF(s, m) != n) { fprintf( stderr, "### OFFSET_OF(" #s ", "  #m ") = %" SAL_PRI_SIZET "u instead of expected %d!!!\n", OFFSET_OF(s, m), static_cast<int>(n) ); abort(); }
 
 #if OSL_DEBUG_LEVEL > 1
 #if defined(__GNUC__) && (defined(LINUX) || defined(FREEBSD)) && (defined(INTEL) || defined(POWERPC) || defined(X86_64) || defined(S390))
@@ -375,8 +375,8 @@ sal_Bool SAL_CALL uno_type_isAssignableF
     if (sizeof(s) != n) { fprintf( stderr, "### sizeof(" #s ") = %d instead of expected %d!!!\n", sizeof(s), n ); abort(); }
 #else // ! GNUC
 #define BINTEST_VERIFYSIZE( s, n ) \
-    fprintf( stderr, "> sizeof(" #s ") = %d\n", sizeof(s) ); \
-    if (sizeof(s) != n) { fprintf( stderr, "### sizeof(" #s ") = %d instead of expected %d!!!\n", sizeof(s), n ); abort(); }
+    fprintf( stderr, "> sizeof(" #s ") = %" SAL_PRI_SIZET "d\n", sizeof(s) ); \
+    if (sizeof(s) != n) { fprintf( stderr, "### sizeof(" #s ") = %" SAL_PRI_SIZET "d instead of expected %d!!!\n", sizeof(s), n ); abort(); }
 #endif
 #else // ! OSL_DEBUG_LEVEL
 #define BINTEST_VERIFYSIZE( s, n ) \

Modified: incubator/ooo/branches/buildsys/main/default_images/framework/res/backing_right_hc.png
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/default_images/framework/res/backing_right_hc.png?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/ooo/branches/buildsys/main/default_images/framework/res/backing_rtl_right_hc.png
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/default_images/framework/res/backing_rtl_right_hc.png?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/ooo/branches/buildsys/main/default_images/framework/res/backing_space_hc.png
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/default_images/framework/res/backing_space_hc.png?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
Binary files - no diff available.

Modified: incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx (original)
+++ incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/primitive2d/fillgradientprimitive2d.hxx Fri Oct 12 21:29:36 2012
@@ -27,6 +27,7 @@
 #include <drawinglayer/drawinglayerdllapi.h>
 #include <drawinglayer/primitive2d/baseprimitive2d.hxx>
 #include <drawinglayer/attribute/fillgradientattribute.hxx>
+#include <drawinglayer/texture/texture.hxx>
 
 //////////////////////////////////////////////////////////////////////////////
 // predefines
@@ -65,15 +66,15 @@ namespace drawinglayer
 
             /// local helpers
             void generateMatricesAndColors(
-                std::vector< basegfx::B2DHomMatrix >& rMatrices,
-                std::vector< basegfx::BColor >& rColors) const;
+                std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor) const;
             Primitive2DSequence createOverlappingFill(
-                const std::vector< basegfx::B2DHomMatrix >& rMatrices,
-                const std::vector< basegfx::BColor >& rColors,
+                const std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries, 
+                const basegfx::BColor& rOutmostColor,
                 const basegfx::B2DPolygon& rUnitPolygon) const;
             Primitive2DSequence createNonOverlappingFill(
-                const std::vector< basegfx::B2DHomMatrix >& rMatrices,
-                const std::vector< basegfx::BColor >& rColors,
+                const std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries, 
+                const basegfx::BColor& rOutmostColor,
                 const basegfx::B2DPolygon& rUnitPolygon) const;
 
 		protected:

Modified: incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/texture/texture.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/texture/texture.hxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/texture/texture.hxx (original)
+++ incubator/ooo/branches/buildsys/main/drawinglayer/inc/drawinglayer/texture/texture.hxx Fri Oct 12 21:29:36 2012
@@ -47,7 +47,6 @@ namespace drawinglayer
 			bool operator!=(const GeoTexSvx& rGeoTexSvx) const { return !operator==(rGeoTexSvx); }
 
 			// virtual base methods
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 			virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
 		};
@@ -58,6 +57,22 @@ namespace drawinglayer
 
 namespace drawinglayer
 {
+    namespace texture
+    {
+        /// helper class for processing equal number of matrices and colors
+        /// for texture processing
+        struct B2DHomMatrixAndBColor
+        {
+            basegfx::B2DHomMatrix   maB2DHomMatrix;
+            basegfx::BColor         maBColor;
+        };
+	} // end of namespace texture
+} // end of namespace drawinglayer
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace drawinglayer
+{
 	namespace texture
 	{
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradient : public GeoTexSvx
@@ -69,19 +84,22 @@ namespace drawinglayer
 			basegfx::BColor						maEnd;
 			double								mfBorder;
 
-			// helpers
-			void impAppendMatrix(::std::vector< basegfx::B2DHomMatrix >& rMatrices, const basegfx::B2DRange& rRange);
-			void impAppendColorsRadial(::std::vector< basegfx::BColor >& rColors);
-
 		public:
-			GeoTexSvxGradient(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder);
+			GeoTexSvxGradient(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder);
 			virtual ~GeoTexSvxGradient();
 
 			// compare operator
 			virtual bool operator==(const GeoTexSvx& rGeoTexSvx) const;
 
 			// virtual base methods
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors) = 0;
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor) = 0;
 
 			// data access
 			const basegfx::BColor& getStart() const { return maStart; }
@@ -99,11 +117,18 @@ namespace drawinglayer
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientLinear : public GeoTexSvxGradient
 		{
 		public:
-			GeoTexSvxGradientLinear(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fAngle);
+			GeoTexSvxGradientLinear(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder, 
+                double fAngle);
 			virtual ~GeoTexSvxGradientLinear();
 
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 		};
 	} // end of namespace texture
@@ -118,11 +143,18 @@ namespace drawinglayer
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientAxial : public GeoTexSvxGradient
 		{
 		public:
-			GeoTexSvxGradientAxial(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fAngle);
+			GeoTexSvxGradientAxial(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder, 
+                double fAngle);
 			virtual ~GeoTexSvxGradientAxial();
 
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 		};
 	} // end of namespace texture
@@ -137,11 +169,19 @@ namespace drawinglayer
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientRadial : public GeoTexSvxGradient
 		{
 		public:
-			GeoTexSvxGradientRadial(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY);
+			GeoTexSvxGradientRadial(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder, 
+                double fOffsetX, 
+                double fOffsetY);
 			virtual ~GeoTexSvxGradientRadial();
 
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 		};
 	} // end of namespace texture
@@ -156,11 +196,20 @@ namespace drawinglayer
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientElliptical : public GeoTexSvxGradient
 		{
 		public:
-			GeoTexSvxGradientElliptical(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle);
+			GeoTexSvxGradientElliptical(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder, 
+                double fOffsetX, 
+                double fOffsetY, 
+                double fAngle);
 			virtual ~GeoTexSvxGradientElliptical();
 
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 		};
 	} // end of namespace texture
@@ -175,11 +224,20 @@ namespace drawinglayer
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientSquare : public GeoTexSvxGradient
 		{
 		public:
-			GeoTexSvxGradientSquare(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle);
+			GeoTexSvxGradientSquare(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder, 
+                double fOffsetX, 
+                double fOffsetY, 
+                double fAngle);
 			virtual ~GeoTexSvxGradientSquare();
 
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 		};
 	} // end of namespace texture
@@ -194,11 +252,20 @@ namespace drawinglayer
 		class DRAWINGLAYER_DLLPUBLIC GeoTexSvxGradientRect : public GeoTexSvxGradient
 		{
 		public:
-			GeoTexSvxGradientRect(const basegfx::B2DRange& rTargetRange, const basegfx::BColor& rStart, const basegfx::BColor& rEnd, sal_uInt32 nSteps, double fBorder, double fOffsetX, double fOffsetY, double fAngle);
+			GeoTexSvxGradientRect(
+                const basegfx::B2DRange& rTargetRange, 
+                const basegfx::BColor& rStart, 
+                const basegfx::BColor& rEnd, 
+                sal_uInt32 nSteps, 
+                double fBorder, 
+                double fOffsetX, 
+                double fOffsetY, 
+                double fAngle);
 			virtual ~GeoTexSvxGradientRect();
 
-			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
-			virtual void appendColors(::std::vector< basegfx::BColor >& rColors);
+			virtual void appendTransformationsAndColors(
+                std::vector< B2DHomMatrixAndBColor >& rEntries, 
+                basegfx::BColor& rOutmostColor);
 			virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const;
 		};
 	} // end of namespace texture
@@ -220,7 +287,10 @@ namespace drawinglayer
 			sal_uInt32							mnSteps;
 
 		public:
-			GeoTexSvxHatch(const basegfx::B2DRange& rTargetRange, double fDistance, double fAngle);
+			GeoTexSvxHatch(
+                const basegfx::B2DRange& rTargetRange, 
+                double fDistance, 
+                double fAngle);
 			virtual ~GeoTexSvxHatch();
 
 			// compare operator
@@ -228,6 +298,7 @@ namespace drawinglayer
 
 			virtual void appendTransformations(::std::vector< basegfx::B2DHomMatrix >& rMatrices);
 			double getDistanceToHatch(const basegfx::B2DPoint& rUV) const;
+			const basegfx::B2DHomMatrix& getBackTextureTransform() const;
 		};
 	} // end of namespace texture
 } // end of namespace drawinglayer
@@ -245,7 +316,9 @@ namespace drawinglayer
 			basegfx::B2DVector							maSize;
 
 		public:
-			GeoTexSvxTiled(const basegfx::B2DPoint& rTopLeft, const basegfx::B2DVector& rSize);
+			GeoTexSvxTiled(
+                const basegfx::B2DPoint& rTopLeft, 
+                const basegfx::B2DVector& rSize);
 			virtual ~GeoTexSvxTiled();
 
 			// compare operator

Modified: incubator/ooo/branches/buildsys/main/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx (original)
+++ incubator/ooo/branches/buildsys/main/drawinglayer/source/primitive2d/fillgradientprimitive2d.cxx Fri Oct 12 21:29:36 2012
@@ -43,11 +43,10 @@ namespace drawinglayer
 	namespace primitive2d
 	{
         void FillGradientPrimitive2D::generateMatricesAndColors(
-            std::vector< basegfx::B2DHomMatrix >& rMatrices,
-            std::vector< basegfx::BColor >& rColors) const
+            std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries, 
+            basegfx::BColor& rOutmostColor) const
         {
-            rMatrices.clear();
-            rColors.clear();
+            rEntries.clear();
 
 			// make sure steps is not too high/low
 			const basegfx::BColor aStart(getFillGradient().getStartColor());
@@ -75,127 +74,131 @@ namespace drawinglayer
 				case attribute::GRADIENTSTYLE_LINEAR:
 				{
 					texture::GeoTexSvxGradientLinear aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getAngle());
-					aGradient.appendTransformations(rMatrices);
-					aGradient.appendColors(rColors);
+					aGradient.appendTransformationsAndColors(rEntries, rOutmostColor);
 					break;
 				}
 				case attribute::GRADIENTSTYLE_AXIAL:
 				{
 					texture::GeoTexSvxGradientAxial aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getAngle());
-					aGradient.appendTransformations(rMatrices);
-					aGradient.appendColors(rColors);
+					aGradient.appendTransformationsAndColors(rEntries, rOutmostColor);
 					break;
 				}
 				case attribute::GRADIENTSTYLE_RADIAL:
 				{
 					texture::GeoTexSvxGradientRadial aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY());
-					aGradient.appendTransformations(rMatrices);
-					aGradient.appendColors(rColors);
+					aGradient.appendTransformationsAndColors(rEntries, rOutmostColor);
 					break;
 				}
 				case attribute::GRADIENTSTYLE_ELLIPTICAL:
 				{
 					texture::GeoTexSvxGradientElliptical aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), getFillGradient().getAngle());
-					aGradient.appendTransformations(rMatrices);
-					aGradient.appendColors(rColors);
+					aGradient.appendTransformationsAndColors(rEntries, rOutmostColor);
 					break;
 				}
 				case attribute::GRADIENTSTYLE_SQUARE:
 				{
 					texture::GeoTexSvxGradientSquare aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), getFillGradient().getAngle());
-					aGradient.appendTransformations(rMatrices);
-					aGradient.appendColors(rColors);
+					aGradient.appendTransformationsAndColors(rEntries, rOutmostColor);
 					break;
 				}
 				case attribute::GRADIENTSTYLE_RECT:
 				{
 					texture::GeoTexSvxGradientRect aGradient(getObjectRange(), aStart, aEnd, nSteps, getFillGradient().getBorder(), getFillGradient().getOffsetX(), getFillGradient().getOffsetY(), getFillGradient().getAngle());
-					aGradient.appendTransformations(rMatrices);
-					aGradient.appendColors(rColors);
+					aGradient.appendTransformationsAndColors(rEntries, rOutmostColor);
 					break;
 				}
 			}
         }
 
         Primitive2DSequence FillGradientPrimitive2D::createOverlappingFill(
-            const std::vector< basegfx::B2DHomMatrix >& rMatrices,
-            const std::vector< basegfx::BColor >& rColors,
+            const std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries,
+            const basegfx::BColor& rOutmostColor,
             const basegfx::B2DPolygon& rUnitPolygon) const
         {
-			// prepare return value
-			Primitive2DSequence aRetval(rColors.size() ? rMatrices.size() + 1 : rMatrices.size());
+            // prepare return value
+            Primitive2DSequence aRetval(rEntries.size() + 1);
 
-            // create solid fill with start color
-		    if(rColors.size())
-		    {
-			    // create primitive
-			    const Primitive2DReference xRef(
-                    new PolyPolygonColorPrimitive2D(
-                        basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(getObjectRange())), 
-                        rColors[0]));
-			    aRetval[0] = xRef;
-		    }
-
-		    // create solid fill steps
-		    for(sal_uInt32 a(0); a < rMatrices.size(); a++)
-		    {
-			    // create part polygon
-			    basegfx::B2DPolygon aNewPoly(rUnitPolygon);
-			    aNewPoly.transform(rMatrices[a]);
+            // create solid fill with outmost color
+            aRetval[0] = Primitive2DReference(
+                new PolyPolygonColorPrimitive2D(
+                    basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(getObjectRange())), 
+                    rOutmostColor));
+
+            // create solid fill steps
+            for(sal_uInt32 a(0); a < rEntries.size(); a++)
+            {
+                // create part polygon
+                basegfx::B2DPolygon aNewPoly(rUnitPolygon);
+
+                aNewPoly.transform(rEntries[a].maB2DHomMatrix);
 
-			    // create solid fill
-			    const Primitive2DReference xRef(
+                // create solid fill
+                aRetval[a + 1] = Primitive2DReference(
                     new PolyPolygonColorPrimitive2D(
                         basegfx::B2DPolyPolygon(aNewPoly), 
-                        rColors[a + 1]));
-			    aRetval[a + 1] = xRef;
-		    }
+                        rEntries[a].maBColor));
+            }
 
             return aRetval;
         }
 
         Primitive2DSequence FillGradientPrimitive2D::createNonOverlappingFill(
-            const std::vector< basegfx::B2DHomMatrix >& rMatrices,
-            const std::vector< basegfx::BColor >& rColors,
+            const std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries, 
+            const basegfx::BColor& rOutmostColor,
             const basegfx::B2DPolygon& rUnitPolygon) const
         {
-			// prepare return value
-			Primitive2DSequence aRetval;
-            const sal_uInt32 nMatricesSize(rMatrices.size());
-
-            if(nMatricesSize)
-            {
-			    basegfx::B2DPolygon aOuterPoly(rUnitPolygon);
-			    aOuterPoly.transform(rMatrices[0]);
-                basegfx::B2DPolyPolygon aCombinedPolyPoly(aOuterPoly);
-    			const sal_uInt32 nEntryCount(rColors.size() ? rMatrices.size() + 1 : rMatrices.size());
-                sal_uInt32 nIndex(0);
-
-                aRetval.realloc(nEntryCount);
-			    
-		        if(rColors.size())
-		        {
-                    basegfx::B2DRange aOuterPolyRange(aOuterPoly.getB2DRange());
-                    aOuterPolyRange.expand(getObjectRange());
-                    aCombinedPolyPoly.append(basegfx::tools::createPolygonFromRect(aOuterPolyRange));
-                    aRetval[nIndex++] = Primitive2DReference(new PolyPolygonColorPrimitive2D(aCombinedPolyPoly, rColors[0]));
-                    aCombinedPolyPoly = basegfx::B2DPolyPolygon(aOuterPoly);
-                }
+            // prepare return value
+            Primitive2DSequence aRetval(rEntries.size() + 1);
 
-                for(sal_uInt32 a(1); a < nMatricesSize - 1; a++)
-		        {
-                    basegfx::B2DPolygon aInnerPoly(rUnitPolygon);
-			        aInnerPoly.transform(rMatrices[a]);
-                    aCombinedPolyPoly.append(aInnerPoly);
-			        aRetval[nIndex++] = Primitive2DReference(new PolyPolygonColorPrimitive2D(aCombinedPolyPoly, rColors[a]));
-                    aCombinedPolyPoly = basegfx::B2DPolyPolygon(aInnerPoly);
-                }
+            // get outmost range from object
+            basegfx::B2DRange aOutmostRange(getObjectRange());
+            basegfx::B2DPolyPolygon aCombinedPolyPoly;
+
+            if(rEntries.size())
+            {
+                // extend aOutmostRange with first polygon
+                basegfx::B2DPolygon aFirstPoly(rUnitPolygon);
+
+                aFirstPoly.transform(rEntries[0].maB2DHomMatrix);
+                aCombinedPolyPoly.append(aFirstPoly);
+                aOutmostRange.expand(aFirstPoly.getB2DRange());
+            }
+
+            // add outmost range to combined polypolygon (in 1st place), create first primitive
+            aCombinedPolyPoly.insert(0, basegfx::tools::createPolygonFromRect(aOutmostRange));
+            aRetval[0] = Primitive2DReference(
+                new PolyPolygonColorPrimitive2D(
+                    aCombinedPolyPoly, 
+                    rOutmostColor));
+
+            if(rEntries.size())
+            {
+                // reuse first polygon, it's the second one
+                aCombinedPolyPoly.remove(0);
+
+                for(sal_uInt32 a(0); a < rEntries.size() - 1; a++)
+                {
+                    // create next inner polygon, combinbe with last one
+                    basegfx::B2DPolygon aNextPoly(rUnitPolygon);
+
+                    aNextPoly.transform(rEntries[a + 1].maB2DHomMatrix);
+                    aCombinedPolyPoly.append(aNextPoly);
+
+                    // create primitive with correct color
+                    aRetval[a + 1] = Primitive2DReference(
+                        new PolyPolygonColorPrimitive2D(
+                            aCombinedPolyPoly, 
+                            rEntries[a].maBColor));
 
-		        if(rColors.size())
-		        {
-                    aRetval[nIndex] = Primitive2DReference(new PolyPolygonColorPrimitive2D(
-                        aCombinedPolyPoly, rColors[rColors.size() - 1]));
+                    // reuse inner polygon, it's the 2nd one
+                    aCombinedPolyPoly.remove(0);
                 }
+
+                // add last inner polygon with last color
+                aRetval[rEntries.size()] = Primitive2DReference(
+                    new PolyPolygonColorPrimitive2D(
+                        aCombinedPolyPoly, 
+                        rEntries[rEntries.size() - 1].maBColor));
             }
 
             return aRetval;
@@ -206,34 +209,35 @@ namespace drawinglayer
             // prepare shape of the Unit Polygon
 			basegfx::B2DPolygon aUnitPolygon;
 
-			if(attribute::GRADIENTSTYLE_RADIAL == getFillGradient().getStyle() 
-                || attribute::GRADIENTSTYLE_ELLIPTICAL == getFillGradient().getStyle())
-			{
-				aUnitPolygon = basegfx::tools::createPolygonFromCircle(
-                    basegfx::B2DPoint(0,0), 1);
-			}
-			else if(attribute::GRADIENTSTYLE_LINEAR == maFillGradient.getStyle())
-			{
-				aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(0, 0, 1, 1));
-			}
-			else
-			{
-				aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
-			}
+            switch(getFillGradient().getStyle())
+            {
+                case attribute::GRADIENTSTYLE_RADIAL:
+                case attribute::GRADIENTSTYLE_ELLIPTICAL:
+                {
+                    aUnitPolygon = basegfx::tools::createPolygonFromCircle(basegfx::B2DPoint(0.0, 0.0), 1.0);
+                    break;
+                }
+                default: // GRADIENTSTYLE_LINEAR, attribute::GRADIENTSTYLE_AXIAL, attribute::GRADIENTSTYLE_SQUARE, attribute::GRADIENTSTYLE_RECT
+                {
+                    aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1.0, -1.0, 1.0, 1.0));
+                    break;
+                }
+            }
 
             // get the transform matrices and colors (where colors
             // will have one more entry that matrices)
-			std::vector< basegfx::B2DHomMatrix > aMatrices;
-			std::vector< basegfx::BColor > aColors;
-            generateMatricesAndColors(aMatrices, aColors);
+            std::vector< drawinglayer::texture::B2DHomMatrixAndBColor > aEntries;
+            basegfx::BColor aOutmostColor;
+
+            generateMatricesAndColors(aEntries, aOutmostColor);
 
             if(bOverlapping)
             {
-                return createOverlappingFill(aMatrices, aColors, aUnitPolygon);
+                return createOverlappingFill(aEntries, aOutmostColor, aUnitPolygon);
             }
             else
             {
-                return createNonOverlappingFill(aMatrices, aColors, aUnitPolygon);
+                return createNonOverlappingFill(aEntries, aOutmostColor, aUnitPolygon);
             }
         }
 
@@ -248,7 +252,9 @@ namespace drawinglayer
 
             if(!getFillGradient().isDefault())
             {
-        		return createFill(true);
+                static bool bOverlapping(true); // allow to test non-overlapping in the debugger
+
+        		return createFill(bOverlapping);
             }
             else
             {

Modified: incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx (original)
+++ incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelperbitmaprender.cxx Fri Oct 12 21:29:36 2012
@@ -174,7 +174,12 @@ namespace drawinglayer
 			// take a rotation of 45 degrees (sqrt(2)) as maximum expansion into account
 			const Size aSourceSizePixel(rBitmapEx.GetSizePixel());
 			const double fMaximumArea(
-				(double)aOutputRectPixel.getWidth() * 
+                
+                // #121153# With Metafile, aOutputRectPixel may be empty and a virtual
+                // maximum quadratic size has to be used
+                bRecordToMetaFile ? 500000.0 : 
+
+                (double)aOutputRectPixel.getWidth() * 
 				(double)aOutputRectPixel.getHeight() *
 				1.4142136); // 1.4142136 taken as sqrt(2.0)
 

Modified: incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelpergradient.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelpergradient.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelpergradient.cxx (original)
+++ incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclhelpergradient.cxx Fri Oct 12 21:29:36 2012
@@ -63,86 +63,78 @@ namespace drawinglayer
 		void impDrawGradientToOutDevSimple(
 			OutputDevice& rOutDev,
 			const basegfx::B2DPolyPolygon& rTargetForm,
-			const ::std::vector< basegfx::B2DHomMatrix >& rMatrices,
-			const ::std::vector< basegfx::BColor >& rColors,
-			const basegfx::B2DPolygon& rUnitPolygon)
+            const std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries,
+            const basegfx::BColor& rOutmostColor,
+            const basegfx::B2DPolygon& rUnitPolygon)
 		{
 			rOutDev.SetLineColor();
-
-			for(sal_uInt32 a(0L); a < rColors.size(); a++)
-			{
-				// set correct color
-				const basegfx::BColor aFillColor(rColors[a]);
-				rOutDev.SetFillColor(Color(aFillColor));
-
-				if(a)
-				{
-					if(a - 1L < static_cast< sal_uInt32 >(rMatrices.size()))
-					{
-						basegfx::B2DPolygon aNewPoly(rUnitPolygon);
-						aNewPoly.transform(rMatrices[a - 1L]);
-						rOutDev.DrawPolygon(aNewPoly);
-					}
-				}
-				else
-				{
-					rOutDev.DrawPolyPolygon(rTargetForm);
-				}
-			}
+			rOutDev.SetFillColor(Color(rOutmostColor));
+			rOutDev.DrawPolyPolygon(rTargetForm);
+            const sal_uInt32 nCount(rEntries.size());
+
+            for(sal_uInt32 a(0); a < nCount; a++)
+            {
+                // create part polygon
+                basegfx::B2DPolygon aNewPoly(rUnitPolygon);
+
+                aNewPoly.transform(rEntries[a].maB2DHomMatrix);
+
+                // create solid fill
+                rOutDev.SetFillColor(Color(rEntries[a].maBColor));
+                rOutDev.DrawPolygon(aNewPoly);
+            }
 		}
 
 		void impDrawGradientToOutDevComplex(
 			OutputDevice& rOutDev,
 			const basegfx::B2DPolyPolygon& rTargetForm,
-			const ::std::vector< basegfx::B2DHomMatrix >& rMatrices,
-			const ::std::vector< basegfx::BColor >& rColors,
+            const std::vector< drawinglayer::texture::B2DHomMatrixAndBColor >& rEntries,
+            const basegfx::BColor& rOutmostColor,
 			const basegfx::B2DPolygon& rUnitPolygon)
 		{
 			PolyPolygon aVclTargetForm(rTargetForm);
 			::std::vector< Polygon > aVclPolygons;
+            const sal_uInt32 nCount(rEntries.size());
 			sal_uInt32 a;
 
+            // reserve when possible
+            aVclPolygons.reserve(nCount);
+
 			// remember and set to XOR
 			rOutDev.SetLineColor();
 			rOutDev.Push(PUSH_RASTEROP);
 			rOutDev.SetRasterOp(ROP_XOR);
 
 			// draw gradient PolyPolygons
-			for(a = 0L; a < rMatrices.size(); a++)
+			for(a = 0; a < nCount; a++)
 			{
 				// create polygon and remember
 				basegfx::B2DPolygon aNewPoly(rUnitPolygon);
-				aNewPoly.transform(rMatrices[a]);
+				aNewPoly.transform(rEntries[a].maB2DHomMatrix);
 				aVclPolygons.push_back(Polygon(aNewPoly));
 
-				// set correct color
-				if(rColors.size() > a)
-				{
-					const basegfx::BColor aFillColor(rColors[a]);
-					rOutDev.SetFillColor(Color(aFillColor));
-				}
-
 				// create vcl PolyPolygon and draw it
 				if(a)
 				{
-					PolyPolygon aVclPolyPoly(aVclPolygons[a - 1L]);
+					rOutDev.SetFillColor(Color(rEntries[a - 1].maBColor));
+					PolyPolygon aVclPolyPoly(aVclPolygons[a - 1]);
 					aVclPolyPoly.Insert(aVclPolygons[a]);
 					rOutDev.DrawPolyPolygon(aVclPolyPoly);
 				}
 				else
 				{
+					rOutDev.SetFillColor(Color(rOutmostColor));
 					PolyPolygon aVclPolyPoly(aVclTargetForm);
-					aVclPolyPoly.Insert(aVclPolygons[0L]);
+					aVclPolyPoly.Insert(aVclPolygons[0]);
 					rOutDev.DrawPolyPolygon(aVclPolyPoly);
 				}
 			}
 
 			// draw last poly in last color
-			if(rColors.size())
+			if(nCount)
 			{
-				const basegfx::BColor aFillColor(rColors[rColors.size() - 1L]);
-				rOutDev.SetFillColor(Color(aFillColor));
-				rOutDev.DrawPolygon(aVclPolygons[aVclPolygons.size() - 1L]);
+				rOutDev.SetFillColor(Color(rEntries[nCount - 1].maBColor));
+				rOutDev.DrawPolygon(aVclPolygons[aVclPolygons.size() - 1]);
 			}
 
 			// draw object form in black and go back to XOR
@@ -152,36 +144,30 @@ namespace drawinglayer
 			rOutDev.SetRasterOp(ROP_XOR);
 
 			// draw gradient PolyPolygons again
-			for(a = 0L; a < rMatrices.size(); a++)
+			for(a = 0; a < nCount; a++)
 			{
-				// set correct color
-				if(rColors.size() > a)
-				{
-					const basegfx::BColor aFillColor(rColors[a]);
-					rOutDev.SetFillColor(Color(aFillColor));
-				}
-
 				// create vcl PolyPolygon and draw it
 				if(a)
 				{
-					PolyPolygon aVclPolyPoly(aVclPolygons[a - 1L]);
+					rOutDev.SetFillColor(Color(rEntries[a - 1].maBColor));
+					PolyPolygon aVclPolyPoly(aVclPolygons[a - 1]);
 					aVclPolyPoly.Insert(aVclPolygons[a]);
 					rOutDev.DrawPolyPolygon(aVclPolyPoly);
 				}
 				else
 				{
+					rOutDev.SetFillColor(Color(rOutmostColor));
 					PolyPolygon aVclPolyPoly(aVclTargetForm);
-					aVclPolyPoly.Insert(aVclPolygons[0L]);
+					aVclPolyPoly.Insert(aVclPolygons[0]);
 					rOutDev.DrawPolyPolygon(aVclPolyPoly);
 				}
 			}
 
 			// draw last poly in last color
-			if(rColors.size())
+			if(nCount)
 			{
-				const basegfx::BColor aFillColor(rColors[rColors.size() - 1L]);
-				rOutDev.SetFillColor(Color(aFillColor));
-				rOutDev.DrawPolygon(aVclPolygons[aVclPolygons.size() - 1L]);
+				rOutDev.SetFillColor(Color(rEntries[nCount - 1].maBColor));
+				rOutDev.DrawPolygon(aVclPolygons[aVclPolygons.size() - 1]);
 			}
 
 			// reset drawmode
@@ -202,8 +188,8 @@ namespace drawinglayer
 		double fBorder, double fAngle, double fOffsetX, double fOffsetY, bool bSimple)
 	{
 		const basegfx::B2DRange aOutlineRange(basegfx::tools::getRange(rTargetForm));
-		::std::vector< basegfx::B2DHomMatrix > aMatrices;
-		::std::vector< basegfx::BColor > aColors;
+        std::vector< drawinglayer::texture::B2DHomMatrixAndBColor > aEntries;
+        basegfx::BColor aOutmostColor;
 		basegfx::B2DPolygon aUnitPolygon;
 
 		// make sure steps is not too high/low
@@ -215,63 +201,57 @@ namespace drawinglayer
 			case attribute::GRADIENTSTYLE_LINEAR:
 			{
 				texture::GeoTexSvxGradientLinear aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fAngle);
-				aGradient.appendTransformations(aMatrices);
-				aGradient.appendColors(aColors);
-                aUnitPolygon = basegfx::tools::createUnitPolygon();
+				aGradient.appendTransformationsAndColors(aEntries, aOutmostColor);
+                aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
 				break;
 			}
 			case attribute::GRADIENTSTYLE_AXIAL:
 			{
 				texture::GeoTexSvxGradientAxial aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fAngle);
-				aGradient.appendTransformations(aMatrices);
-				aGradient.appendColors(aColors);
+				aGradient.appendTransformationsAndColors(aEntries, aOutmostColor);
                 aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
 				break;
 			}
 			case attribute::GRADIENTSTYLE_RADIAL:
 			{
 				texture::GeoTexSvxGradientRadial aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetY);
-				aGradient.appendTransformations(aMatrices);
-				aGradient.appendColors(aColors);
+				aGradient.appendTransformationsAndColors(aEntries, aOutmostColor);
                 aUnitPolygon = basegfx::tools::createPolygonFromCircle(basegfx::B2DPoint(0,0), 1);
 				break;
 			}
 			case attribute::GRADIENTSTYLE_ELLIPTICAL:
 			{
 				texture::GeoTexSvxGradientElliptical aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetX, fAngle);
-				aGradient.appendTransformations(aMatrices);
-				aGradient.appendColors(aColors);
+				aGradient.appendTransformationsAndColors(aEntries, aOutmostColor);
                 aUnitPolygon = basegfx::tools::createPolygonFromCircle(basegfx::B2DPoint(0,0), 1);
 				break;
 			}
 			case attribute::GRADIENTSTYLE_SQUARE:
 			{
 				texture::GeoTexSvxGradientSquare aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetX, fAngle);
-				aGradient.appendTransformations(aMatrices);
-				aGradient.appendColors(aColors);
+				aGradient.appendTransformationsAndColors(aEntries, aOutmostColor);
                 aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
 				break;
 			}
 			case attribute::GRADIENTSTYLE_RECT:
 			{
 				texture::GeoTexSvxGradientRect aGradient(aOutlineRange, rStart, rEnd, nSteps, fBorder, fOffsetX, fOffsetX, fAngle);
-				aGradient.appendTransformations(aMatrices);
-				aGradient.appendColors(aColors);
+				aGradient.appendTransformationsAndColors(aEntries, aOutmostColor);
                 aUnitPolygon = basegfx::tools::createPolygonFromRect(basegfx::B2DRange(-1, -1, 1, 1));
 				break;
 			}
 		}
 
 		// paint them with mask using the XOR method
-		if(aMatrices.size())
+		if(aEntries.size())
 		{
 			if(bSimple)
 			{
-				impDrawGradientToOutDevSimple(rOutDev, rTargetForm, aMatrices, aColors, aUnitPolygon);
+				impDrawGradientToOutDevSimple(rOutDev, rTargetForm, aEntries, aOutmostColor, aUnitPolygon);
 			}
 			else
 			{
-				impDrawGradientToOutDevComplex(rOutDev, rTargetForm, aMatrices, aColors, aUnitPolygon);
+				impDrawGradientToOutDevComplex(rOutDev, rTargetForm, aEntries, aOutmostColor, aUnitPolygon);
 			}
 		}
 	}

Modified: incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclprocessor2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclprocessor2d.cxx?rev=1397728&r1=1397727&r2=1397728&view=diff
==============================================================================
--- incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclprocessor2d.cxx (original)
+++ incubator/ooo/branches/buildsys/main/drawinglayer/source/processor2d/vclprocessor2d.cxx Fri Oct 12 21:29:36 2012
@@ -605,10 +605,12 @@ namespace drawinglayer
 				}
 				else
 				{
-					impDrawGradientToOutDev(
+                    static bool bSimple = false; // allow testing simple paint in debugger
+					
+                    impDrawGradientToOutDev(
 						*mpOutputDevice, aLocalPolyPolygon, rGradient.getStyle(), rGradient.getSteps(),
 						aStartColor, aEndColor, rGradient.getBorder(),
-						rGradient.getAngle(), rGradient.getOffsetX(), rGradient.getOffsetY(), false);
+						rGradient.getAngle(), rGradient.getOffsetX(), rGradient.getOffsetY(), bSimple);
 				}
 			}
 		}