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 = createImage(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. |