Working toward happier image loading/caching. Changed to Unix text
format from DOS. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@47 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,19 +1,73 @@
|
|||||||
//
|
//
|
||||||
// $Id: ImageManager.java,v 1.1 2001/07/12 22:38:03 shaper Exp $
|
// $Id: ImageManager.java,v 1.2 2001/07/14 00:02:10 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.cocktail.miso.media;
|
package com.threerings.cocktail.miso.media;
|
||||||
|
|
||||||
import java.awt.*;
|
import com.threerings.cocktail.miso.Log;
|
||||||
import java.awt.image.ImageObserver;
|
|
||||||
|
import java.awt.*;
|
||||||
public class ImageManager
|
import java.awt.image.*;
|
||||||
{
|
import java.util.Hashtable;
|
||||||
public static Image getImage (String fname, ImageObserver obs)
|
|
||||||
{
|
public class ImageManager
|
||||||
Image img = tk.getImage(fname);
|
{
|
||||||
tk.prepareImage(img, -1, -1, obs);
|
public static Toolkit tk = Toolkit.getDefaultToolkit();
|
||||||
return img;
|
|
||||||
}
|
public static void init (Component root)
|
||||||
|
{
|
||||||
public static Toolkit tk = Toolkit.getDefaultToolkit();
|
_root = root;
|
||||||
}
|
tk = root.getToolkit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Image getImage (String fname)
|
||||||
|
{
|
||||||
|
if (_root == null) {
|
||||||
|
Log.warning("Attempt to get image without valid root component.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image img = (Image) _imgs.get(fname);
|
||||||
|
if (img != null) {
|
||||||
|
Log.info("Retrieved image from cache [fname=" + fname + "].");
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.info("Loading image into cache [fname=" + fname + "].");
|
||||||
|
|
||||||
|
img = tk.createImage(fname);
|
||||||
|
MediaTracker tracker = new MediaTracker(_root);
|
||||||
|
tracker.addImage(img, 0);
|
||||||
|
|
||||||
|
try {
|
||||||
|
tracker.waitForID(0);
|
||||||
|
if (tracker.isErrorAny()) {
|
||||||
|
Log.warning("Error loading image [fname=" + fname + "].");
|
||||||
|
return null;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
_imgs.put(fname, img);
|
||||||
|
Log.info("Loaded image into cache successfully.");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BufferedImage getImageCropped (Image fullImg, int x, int y,
|
||||||
|
int width, int height)
|
||||||
|
{
|
||||||
|
BufferedImage img =
|
||||||
|
new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
|
||||||
|
|
||||||
|
Graphics2D g2 = img.createGraphics();
|
||||||
|
g2.drawImage(fullImg, -x, -y, null);
|
||||||
|
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static Component _root;
|
||||||
|
protected static Hashtable _imgs = new Hashtable();
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user