summaryrefslogtreecommitdiff
path: root/drawinglayer
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2020-09-25 10:00:31 +0200
committerTomaž Vajngerl <quikee@gmail.com>2020-09-28 13:26:24 +0200
commitf2e9f7146adb64252174508025c167131131b9dd (patch)
treef15c22582b0521d21b1129330d348b9466e22a6d /drawinglayer
parentf1a5db2e54eed04430e9e4ec0967beba5869d044 (diff)
forward axial and radial gradient types to VCL too
VCL's drawGradient() can handle them all, at least using a fallback algorithm. And drawinglayer doesn't know which of them are handled directly by the VCL backend used. A catch is that the rendering of tdf#133477 is different, so keep using drawinglayer for the affected gradient types until somebody fixes that. Change-Id: I1719c67c15752c6d1c3431ddfa797ac94d039555 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103376 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com> (cherry picked from commit 6965bb07bb33429a7663a3f3ebe58ed89c4327d9) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103427 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'drawinglayer')
-rw-r--r--drawinglayer/source/processor2d/vclpixelprocessor2d.cxx11
1 files changed, 9 insertions, 2 deletions
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 10d8e69e51fa..1cbd664d3eb1 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -238,7 +238,9 @@ GradientStyle convertGradientStyle(drawinglayer::attribute::GradientStyle eGradi
case drawinglayer::attribute::GradientStyle::Rect:
return GradientStyle::Rect;
case drawinglayer::attribute::GradientStyle::Linear:
+ return GradientStyle::Linear;
default:
+ assert(false);
return GradientStyle::Linear;
}
}
@@ -901,8 +903,13 @@ GradientStyle convertGradientStyle(drawinglayer::attribute::GradientStyle eGradi
{
const attribute::FillGradientAttribute& rFillGradient = rPrimitive.getFillGradient();
- if (rFillGradient.getSteps() > 0
- || rFillGradient.getStyle() != drawinglayer::attribute::GradientStyle::Linear)
+ // VCL should be able to handle all styles, but for tdf#133477 the VCL result
+ // is different from processing the gradient manually by drawinglayer
+ // (and the Writer unittest for it fails). Keep using the drawinglayer code
+ // until somebody founds out what's wrong and fixes it.
+ if (rFillGradient.getStyle() != drawinglayer::attribute::GradientStyle::Linear
+ && rFillGradient.getStyle() != drawinglayer::attribute::GradientStyle::Axial
+ && rFillGradient.getStyle() != drawinglayer::attribute::GradientStyle::Radial)
{
process(rPrimitive);
return;