< prev index next >

src/java.desktop/share/classes/sun/java2d/marlin/MarlinRenderingEngine.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2007, 2017, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2007, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 45,55 **** * Marlin RendererEngine implementation (derived from Pisces) */ public final class MarlinRenderingEngine extends RenderingEngine implements MarlinConst { ! private static enum NormMode { ON_WITH_AA { @Override PathIterator getNormalizingPathIterator(final RendererContext rdrCtx, final PathIterator src) { --- 45,69 ---- * Marlin RendererEngine implementation (derived from Pisces) */ public final class MarlinRenderingEngine extends RenderingEngine implements MarlinConst { ! // slightly slower ~2% if enabled stroker clipping (lines) but skipping cap / join handling is few percents faster in specific cases ! static final boolean DISABLE_2ND_STROKER_CLIPPING = true; ! ! static final boolean DO_TRACE_PATH = false; ! ! static final boolean DO_CLIP = MarlinProperties.isDoClip(); ! static final boolean DO_CLIP_FILL = true; ! static final boolean DO_CLIP_RUNTIME_ENABLE = MarlinProperties.isDoClipRuntimeFlag(); ! ! private static final float MIN_PEN_SIZE = 1.0f / MIN_SUBPIXELS; ! ! static final float UPPER_BND = Float.MAX_VALUE / 2.0f; ! static final float LOWER_BND = -UPPER_BND; ! ! private enum NormMode { ON_WITH_AA { @Override PathIterator getNormalizingPathIterator(final RendererContext rdrCtx, final PathIterator src) {
*** 78,99 **** abstract PathIterator getNormalizingPathIterator(RendererContext rdrCtx, PathIterator src); } - private static final float MIN_PEN_SIZE = 1.0f / NORM_SUBPIXELS; - - static final float UPPER_BND = Float.MAX_VALUE / 2.0f; - static final float LOWER_BND = -UPPER_BND; - - static final boolean DO_CLIP = MarlinProperties.isDoClip(); - static final boolean DO_CLIP_FILL = true; - - static final boolean DO_TRACE_PATH = false; - - static final boolean DO_CLIP_RUNTIME_ENABLE = MarlinProperties.isDoClipRuntimeFlag(); - /** * Public constructor */ public MarlinRenderingEngine() { super(); --- 92,101 ----
*** 417,434 **** // deltaTransformConsumer may adjust the clip rectangle: pc2d = transformerPC2D.deltaTransformConsumer(pc2d, strokerat); // stroker will adjust the clip rectangle (width / miter limit): ! pc2d = rdrCtx.stroker.init(pc2d, width, caps, join, miterlimit, scale); if (dashes != null) { if (!recycleDashes) { dashLen = dashes.length; } pc2d = rdrCtx.dasher.init(pc2d, dashes, dashLen, dashphase, recycleDashes); } else if (rdrCtx.doClip && (caps != Stroker.CAP_BUTT)) { if (DO_TRACE_PATH) { pc2d = transformerPC2D.traceClosedPathDetector(pc2d); } --- 419,449 ---- // deltaTransformConsumer may adjust the clip rectangle: pc2d = transformerPC2D.deltaTransformConsumer(pc2d, strokerat); // stroker will adjust the clip rectangle (width / miter limit): ! pc2d = rdrCtx.stroker.init(pc2d, width, caps, join, miterlimit, scale, ! (dashes == null)); ! ! // Curve Monotizer: ! rdrCtx.monotonizer.init(width); if (dashes != null) { if (!recycleDashes) { dashLen = dashes.length; } + if (DO_TRACE_PATH) { + pc2d = transformerPC2D.traceDasher(pc2d); + } pc2d = rdrCtx.dasher.init(pc2d, dashes, dashLen, dashphase, recycleDashes); + + if (DISABLE_2ND_STROKER_CLIPPING) { + // disable stoker clipping + rdrCtx.stroker.disableClipping(); + } + } else if (rdrCtx.doClip && (caps != Stroker.CAP_BUTT)) { if (DO_TRACE_PATH) { pc2d = transformerPC2D.traceClosedPathDetector(pc2d); }
*** 623,632 **** --- 638,653 ---- } private static void pathTo(final RendererContext rdrCtx, final PathIterator pi, PathConsumer2D pc2d) { + if (USE_PATH_SIMPLIFIER) { + // Use path simplifier at the first step + // to remove useless points + pc2d = rdrCtx.pathSimplifier.init(pc2d); + } + // mark context as DIRTY: rdrCtx.dirty = true; pathToLoop(rdrCtx.float6, pi, pc2d);
*** 1068,1079 **** logInfo("sun.java2d.renderer.useRef = " + refType); logInfo("sun.java2d.renderer.edges = " + MarlinConst.INITIAL_EDGES_COUNT); ! logInfo("sun.java2d.renderer.pixelsize = " ! + MarlinConst.INITIAL_PIXEL_DIM); logInfo("sun.java2d.renderer.subPixel_log2_X = " + MarlinConst.SUBPIXEL_LG_POSITIONS_X); logInfo("sun.java2d.renderer.subPixel_log2_Y = " + MarlinConst.SUBPIXEL_LG_POSITIONS_Y); --- 1089,1102 ---- logInfo("sun.java2d.renderer.useRef = " + refType); logInfo("sun.java2d.renderer.edges = " + MarlinConst.INITIAL_EDGES_COUNT); ! logInfo("sun.java2d.renderer.pixelWidth = " ! + MarlinConst.INITIAL_PIXEL_WIDTH); ! logInfo("sun.java2d.renderer.pixelHeight = " ! + MarlinConst.INITIAL_PIXEL_HEIGHT); logInfo("sun.java2d.renderer.subPixel_log2_X = " + MarlinConst.SUBPIXEL_LG_POSITIONS_X); logInfo("sun.java2d.renderer.subPixel_log2_Y = " + MarlinConst.SUBPIXEL_LG_POSITIONS_Y);
*** 1099,1114 **** --- 1122,1146 ---- + MarlinCache.RLE_MIN_WIDTH); // optimisation parameters logInfo("sun.java2d.renderer.useSimplifier = " + MarlinConst.USE_SIMPLIFIER); + logInfo("sun.java2d.renderer.usePathSimplifier= " + + MarlinConst.USE_PATH_SIMPLIFIER); + logInfo("sun.java2d.renderer.pathSimplifier.pixTol = " + + MarlinProperties.getPathSimplifierPixelTolerance()); logInfo("sun.java2d.renderer.clip = " + MarlinProperties.isDoClip()); logInfo("sun.java2d.renderer.clip.runtime.enable = " + MarlinProperties.isDoClipRuntimeFlag()); + logInfo("sun.java2d.renderer.clip.subdivider = " + + MarlinProperties.isDoClipSubdivider()); + logInfo("sun.java2d.renderer.clip.subdivider.minLength = " + + MarlinProperties.getSubdividerMinLength()); + // debugging parameters logInfo("sun.java2d.renderer.doStats = " + MarlinConst.DO_STATS); logInfo("sun.java2d.renderer.doMonitors = " + MarlinConst.DO_MONITORS);
*** 1122,1131 **** --- 1154,1165 ---- + MarlinConst.LOG_CREATE_CONTEXT); logInfo("sun.java2d.renderer.logUnsafeMalloc = " + MarlinConst.LOG_UNSAFE_MALLOC); // quality settings + logInfo("sun.java2d.renderer.curve_len_err = " + + MarlinProperties.getCurveLengthError()); logInfo("sun.java2d.renderer.cubic_dec_d2 = " + MarlinProperties.getCubicDecD2()); logInfo("sun.java2d.renderer.cubic_inc_d1 = " + MarlinProperties.getCubicIncD1()); logInfo("sun.java2d.renderer.quad_dec_d2 = "
< prev index next >