41 |
import java.awt.Image; |
import java.awt.Image; |
42 |
import java.util.Enumeration; |
import java.util.Enumeration; |
43 |
import java.util.Hashtable; |
import java.util.Hashtable; |
44 |
|
import java.util.Vector; |
45 |
|
|
46 |
public class MemoryImageSource implements ImageProducer |
public class MemoryImageSource implements ImageProducer |
47 |
{ |
{ |
50 |
private int pixeli[], width, height, offset, scansize; |
private int pixeli[], width, height, offset, scansize; |
51 |
private byte pixelb[]; |
private byte pixelb[]; |
52 |
private ColorModel cm; |
private ColorModel cm; |
53 |
private Hashtable props, consumers = new Hashtable(); |
private Hashtable props = new Hashtable(); |
54 |
|
private Vector consumers = new Vector(); |
55 |
|
|
56 |
/** |
/** |
57 |
Constructs an ImageProducer from memory |
Constructs an ImageProducer from memory |
128 |
* <code>ImageProducer</code>. |
* <code>ImageProducer</code>. |
129 |
*/ |
*/ |
130 |
public synchronized void addConsumer(ImageConsumer ic) { |
public synchronized void addConsumer(ImageConsumer ic) { |
131 |
if (consumers.containsKey(ic)) |
if (consumers.contains(ic)) |
132 |
return; |
return; |
133 |
|
|
134 |
consumers.put(ic, ic); |
consumers.addElement(ic); |
135 |
} |
} |
136 |
|
|
137 |
/** |
/** |
139 |
* already registered with this <code>ImageProducer</code>. |
* already registered with this <code>ImageProducer</code>. |
140 |
*/ |
*/ |
141 |
public synchronized boolean isConsumer(ImageConsumer ic) { |
public synchronized boolean isConsumer(ImageConsumer ic) { |
142 |
if (consumers.containsKey(ic)) |
if (consumers.contains(ic)) |
143 |
return true; |
return true; |
144 |
return false; |
return false; |
145 |
} |
} |
149 |
* registered consumers for this <code>ImageProducer</code>. |
* registered consumers for this <code>ImageProducer</code>. |
150 |
*/ |
*/ |
151 |
public synchronized void removeConsumer(ImageConsumer ic) { |
public synchronized void removeConsumer(ImageConsumer ic) { |
152 |
consumers.remove(ic); |
consumers.removeElement(ic); |
153 |
} |
} |
154 |
|
|
155 |
/** |
/** |
159 |
* registered consumers. |
* registered consumers. |
160 |
*/ |
*/ |
161 |
public void startProduction(ImageConsumer ic) { |
public void startProduction(ImageConsumer ic) { |
162 |
if (!(consumers.containsKey(ic))) { |
if (!(consumers.contains(ic))) { |
163 |
consumers.put(ic, ic); |
consumers.addElement(ic); |
164 |
} |
} |
165 |
Enumeration e = consumers.elements(); |
|
166 |
for( ; e.hasMoreElements(); ) { |
Vector list = (Vector) consumers.clone(); |
167 |
ic = (ImageConsumer)e.nextElement(); |
for(int i = 0; i < list.size(); i++) { |
168 |
|
ic = (ImageConsumer) list.elementAt(i); |
169 |
sendPicture( ic ); |
sendPicture( ic ); |
170 |
ic.imageComplete( ImageConsumer.SINGLEFRAME ); |
ic.imageComplete( ImageConsumer.STATICIMAGEDONE ); |
171 |
} |
} |
|
|
|
172 |
} |
} |
173 |
|
|
174 |
/** |
/** |
212 |
{ |
{ |
213 |
if( animated == true ) { |
if( animated == true ) { |
214 |
ImageConsumer ic; |
ImageConsumer ic; |
215 |
Enumeration e = consumers.elements(); |
Vector list = (Vector) consumers.clone(); |
216 |
for( ; e.hasMoreElements(); ) { |
for(int i = 0; i < list.size(); i++) { |
217 |
ic = (ImageConsumer)e.nextElement(); |
ic = (ImageConsumer) list.elementAt(i); |
218 |
sendPicture( ic ); |
sendPicture( ic ); |
219 |
ic.imageComplete( ImageConsumer.SINGLEFRAME ); |
ic.imageComplete( ImageConsumer.SINGLEFRAME ); |
220 |
} |
} |
229 |
ic.setProperties( props ); |
ic.setProperties( props ); |
230 |
} |
} |
231 |
ic.setDimensions(width, height); |
ic.setDimensions(width, height); |
232 |
|
ic.setColorModel(cm); |
233 |
if( pixeli != null ) { |
if( pixeli != null ) { |
234 |
ic.setPixels( 0, 0, width, height, cm, pixeli, offset, scansize ); |
ic.setPixels( 0, 0, width, height, cm, pixeli, offset, scansize ); |
235 |
} else { |
} else { |
252 |
newPixels(); |
newPixels(); |
253 |
} else { |
} else { |
254 |
ImageConsumer ic; |
ImageConsumer ic; |
255 |
Enumeration e = consumers.elements(); |
Vector list = (Vector) consumers.clone(); |
256 |
for( ; e.hasMoreElements(); ) { |
for(int i = 0; i < list.size(); i++) { |
257 |
ic = (ImageConsumer)e.nextElement(); |
ic = (ImageConsumer) list.elementAt(i); |
258 |
ic.setHints( ImageConsumer.TOPDOWNLEFTRIGHT ); |
ic.setHints( ImageConsumer.TOPDOWNLEFTRIGHT ); |
259 |
if( props != null ) { |
if( props != null ) { |
260 |
ic.setProperties( props ); |
ic.setProperties( props ); |
297 |
newPixels(); |
newPixels(); |
298 |
} else { |
} else { |
299 |
ImageConsumer ic; |
ImageConsumer ic; |
300 |
Enumeration e = consumers.elements(); |
Vector list = (Vector) consumers.clone(); |
301 |
for( ; e.hasMoreElements(); ) { |
for(int i = 0; i < list.size(); i++) { |
302 |
ic = (ImageConsumer)e.nextElement(); |
ic = (ImageConsumer) list.elementAt(i); |
303 |
ic.setHints( ImageConsumer.TOPDOWNLEFTRIGHT ); |
ic.setHints( ImageConsumer.TOPDOWNLEFTRIGHT ); |
304 |
if( props != null ) { |
if( props != null ) { |
305 |
ic.setProperties( props ); |
ic.setProperties( props ); |