From 8fa91344458abb5f32303a7a3f9a1ecbd69bf111 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Wed, 23 Jul 2014 10:17:41 +0200 Subject: [PATCH] Draw radial gradients using the proper radius. --- src/servers/app/drawing/Painter/Painter.cpp | 11 +++++++---- src/servers/app/drawing/Painter/Painter.h | 3 ++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/servers/app/drawing/Painter/Painter.cpp b/src/servers/app/drawing/Painter/Painter.cpp index ecc60b52df..7156be9eae 100644 --- a/src/servers/app/drawing/Painter/Painter.cpp +++ b/src/servers/app/drawing/Painter/Painter.cpp @@ -2901,7 +2901,8 @@ Painter::_RasterizePath(VertexSource& path, const BGradient& gradient) const agg::gradient_radial gradientFunction; _CalcRadialGradientTransform(radialGradient.Center(), gradientTransform); - _RasterizePath(path, gradient, gradientFunction, gradientTransform); + _RasterizePath(path, gradient, gradientFunction, gradientTransform, + radialGradient.Radius()); break; } case BGradient::TYPE_RADIAL_FOCUS: @@ -2912,7 +2913,8 @@ Painter::_RasterizePath(VertexSource& path, const BGradient& gradient) const agg::gradient_radial_focus gradientFunction; _CalcRadialGradientTransform(radialGradient.Center(), gradientTransform); - _RasterizePath(path, gradient, gradientFunction, gradientTransform); + _RasterizePath(path, gradient, gradientFunction, gradientTransform, + radialGradient.Radius()); break; } case BGradient::TYPE_DIAMOND: @@ -3087,7 +3089,8 @@ Painter::_MakeGradient(Array& array, const BGradient& gradient) const template void Painter::_RasterizePath(VertexSource& path, const BGradient& gradient, - GradientFunction function, agg::trans_affine& gradientTransform) const + GradientFunction function, agg::trans_affine& gradientTransform, + int gradientStop) const { GTRACE("Painter::_RasterizePath\n"); @@ -3106,7 +3109,7 @@ Painter::_RasterizePath(VertexSource& path, const BGradient& gradient, _MakeGradient(colorArray, gradient); span_gradient_type spanGradient(spanInterpolator, function, colorArray, - 0, 100); + 0, gradientStop); renderer_gradient_type gradientRenderer(fBaseRenderer, spanAllocator, spanGradient); diff --git a/src/servers/app/drawing/Painter/Painter.h b/src/servers/app/drawing/Painter/Painter.h index 1d30cec06c..166de5b8b1 100644 --- a/src/servers/app/drawing/Painter/Painter.h +++ b/src/servers/app/drawing/Painter/Painter.h @@ -349,7 +349,8 @@ private: void _RasterizePath(VertexSource& path, const BGradient& gradient, GradientFunction function, - agg::trans_affine& gradientTransform) const; + agg::trans_affine& gradientTransform, + int gradientStop = 100) const; private: mutable agg::rendering_buffer fBuffer;