KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > gui > background > ManagedImage


1 /** not used in jirc anymore, at least I don't think it is... */
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