67c905ce6b
Inside SkOpEdgeBuilder::walk(), when current segment is cubic curve, its shape may be reduced, therefore, the curve points should be determined by the reduction result ‘split->fVerb’ instead of ‘verb’. Actually, inside this switch case, ‘verb’ is always ‘SkPath::kCubic_Verb’, which makes the ‘fCanAdd’ always true. The outcome of this bug makes the subsequent logic which depends on ‘fCanAdd’ (L301-332) incorrect, and in some cases, fails the whole boolean operation at L329. The Fiddle below demonstrates how this bug fails a union operation of two paths, by returning an empty path. https://fiddle.skia.org/c/e528567b62bc338cd99f4a89f0c5342e Screen shot of the fiddle: https://www.dropbox.com/s/4bnzlponq6gen27/pathOpsBug.png?dl=0 2nd Fiddle drawing the results (larger) https://fiddle.skia.org/c/1f2a513c2ee0395b9d05fb1eb987b01f Change-Id: If07f54cef1b9409f9b6db27d6294a3e3461b0181 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/284426 Commit-Queue: Kevin Lubick <kjlubick@google.com> Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Reed <reed@google.com> Reviewed-by: Kevin Lubick <kjlubick@google.com> |
||
---|---|---|
.. | ||
effects.spec.js | ||
path2d.spec.js | ||
path.spec.js | ||
pathkitinit.js | ||
pathops.spec.js | ||
PathOpsOp.json | ||
PathOpsSimplify.json | ||
svg.spec.js | ||
testReporter.js | ||
util.spec.js |