--- old/src/java.desktop/share/classes/sun/java2d/marlin/DRendererContext.java 2018-02-15 13:11:11.324348116 +0100 +++ new/src/java.desktop/share/classes/sun/java2d/marlin/DRendererContext.java 2018-02-15 13:11:11.172343952 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,8 @@ import sun.java2d.ReentrantContext; import sun.java2d.marlin.ArrayCacheConst.CacheStats; import sun.java2d.marlin.DMarlinRenderingEngine.NormalizingPathIterator; +import sun.java2d.marlin.DTransformingPathConsumer2D.CurveBasicMonotonizer; +import sun.java2d.marlin.DTransformingPathConsumer2D.CurveClipSplitter; /** * This class is a renderer context dedicated to a single thread @@ -70,6 +72,8 @@ final DStroker stroker; // Simplifies out collinear lines final DCollinearSimplifier simplifier = new DCollinearSimplifier(); + // Simplifies path + final DPathSimplifier pathSimplifier = new DPathSimplifier(); final DDasher dasher; final MarlinTileGenerator ptg; final MarlinCache cache; @@ -81,6 +85,10 @@ boolean closedPath = false; // clip rectangle (ymin, ymax, xmin, xmax): final double[] clipRect = new double[4]; + // CurveBasicMonotonizer instance + final CurveBasicMonotonizer monotonizer; + // CurveClipSplitter instance + final CurveClipSplitter curveClipSplitter; // Array caches: /* clean int[] cache (zero-filled) = 5 refs */ @@ -124,6 +132,10 @@ nPCPathIterator = new NormalizingPathIterator.NearestPixelCenter(double6); nPQPathIterator = new NormalizingPathIterator.NearestPixelQuarter(double6); + // curve monotonizer & clip subdivider (before transformerPC2D init) + monotonizer = new CurveBasicMonotonizer(this); + curveClipSplitter = new CurveClipSplitter(this); + // MarlinRenderingEngine.TransformingPathConsumer2D transformerPC2D = new DTransformingPathConsumer2D(this);