summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2020-07-02 10:07:24 +0200
committerLuboš Luňák <l.lunak@collabora.com>2020-07-02 14:12:41 +0200
commitb07f93c31ba4b652b92d7b8e40edb3ca584f04f6 (patch)
tree07c27ad23a5a16d00752e17d618103d174819f6e
parentbbb35541d8e0a2b041ed05ccb23307afa5371211 (diff)
do not convert straight lines in polygons to cubic for SkPath
Change-Id: If8a088daa7971509cf12b508f956bed28a6c053b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97724 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
-rw-r--r--vcl/skia/gdiimpl.cxx29
1 files changed, 17 insertions, 12 deletions
diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx
index 3dd70b822411..addb0903c499 100644
--- a/vcl/skia/gdiimpl.cxx
+++ b/vcl/skia/gdiimpl.cxx
@@ -89,20 +89,25 @@ void addPolygonToPath(const basegfx::B2DPolygon& rPolygon, SkPath& rPath)
basegfx::B2DPoint aPreviousControlPoint = rPolygon.getNextControlPoint(nPreviousIndex);
basegfx::B2DPoint aCurrentControlPoint = rPolygon.getPrevControlPoint(nCurrentIndex);
- if (aPreviousControlPoint.equal(aPreviousPoint))
- {
- aPreviousControlPoint
- = aPreviousPoint + ((aPreviousControlPoint - aCurrentPoint) * 0.0005);
- }
-
- if (aCurrentControlPoint.equal(aCurrentPoint))
+ if (aPreviousControlPoint.equal(aPreviousPoint)
+ && aCurrentControlPoint.equal(aCurrentPoint))
+ rPath.lineTo(aCurrentPoint.getX(), aCurrentPoint.getY()); // a straight line
+ else
{
- aCurrentControlPoint
- = aCurrentPoint + ((aCurrentControlPoint - aPreviousPoint) * 0.0005);
+ if (aPreviousControlPoint.equal(aPreviousPoint))
+ {
+ aPreviousControlPoint
+ = aPreviousPoint + ((aPreviousControlPoint - aCurrentPoint) * 0.0005);
+ }
+ if (aCurrentControlPoint.equal(aCurrentPoint))
+ {
+ aCurrentControlPoint
+ = aCurrentPoint + ((aCurrentControlPoint - aPreviousPoint) * 0.0005);
+ }
+ rPath.cubicTo(aPreviousControlPoint.getX(), aPreviousControlPoint.getY(),
+ aCurrentControlPoint.getX(), aCurrentControlPoint.getY(),
+ aCurrentPoint.getX(), aCurrentPoint.getY());
}
- rPath.cubicTo(aPreviousControlPoint.getX(), aPreviousControlPoint.getY(),
- aCurrentControlPoint.getX(), aCurrentControlPoint.getY(),
- aCurrentPoint.getX(), aCurrentPoint.getY());
}
aPreviousPoint = aCurrentPoint;
nPreviousIndex = nCurrentIndex;