modules/graphics/src/main/java/com/sun/prism/sw/SWContext.java
Print this page
*** 47,65 ****
private final ShapeRenderer shapeRenderer;
private SoftReference<SWRTTexture> readBackBufferRef;
private SoftReference<SWArgbPreTexture> imagePaintTextureRef;
interface ShapeRenderer {
! void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip);
void dispose();
}
class NativeShapeRenderer implements ShapeRenderer {
private SoftReference<SWMaskTexture> maskTextureRef;
! public void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip) {
! final MaskData mask = ShapeUtil.rasterizeShape(shape, stroke, clip.toRectBounds(), tr, true);
final SWMaskTexture tex = this.validateMaskTexture(mask.getWidth(), mask.getHeight());
mask.uploadToTexture(tex, 0, 0, false);
pr.fillAlphaMask(tex.getDataNoClone(), mask.getOriginX(), mask.getOriginY(),
mask.getWidth(), mask.getHeight(), 0, tex.getPhysicalWidth());
}
--- 47,65 ----
private final ShapeRenderer shapeRenderer;
private SoftReference<SWRTTexture> readBackBufferRef;
private SoftReference<SWArgbPreTexture> imagePaintTextureRef;
interface ShapeRenderer {
! void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip, boolean antialias);
void dispose();
}
class NativeShapeRenderer implements ShapeRenderer {
private SoftReference<SWMaskTexture> maskTextureRef;
! public void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip, boolean antialiasedShape) {
! final MaskData mask = ShapeUtil.rasterizeShape(shape, stroke, clip.toRectBounds(), tr, true, antialiasedShape);
final SWMaskTexture tex = this.validateMaskTexture(mask.getWidth(), mask.getHeight());
mask.uploadToTexture(tex, 0, 0, false);
pr.fillAlphaMask(tex.getDataNoClone(), mask.getOriginX(), mask.getOriginY(),
mask.getWidth(), mask.getHeight(), 0, tex.getPhysicalWidth());
}
*** 100,121 ****
}
class JavaShapeRenderer implements ShapeRenderer {
private final DirectRTPiscesAlphaConsumer alphaConsumer = new DirectRTPiscesAlphaConsumer();
! public void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip) {
if (stroke != null && stroke.getType() != BasicStroke.TYPE_CENTERED) {
// RT-27427
// TODO: Optimize the combinatorial strokes for simple
// shapes and/or teach the rasterizer to be able to
// do a "differential fill" between two shapes.
// Note that most simple shapes will use a more optimized path
// than this method for the INNER/OUTER strokes anyway.
shape = stroke.createStrokedShape(shape);
stroke = null;
}
! final Renderer r = OpenPiscesPrismUtils.setupRenderer(shape, stroke, tr, clip);
alphaConsumer.initConsumer(r, pr);
r.produceAlphas(alphaConsumer);
}
public void dispose() { }
--- 100,121 ----
}
class JavaShapeRenderer implements ShapeRenderer {
private final DirectRTPiscesAlphaConsumer alphaConsumer = new DirectRTPiscesAlphaConsumer();
! public void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip, boolean antialiasedShape) {
if (stroke != null && stroke.getType() != BasicStroke.TYPE_CENTERED) {
// RT-27427
// TODO: Optimize the combinatorial strokes for simple
// shapes and/or teach the rasterizer to be able to
// do a "differential fill" between two shapes.
// Note that most simple shapes will use a more optimized path
// than this method for the INNER/OUTER strokes anyway.
shape = stroke.createStrokedShape(shape);
stroke = null;
}
! final Renderer r = OpenPiscesPrismUtils.setupRenderer(shape, stroke, tr, clip, antialiasedShape);
alphaConsumer.initConsumer(r, pr);
r.produceAlphas(alphaConsumer);
}
public void dispose() { }
*** 124,135 ****
SWContext(ResourceFactory factory) {
this.factory = factory;
this.shapeRenderer = (PrismSettings.doNativePisces) ? new NativeShapeRenderer() : new JavaShapeRenderer();
}
! void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip) {
! this.shapeRenderer.renderShape(pr, shape, stroke, tr, clip);
}
private SWRTTexture initRBBuffer(int width, int height) {
final SWRTTexture tex = (SWRTTexture)factory.createRTTexture(width, height, Texture.WrapMode.CLAMP_NOT_NEEDED);
readBackBufferRef = new SoftReference<SWRTTexture>(tex);
--- 124,135 ----
SWContext(ResourceFactory factory) {
this.factory = factory;
this.shapeRenderer = (PrismSettings.doNativePisces) ? new NativeShapeRenderer() : new JavaShapeRenderer();
}
! void renderShape(PiscesRenderer pr, Shape shape, BasicStroke stroke, BaseTransform tr, Rectangle clip, boolean antialiasedShape) {
! this.shapeRenderer.renderShape(pr, shape, stroke, tr, clip, antialiasedShape);
}
private SWRTTexture initRBBuffer(int width, int height) {
final SWRTTexture tex = (SWRTTexture)factory.createRTTexture(width, height, Texture.WrapMode.CLAMP_NOT_NEEDED);
readBackBufferRef = new SoftReference<SWRTTexture>(tex);