java.lang.Object | +----com.sun.java.swing.SyntheticImage
A helper class to make computing synthetic images a little easier. All you need to do is define a subclass that overrides computeRow to compute a row of the image. It is passed the y coordinate of the row and an array into which to put the pixels in standard ARGB format .
Normal usage looks something like this:
Image i = new Image(new SyntheticImage(200, 100) { protected void computeRow(int y, int[] row) { for(int i = width; --i>=0; ) { int grey = i*255/(width-1); row[i] = (255<<24)|(grey<<16)|(grey<<8)|grey; } } }This creates a image 200 pixels wide and 100 pixels high that is a horizontal grey ramp, going from black on the left to white on the right.
If the image is to be a movie, override isStatic to return false, y cycling back to 0 is computeRow's signal that the next frame has started. It is acceptable (expected?) for computeRow(0,r) to pause until the appropriate time to start the next frame.
protected int widthheight
protected int heightpixMask
public static final int pixMask
protected SyntheticImage()SyntheticImage
protected SyntheticImage(int w, int h)
protected void computeRow(int y, int row[])addConsumer
public synchronized void addConsumer(ImageConsumer ic)isConsumer
public synchronized boolean isConsumer(ImageConsumer ic)removeConsumer
public synchronized void removeConsumer(ImageConsumer ic)startProduction
public synchronized void startProduction(ImageConsumer ic)isStatic
protected boolean isStatic()nextFrame
public void nextFrame(int param)requestTopDownLeftRightResend
public void requestTopDownLeftRightResend(ImageConsumer ic)