< prev index next >
modules/javafx.graphics/src/main/java/com/sun/prism/impl/shape/MarlinRasterizer.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2010, 2016, 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) 2010, 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
*** 81,98 ****
MarlinRenderer renderer = null;
try {
final Rectangle rclip = rdrCtx.clip;
rclip.setBounds(xformBounds);
! if (shape instanceof Path2D) {
! renderer = MarlinPrismUtils.setupRenderer(rdrCtx, (Path2D) shape, stroke, xform, rclip,
! antialiasedShape);
! }
! if (renderer == null) {
! renderer = MarlinPrismUtils.setupRenderer(rdrCtx, shape, stroke, xform, rclip,
! antialiasedShape);
! }
final int outpix_xmin = renderer.getOutpixMinX();
final int outpix_xmax = renderer.getOutpixMaxX();
final int outpix_ymin = renderer.getOutpixMinY();
final int outpix_ymax = renderer.getOutpixMaxY();
final int w = outpix_xmax - outpix_xmin;
--- 81,93 ----
MarlinRenderer renderer = null;
try {
final Rectangle rclip = rdrCtx.clip;
rclip.setBounds(xformBounds);
! renderer = MarlinPrismUtils.setupRenderer(rdrCtx, shape, stroke, xform, rclip,
! antialiasedShape);
!
final int outpix_xmin = renderer.getOutpixMinX();
final int outpix_xmax = renderer.getOutpixMaxX();
final int outpix_ymin = renderer.getOutpixMinY();
final int outpix_ymax = renderer.getOutpixMaxY();
final int w = outpix_xmax - outpix_xmin;
*** 109,123 ****
--- 104,142 ----
System.out.println("new alphas with length = " + csize);
}
}
consumer.setBoundsNoClone(outpix_xmin, outpix_ymin, w, h);
renderer.produceAlphas(consumer);
+
return consumer.getMaskData();
} finally {
if (renderer != null) {
renderer.dispose();
}
// recycle the RendererContext instance
MarlinRenderingEngine.returnRendererContext(rdrCtx);
}
}
+
+ static Shape createCenteredStrokedShape(Shape s, BasicStroke stroke)
+ {
+ final float lw = (stroke.getType() == BasicStroke.TYPE_CENTERED) ?
+ stroke.getLineWidth() : stroke.getLineWidth() * 2.0f;
+
+ final RendererContext rdrCtx = MarlinRenderingEngine.getRendererContext();
+ try {
+ // initialize a large copyable Path2D to avoid a lot of array growing:
+ final Path2D p2d = rdrCtx.getPath2D();
+
+ MarlinPrismUtils.strokeTo(rdrCtx, s, stroke, lw,
+ rdrCtx.transformerPC2D.wrapPath2d(p2d)
+ );
+
+ // Use Path2D copy constructor (trim)
+ return new Path2D(p2d);
+
+ } finally {
+ // recycle the RendererContext instance
+ MarlinRenderingEngine.returnRendererContext(rdrCtx);
+ }
+ }
}
< prev index next >