diff options
author | Michael Meeks <michael.meeks@suse.com> | 2012-12-11 10:56:58 +0000 |
---|---|---|
committer | Michael Meeks <michael.meeks@suse.com> | 2012-12-11 11:02:36 +0000 |
commit | 6ca5bb7683af39997a267952f053d7c08a1516e8 (patch) | |
tree | 86ca6f4a7d97b3b05c131e2a88a599c5ccac66c2 | |
parent | 1ffb9be31e7188ee6bc0e98c97afd1196cd39726 (diff) |
fdo#35680 - fix wrong gradient rendering when grouped.
-rw-r--r-- | cppcanvas/source/mtfrenderer/implrenderer.cxx | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/cppcanvas/source/mtfrenderer/implrenderer.cxx b/cppcanvas/source/mtfrenderer/implrenderer.cxx index e8f40bd7b4af..1f3872bba33e 100644 --- a/cppcanvas/source/mtfrenderer/implrenderer.cxx +++ b/cppcanvas/source/mtfrenderer/implrenderer.cxx @@ -696,10 +696,23 @@ namespace cppcanvas case GradientStyle_AXIAL: { - basegfx::tools::createLinearODFGradientInfo(aGradInfo, + // Adapt the border so that it is suitable + // for the axial gradient. An axial + // gradient consists of two linear + // gradients. Each of those covers half + // of the total size. In order to + // compensate for the condensed display of + // the linear gradients, we have to + // enlarge the area taken up by the actual + // gradient (1-fBorder). After that we + // have to turn the result back into a + // border value, hence the second (left + // most 1-... + const double fAxialBorder (1-2*(1-fBorder)); + basegfx::tools::createAxialODFGradientInfo(aGradInfo, aBounds, nSteps, - fBorder, + fAxialBorder, fRotation); // map odf to svg gradient orientation - x // instead of y direction @@ -760,15 +773,6 @@ namespace cppcanvas break; } - // As the texture coordinate space is relative to - // the polygon coordinate space (NOT to the - // polygon itself), move gradient to the start of - // the actual polygon. If we skip this, the - // 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() ); ::basegfx::unotools::affineMatrixFromHomMatrix( aTexture.AffineTransform, aGradInfo.maTextureTransform ); |