summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2012-12-11 10:56:58 +0000
committerMichael Meeks <michael.meeks@suse.com>2012-12-11 11:02:36 +0000
commit6ca5bb7683af39997a267952f053d7c08a1516e8 (patch)
tree86ca6f4a7d97b3b05c131e2a88a599c5ccac66c2
parent1ffb9be31e7188ee6bc0e98c97afd1196cd39726 (diff)
fdo#35680 - fix wrong gradient rendering when grouped.
-rw-r--r--cppcanvas/source/mtfrenderer/implrenderer.cxx26
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 );