< prev index next >
src/java.desktop/share/classes/sun/java2d/marlin/DRendererContext.java
Print this page
*** 73,92 ****
final DDasher dasher;
final MarlinTileGenerator ptg;
final MarlinCache cache;
// flag indicating the shape is stroked (1) or filled (0)
int stroking = 0;
// Array caches:
/* clean int[] cache (zero-filled) = 5 refs */
private final IntArrayCache cleanIntCache = new IntArrayCache(true, 5);
! /* dirty int[] cache = 4 refs */
! private final IntArrayCache dirtyIntCache = new IntArrayCache(false, 4);
! /* dirty double[] cache = 3 refs */
! private final DoubleArrayCache dirtyDoubleCache = new DoubleArrayCache(false, 3);
! /* dirty byte[] cache = 1 ref */
! private final ByteArrayCache dirtyByteCache = new ByteArrayCache(false, 1);
// RendererContext statistics
final RendererStats stats;
final PathConsumer2DAdapter p2dAdapter = new PathConsumer2DAdapter();
--- 73,98 ----
final DDasher dasher;
final MarlinTileGenerator ptg;
final MarlinCache cache;
// flag indicating the shape is stroked (1) or filled (0)
int stroking = 0;
+ // flag indicating to clip the shape
+ boolean doClip = false;
+ // flag indicating if the path is closed or not (in advance) to handle properly caps
+ boolean closedPath = false;
+ // clip rectangle (ymin, ymax, xmin, xmax):
+ final double[] clipRect = new double[4];
// Array caches:
/* clean int[] cache (zero-filled) = 5 refs */
private final IntArrayCache cleanIntCache = new IntArrayCache(true, 5);
! /* dirty int[] cache = 5 refs */
! private final IntArrayCache dirtyIntCache = new IntArrayCache(false, 5);
! /* dirty double[] cache = 4 refs (2 polystack) */
! private final DoubleArrayCache dirtyDoubleCache = new DoubleArrayCache(false, 4);
! /* dirty byte[] cache = 2 ref (2 polystack) */
! private final ByteArrayCache dirtyByteCache = new ByteArrayCache(false, 2);
// RendererContext statistics
final RendererStats stats;
final PathConsumer2DAdapter p2dAdapter = new PathConsumer2DAdapter();
*** 117,127 ****
// NormalizingPathIterator instances:
nPCPathIterator = new NormalizingPathIterator.NearestPixelCenter(double6);
nPQPathIterator = new NormalizingPathIterator.NearestPixelQuarter(double6);
// MarlinRenderingEngine.TransformingPathConsumer2D
! transformerPC2D = new DTransformingPathConsumer2D();
// Renderer:
cache = new MarlinCache(this);
renderer = new DRenderer(this); // needs MarlinCache from rdrCtx.cache
ptg = new MarlinTileGenerator(stats, renderer, cache);
--- 123,133 ----
// NormalizingPathIterator instances:
nPCPathIterator = new NormalizingPathIterator.NearestPixelCenter(double6);
nPQPathIterator = new NormalizingPathIterator.NearestPixelQuarter(double6);
// MarlinRenderingEngine.TransformingPathConsumer2D
! transformerPC2D = new DTransformingPathConsumer2D(this);
// Renderer:
cache = new MarlinCache(this);
renderer = new DRenderer(this); // needs MarlinCache from rdrCtx.cache
ptg = new MarlinTileGenerator(stats, renderer, cache);
*** 139,149 ****
if (stats.totalOffHeap > stats.totalOffHeapMax) {
stats.totalOffHeapMax = stats.totalOffHeap;
}
stats.totalOffHeap = 0L;
}
! stroking = 0;
// if context is maked as DIRTY:
if (dirty) {
// may happen if an exception if thrown in the pipeline processing:
// force cleanup of all possible pipelined blocks (except Renderer):
--- 145,158 ----
if (stats.totalOffHeap > stats.totalOffHeapMax) {
stats.totalOffHeapMax = stats.totalOffHeap;
}
stats.totalOffHeap = 0L;
}
! stroking = 0;
! doClip = false;
! closedPath = false;
!
// if context is maked as DIRTY:
if (dirty) {
// may happen if an exception if thrown in the pipeline processing:
// force cleanup of all possible pipelined blocks (except Renderer):
*** 165,175 ****
Path2D.Double p2d
= (refPath2D != null) ? refPath2D.get() : null;
// create a new Path2D ?
if (p2d == null) {
! p2d = new Path2D.Double(Path2D.WIND_NON_ZERO, INITIAL_EDGES_COUNT); // 32K
// update weak reference:
refPath2D = new WeakReference<Path2D.Double>(p2d);
}
// reset the path anyway:
--- 174,184 ----
Path2D.Double p2d
= (refPath2D != null) ? refPath2D.get() : null;
// create a new Path2D ?
if (p2d == null) {
! p2d = new Path2D.Double(WIND_NON_ZERO, INITIAL_EDGES_COUNT); // 32K
// update weak reference:
refPath2D = new WeakReference<Path2D.Double>(p2d);
}
// reset the path anyway:
< prev index next >