modules/graphics/src/main/java/com/sun/prism/impl/shape/OpenPiscesPrismUtils.java

Print this page

        

*** 37,71 **** import com.sun.openpisces.Stroker; import com.sun.openpisces.TransformingPathConsumer2D; import com.sun.prism.BasicStroke; public class OpenPiscesPrismUtils { ! private static final Renderer savedRenderer = new Renderer(3, 3); private static final Stroker savedStroker = new Stroker(savedRenderer); private static final Dasher savedDasher = new Dasher(savedStroker); private static TransformingPathConsumer2D.FilterSet transformer = new TransformingPathConsumer2D.FilterSet(); private static PathConsumer2D initRenderer(BasicStroke stroke, BaseTransform tx, Rectangle clip, ! int pirule) { int oprule = (stroke == null && pirule == PathIterator.WIND_EVEN_ODD) ? Renderer.WIND_EVEN_ODD : Renderer.WIND_NON_ZERO; ! savedRenderer.reset(clip.x, clip.y, clip.width, clip.height, oprule); ! PathConsumer2D ret = transformer.getConsumer(savedRenderer, tx); if (stroke != null) { ! savedStroker.reset(stroke.getLineWidth(), stroke.getEndCap(), stroke.getLineJoin(), stroke.getMiterLimit()); ! savedStroker.setConsumer(ret); ! ret = savedStroker; float dashes[] = stroke.getDashArray(); if (dashes != null) { ! savedDasher.reset(dashes, stroke.getDashPhase()); ! ret = savedDasher; } } return ret; } --- 37,88 ---- import com.sun.openpisces.Stroker; import com.sun.openpisces.TransformingPathConsumer2D; import com.sun.prism.BasicStroke; public class OpenPiscesPrismUtils { ! ! private static final Renderer savedRenderer = new Renderer(0, 0); private static final Stroker savedStroker = new Stroker(savedRenderer); private static final Dasher savedDasher = new Dasher(savedStroker); + // Support shape antialiasing rendering + private static final Renderer savedAARenderer = new Renderer(3, 3); + private static final Stroker savedAAStroker = new Stroker(savedAARenderer); + private static final Dasher savedAADasher = new Dasher(savedAAStroker); + private static TransformingPathConsumer2D.FilterSet transformer = new TransformingPathConsumer2D.FilterSet(); private static PathConsumer2D initRenderer(BasicStroke stroke, BaseTransform tx, Rectangle clip, ! int pirule, ! boolean antialiasedShape) { + Renderer renderer = savedAARenderer; + Stroker stroker = savedAAStroker; + Dasher dasher = savedAADasher; + + if (!antialiasedShape) { + renderer = savedRenderer; + stroker = savedStroker; + dasher = savedDasher; + } + int oprule = (stroke == null && pirule == PathIterator.WIND_EVEN_ODD) ? Renderer.WIND_EVEN_ODD : Renderer.WIND_NON_ZERO; ! renderer.reset(clip.x, clip.y, clip.width, clip.height, oprule); ! PathConsumer2D ret = transformer.getConsumer(renderer, tx); if (stroke != null) { ! stroker.reset(stroke.getLineWidth(), stroke.getEndCap(), stroke.getLineJoin(), stroke.getMiterLimit()); ! stroker.setConsumer(ret); ! ret = stroker; float dashes[] = stroke.getDashArray(); if (dashes != null) { ! dasher.reset(dashes, stroke.getDashPhase()); ! ret = dasher; } } return ret; }
*** 99,121 **** } public static Renderer setupRenderer(Shape shape, BasicStroke stroke, BaseTransform xform, ! Rectangle rclip) { PathIterator pi = shape.getPathIterator(null); ! feedConsumer(pi, initRenderer(stroke, xform, rclip, pi.getWindingRule())); ! return savedRenderer; } public static Renderer setupRenderer(Path2D p2d, BasicStroke stroke, BaseTransform xform, ! Rectangle rclip) { ! PathConsumer2D pc2d = initRenderer(stroke, xform, rclip, p2d.getWindingRule()); float coords[] = p2d.getFloatCoordsNoClone(); byte types[] = p2d.getCommandsNoClone(); int nsegs = p2d.getNumCommands(); int coff = 0; --- 116,140 ---- } public static Renderer setupRenderer(Shape shape, BasicStroke stroke, BaseTransform xform, ! Rectangle rclip, ! boolean antialiasedShape) { PathIterator pi = shape.getPathIterator(null); ! feedConsumer(pi, initRenderer(stroke, xform, rclip, pi.getWindingRule(), antialiasedShape)); ! return antialiasedShape ? savedAARenderer : savedRenderer; } public static Renderer setupRenderer(Path2D p2d, BasicStroke stroke, BaseTransform xform, ! Rectangle rclip, ! boolean antialiasedShape) { ! PathConsumer2D pc2d = initRenderer(stroke, xform, rclip, p2d.getWindingRule(), antialiasedShape); float coords[] = p2d.getFloatCoordsNoClone(); byte types[] = p2d.getCommandsNoClone(); int nsegs = p2d.getNumCommands(); int coff = 0;
*** 144,151 **** pc2d.closePath(); break; } } pc2d.pathDone(); ! return savedRenderer; } } --- 163,170 ---- pc2d.closePath(); break; } } pc2d.pathDone(); ! return antialiasedShape ? savedAARenderer : savedRenderer; } }