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:49:00 +0100
commit27f45bc243b45a13c65fb42db0369fd8b8317675 (patch)
treee46064acda7bbc98b79469265d46db8728737525
parentca3861669b4507ab9295370ee14d4f1d6b87e0c2 (diff)
downloadUXP-27f45bc243b45a13c65fb42db0369fd8b8317675.tar
UXP-27f45bc243b45a13c65fb42db0369fd8b8317675.tar.gz
UXP-27f45bc243b45a13c65fb42db0369fd8b8317675.tar.lz
UXP-27f45bc243b45a13c65fb42db0369fd8b8317675.tar.xz
UXP-27f45bc243b45a13c65fb42db0369fd8b8317675.zip
Don't trust convexity when applying transforms.
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;
}