// (c) 1998 Ekkehard Kraemer (ekraemer@pluto.camelot.de) import java.awt.*; import java.awt.image.*; import java.util.*; import java.io.*; import java.net.*; /** * Sorry, not documented yet. *
* Source
*/
class Images
{
static boolean init(Component comp,URL base,Label label)
{
try
{
System.err.println("loadAll");
loadAll(base,comp);
System.err.println("splitUp");
splitUp(base,comp);
System.err.println("makeTransparent");
makeTransparent(comp,label);
System.err.println("setupAliases");
setupAliases();
}
catch (Exception e)
{
e.printStackTrace(System.err);
return false;
}
return true;
}
static void loadAll(URL base,Component comp) throws Exception
{
URL u=new URL(base,"images/all.jpg");
System.err.println(u);
all=comp.getToolkit().getImage(u);
MediaTracker tracker=new MediaTracker(comp);;
tracker.addImage(all,1);
tracker.waitForAll();
if (tracker.isErrorAny())
throw new Exception("loading all: tracker.isErrorAny()");
}
static void splitUp(URL base,Component comp) throws Exception
{
InputStream is=new URL(base,"images/all.desc").openStream();
DataInputStream dis=new DataInputStream(is);
Vector v=new Vector();
try
{
while (true)
{
String s=dis.readLine();
if (s==null) break;
// System.err.println(s);
StringTokenizer st=new StringTokenizer(s);
String tmp=st.nextToken();
Point p=new Point(Integer.parseInt(st.nextToken()),
Integer.parseInt(st.nextToken()));
v.addElement(p);
}
}
catch (EOFException e) {}
imgs=new Image[v.size()];
int y=0,t=0;
for (Enumeration e=v.elements(); e.hasMoreElements(); )
{
Point p=(Point)(e.nextElement());
ImageFilter f=new CropImageFilter(0,y,p.x,p.y);
ImageProducer s=all.getSource();
ImageProducer ip=new FilteredImageSource(s,f);
Image i=comp.createImage(ip);
// MediaTracker mt=new MediaTracker(comp);
// mt.addImage(i,1);
// mt.waitForAll();
// if (mt.isErrorAny())
// throw new Exception("splitUp: tracker.isErrorAny(), "+p);
y+=p.y;
imgs[t++]=i;
}
}
static void makeTransparent(Component comp,Label label) throws Exception
{
for (int t=0; t