1 2 package rero.gui.background; 3 4 import java.awt.*; 5 import java.awt.image.*; 6 7 public class ManagedImage 8 { 9 protected VolatileImage hwImage; 10 protected BufferedImage swImage; 11 protected Component source; 12 13 private void createImage() 14 { 15 hwImage = source.getGraphicsConfiguration().createCompatibleVolatileImage(getWidth(), getHeight()); 16 } 17 18 private void renderImage() 19 { 20 Graphics2D g = hwImage.createGraphics(); 21 g.drawImage(swImage, 0, 0, null); 22 g.dispose(); 23 } 24 25 public ManagedImage(BufferedImage _image, Component c) 26 { 27 source = c; 28 swImage = _image; 29 30 createImage(); 31 renderImage(); 32 } 33 34 public int getWidth() 35 { 36 return swImage.getWidth(); 37 } 38 39 public int getHeight() 40 { 41 return swImage.getHeight(); 42 } 43 44 public Image getDrawableImage() 45 { 46 int state = hwImage.validate(source.getGraphicsConfiguration()); 47 if (state == VolatileImage.IMAGE_RESTORED) 48 { 49 renderImage(); 50 } 51 else if (state == VolatileImage.IMAGE_INCOMPATIBLE) 52 { 53 createImage(); 54 renderImage(); 55 } 56 57 if (hwImage.contentsLost()) 58 { 59 System.out.println("Resorting to software image... worthless peice of crap"); 60 return swImage; 61 } 62 63 System.out.println("hwImage: " + hwImage.getCapabilities()); 64 65 return hwImage; 66 } 67 } 68 | Popular Tags |