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