vcl/skia/gdiimpl.cxx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
New commits: commit f3ca55e78799934c19ae66a822397d98b7997fa9 Author: Luboš Luňák <l.lu...@collabora.com> AuthorDate: Fri Sep 25 10:40:36 2020 +0200 Commit: Luboš Luňák <l.lu...@collabora.com> CommitDate: Fri Sep 25 19:29:52 2020 +0200 Skia drawGradient() tweaks Change-Id: Id16a714c19c42b7071162107cbaa96c4ea95674d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103373 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lu...@collabora.com> diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index 0adaf301a321..fc384d58f78e 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -1798,8 +1798,6 @@ bool SkiaSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPolygon, Point aCenter; aGradient.SetAngle(aGradient.GetAngle() + 2700); aGradient.GetBoundRect(boundRect, aBoundRect, aCenter); - tools::Polygon aPoly(aBoundRect); - aPoly.Rotate(aCenter, aGradient.GetAngle() % 3600); SkColor startColor = toSkColorWithIntensity(rGradient.GetStartColor(), rGradient.GetStartIntensity()); @@ -1808,6 +1806,8 @@ bool SkiaSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPolygon, sk_sp<SkShader> shader; if (rGradient.GetStyle() == GradientStyle::Linear) { + tools::Polygon aPoly(aBoundRect); + aPoly.Rotate(aCenter, aGradient.GetAngle() % 3600); SkPoint points[2] = { SkPoint::Make(toSkX(aPoly[0].X()), toSkY(aPoly[0].Y())), SkPoint::Make(toSkX(aPoly[1].X()), toSkY(aPoly[1].Y())) }; SkColor colors[2] = { startColor, endColor }; @@ -1816,15 +1816,17 @@ bool SkiaSalGraphicsImpl::drawGradient(const tools::PolyPolygon& rPolyPolygon, } else { - // Move the center by (-1,-1) (the default VCL algorithm is a bit off-center that way). + // Move the center by (-1,-1) (the default VCL algorithm is a bit off-center that way, + // Skia is the opposite way). SkPoint center = SkPoint::Make(toSkX(aCenter.X()) - 1, toSkY(aCenter.Y()) - 1); - SkScalar radius = std::max(aBoundRect.GetWidth() / 2, aBoundRect.GetHeight() / 2); + SkScalar radius = std::max(aBoundRect.GetWidth() / 2.0, aBoundRect.GetHeight() / 2.0); SkColor colors[2] = { endColor, startColor }; SkScalar pos[2] = { SkDoubleToScalar(aGradient.GetBorder() / 100.0), 1.0 }; shader = SkGradientShader::MakeRadial(center, radius, colors, pos, 2, SkTileMode::kClamp); } SkPaint paint; + paint.setAntiAlias(mParent.getAntiAliasB2DDraw()); paint.setShader(shader); getDrawCanvas()->drawPath(path, paint); postDraw(); @@ -1856,6 +1858,7 @@ bool SkiaSalGraphicsImpl::implDrawGradient(const basegfx::B2DPolyPolygon& rPolyP sk_sp<SkShader> shader = SkGradientShader::MakeLinear(points, colors.data(), pos.data(), colors.size(), SkTileMode::kDecal); SkPaint paint; + paint.setAntiAlias(mParent.getAntiAliasB2DDraw()); paint.setShader(shader); getDrawCanvas()->drawPath(path, paint); addXorRegion(path.getBounds()); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits