Phil, Will you have some time soon to have a look ? It fixes dashing performance definitively and dash error accumulation too.
Laurent Le 15 févr. 2018 6:30 PM, "Laurent Bourgès" <bourges.laur...@gmail.com> a écrit : > Hi, > > Please review this large patch providing Marlin 0.9.1 for JDK 11: > > JBS: to be created asap > webrev: http://cr.openjdk.java.net/~lbourges/marlin/marlin-091.0/ > > Changes: > - *ArrayCache: removed clean flag and usage of > jdk.internal.UNSAFE.allocateUninitializedArray() > - (D)Curve: added support for lines (curve type 4) + new methods x/y > Points to compute intersections on clip edges > - (D)Dasher: use new CurveBasicMonotonizer & CurveClipSplitter to perform > clipping in Dasher that uses skipLen() to compute properly the dash phase & > state > - (D)Helpers: refined precision in cubicRootsInAB (float variant) + add > fastXXXLen() to quickly estimate curve length from control points > moved findSubdivPoints() from (D)Stroker + added findClipPoints() to > determine t values corresponding to curve intersections with the clip edges > + added subdivideLineAt() to subdivide line segments > - (D)MarlinRenderingEngine: disable stroker clipping if dasher clipping > enabled (2nd clipping is counter-productive) + initialize new path > simplifier if enabled (disabled by default) + log new settings > - (D)Renderer: refined [quad/cubic]BreakIntoLinesAndAdd loops to enhance > accuracy (smaller error related to 2nd ddx/y) with asymetric supixel counts > - (D)Stroker: use new CurveBasicMonotonizer & CurveClipSplitter (code > refactoring) > - (D)TransformingPathConsumer2D: use CurveClipSplitter in PathClipFilter > to clip filled shapes overlapping clipping edges > added CurveClipSplitter that subdivides curves (line, quad, > cubic) at clip intersections (+ small padding to avoid precision issues) > added CurveBasicMonotonizer to monotonize curves (before in > Stroker) to make it on initial curve in Dasher (more efficient than for all > dashes) > - (D)PathSimplifier: new basic path clipper (disabled by default) ignoring > too small segments (radial distance threshold) > - ClipShapeTest: improved test to use a small tolerance as clipped curves > (at clip edges) has minor impact on computed offsets for stroked shapes and > on dash positions: overall quality is improved as previously larger curves > had more accumulated error on either dashes or stroke offsets > > Build & jtreg tests: OK > > Cheers, > Laurent >