blob: 44fa25e40408a25f41fc31ceeff81f87db1eecec (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
/* ImageDecoder.java
Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the non-peer AWT libraries of GNU Classpath.
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published
by the Free Software Foundation, either version 2 of the License, or
(at your option) any later verion.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307 USA. */
package gnu.java.awt.image;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import java.io.*;
import java.net.URL;
public abstract class ImageDecoder implements ImageProducer
{
Vector consumers = new Vector ();
String filename;
URL url;
public static ColorModel cm;
static
{
// FIXME: there was some broken code here that looked like
// it wanted to rely on this property. I don't have any idea
// what it was intended to do.
// String endian = System.getProperties ().getProperty ("gnu.cpu.endian");
}
public ImageDecoder (String filename)
{
this.filename = filename;
}
public ImageDecoder (URL url)
{
this.url = url;
}
public void addConsumer (ImageConsumer ic)
{
consumers.addElement (ic);
}
public boolean isConsumer (ImageConsumer ic)
{
return consumers.contains (ic);
}
public void removeConsumer (ImageConsumer ic)
{
consumers.removeElement (ic);
}
public void startProduction (ImageConsumer ic)
{
addConsumer (ic);
Vector list = (Vector) consumers.clone ();
try
{
FileInputStream is = (url == null) ? new FileInputStream (filename) :
(FileInputStream) url.openStream();
produce (list, is);
}
catch (Exception e)
{
for (int i = 0; i < list.size (); i++)
{
ImageConsumer ic2 = (ImageConsumer) list.elementAt (i);
ic2.imageComplete (ImageConsumer.IMAGEERROR);
}
}
}
public void requestTopDownLeftRightResend (ImageConsumer ic)
{
}
abstract void produce (Vector v, FileInputStream is) throws IOException;
}
|