summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-02-18 11:49:00 +0100
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-02-18 11:50:13 +0100
commit915ae7981a0fa998f244780549bb14822f765126 (patch)
tree12860e1ee0f1680c9438fd98336ae7a53afcf02c
parent33420c43a2c88f87fec17d4196229d1b6afc9999 (diff)
downloadUXP-915ae7981a0fa998f244780549bb14822f765126.tar
UXP-915ae7981a0fa998f244780549bb14822f765126.tar.gz
UXP-915ae7981a0fa998f244780549bb14822f765126.tar.lz
UXP-915ae7981a0fa998f244780549bb14822f765126.tar.xz
UXP-915ae7981a0fa998f244780549bb14822f765126.zip
Don't trust convexity when applying transforms.PM28.4.0_Release
In theory, a convex shape transformed by an affine matrix should still be convex. However, due to numerical imprecision of floats, when we try to determine if something is convex, we can get different answers pre and post a transformation (think of two line segments nearly co-linear). Convex paths take a faster scan converter, but it is only well behaved if the path is, in fact, convex. Thus we have to be conservative about which paths we mark as convex, and cant's trust transformed paths to retain their convexity. We re-calculate when a transform is applied.
-rw-r--r--gfx/skia/skia/src/core/SkPath.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/gfx/skia/skia/src/core/SkPath.cpp b/gfx/skia/skia/src/core/SkPath.cpp
index b7d392025..fc3db3ee5 100644
--- a/gfx/skia/skia/src/core/SkPath.cpp
+++ b/gfx/skia/skia/src/core/SkPath.cpp
@@ -1744,7 +1744,7 @@ void SkPath::transform(const SkMatrix& matrix, SkPath* dst) const {
if (this != dst) {
dst->fFillType = fFillType;
- dst->fConvexity = fConvexity;
+ dst->fConvexity = kUnknown_Convexity;
dst->fIsVolatile = fIsVolatile;
}