modules/graphics/src/main/java/com/sun/javafx/sg/prism/NGCanvas.java

Print this page




 229                         ResourceFactory factory = (resg == null)
 230                             ? GraphicsPipeline.getDefaultResourceFactory()
 231                             : resg.getResourceFactory();
 232                         tex = factory.createRTTexture(tw, th, WrapMode.CLAMP_TO_ZERO);
 233                         this.g = tex.createGraphics();
 234                         this.input = new EffectInput(tex);
 235                         if (savedPixelData != null) {
 236                             g.setCompositeMode(CompositeMode.SRC);
 237                             savedPixelData.restore(g, tw, th);
 238                             g.setCompositeMode(CompositeMode.SRC_OVER);
 239                         } else if (init_type == InitType.FILL_WHITE) {
 240                             g.setPaint(Color.WHITE);
 241                             g.fillRect(0, 0, tw, th);
 242                         }
 243                         return true;
 244                     }
 245                 }
 246             }
 247             if (init_type == InitType.CLEAR) {
 248                 g.setCompositeMode(CompositeMode.CLEAR);

 249                 g.fillRect(0, 0, tw, th);
 250                 g.setCompositeMode(CompositeMode.SRC_OVER);
 251             }
 252             return false;
 253         }
 254 
 255         private void save(int tw, int th) {
 256             if (tex.isVolatile()) {
 257                 if (savedPixelData == null) {
 258                     savedPixelData = new PixelData(tw, th);
 259                 }
 260                 savedPixelData.save(tex);
 261             }
 262         }
 263     }
 264 
 265     // Saved pixel data used to preserve the image that backs the canvas if the
 266     // RTT is volatile.
 267     private static class PixelData {
 268         private IntBuffer pixels = null;




 229                         ResourceFactory factory = (resg == null)
 230                             ? GraphicsPipeline.getDefaultResourceFactory()
 231                             : resg.getResourceFactory();
 232                         tex = factory.createRTTexture(tw, th, WrapMode.CLAMP_TO_ZERO);
 233                         this.g = tex.createGraphics();
 234                         this.input = new EffectInput(tex);
 235                         if (savedPixelData != null) {
 236                             g.setCompositeMode(CompositeMode.SRC);
 237                             savedPixelData.restore(g, tw, th);
 238                             g.setCompositeMode(CompositeMode.SRC_OVER);
 239                         } else if (init_type == InitType.FILL_WHITE) {
 240                             g.setPaint(Color.WHITE);
 241                             g.fillRect(0, 0, tw, th);
 242                         }
 243                         return true;
 244                     }
 245                 }
 246             }
 247             if (init_type == InitType.CLEAR) {
 248                 g.setCompositeMode(CompositeMode.CLEAR);
 249                 g.setTransform(BaseTransform.IDENTITY_TRANSFORM);
 250                 g.fillRect(0, 0, tw, th);
 251                 g.setCompositeMode(CompositeMode.SRC_OVER);
 252             }
 253             return false;
 254         }
 255 
 256         private void save(int tw, int th) {
 257             if (tex.isVolatile()) {
 258                 if (savedPixelData == null) {
 259                     savedPixelData = new PixelData(tw, th);
 260                 }
 261                 savedPixelData.save(tex);
 262             }
 263         }
 264     }
 265 
 266     // Saved pixel data used to preserve the image that backs the canvas if the
 267     // RTT is volatile.
 268     private static class PixelData {
 269         private IntBuffer pixels = null;