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);