You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/08/01 10:43:53 UTC

svn commit: r1367886 - /incubator/ooo/trunk/main/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx

Author: alg
Date: Wed Aug  1 08:43:53 2012
New Revision: 1367886

URL: http://svn.apache.org/viewvc?rev=1367886&view=rev
Log:
#120397# Corrected linear gradient primitive decomposition

Modified:
    incubator/ooo/trunk/main/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx

Modified: incubator/ooo/trunk/main/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx?rev=1367886&r1=1367885&r2=1367886&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/source/primitive2d/svggradientprimitive2d.cxx Wed Aug  1 08:43:53 2012
@@ -399,19 +399,19 @@ namespace drawinglayer
                         fPolyWidth, fPolyHeight, 
                         aPolyRange.getMinX(), aPolyRange.getMinY()));
 
-                // create unit transform from unit vector [0.0 .. 1.0] along the X-Axis to given 
-                // gradient vector defined by Start,End
-                const basegfx::B2DVector aVector(getEnd() - getStart());
+                // get start, end in object coordinates
+                const basegfx::B2DPoint aStart(aObjectTransform * getStart());
+                const basegfx::B2DPoint aEnd(aObjectTransform * getEnd());
+
+                // create transform from unit vector [0.0 .. 1.0] along the X-Axis to given 
+                // gradient vector in object coordinates defined by Start, End
+                const basegfx::B2DVector aVector(aEnd - aStart);
                 const double fVectorLength(aVector.getLength());
-                basegfx::B2DHomMatrix aUnitGradientToGradient;
-
-                aUnitGradientToGradient.scale(fVectorLength, 1.0);
-                aUnitGradientToGradient.rotate(atan2(aVector.getY(), aVector.getX()));
-                aUnitGradientToGradient.translate(getStart().getX(), getStart().getY());
+                basegfx::B2DHomMatrix aUnitGradientToObject;
 
-                // create full transform from unit gradient coordinates to object coordinates
-                // including the SvgGradient transformation
-                basegfx::B2DHomMatrix aUnitGradientToObject(aObjectTransform * aUnitGradientToGradient);
+                aUnitGradientToObject.scale(fVectorLength, 1.0);
+                aUnitGradientToObject.rotate(atan2(aVector.getY(), aVector.getX()));
+                aUnitGradientToObject.translate(aStart.getX(), aStart.getY());
 
                 // create inverse from it
                 basegfx::B2DHomMatrix aObjectToUnitGradient(aUnitGradientToObject);