codesimian
Class ImagePixels

java.lang.Object
  extended by codesimian.CS
      extended by codesimian.DefaultCS
          extended by codesimian.PrimitiveArray
              extended by codesimian.PrimitiveArray.IntArray
                  extended by codesimian.ImagePixels
All Implemented Interfaces:
CodeSimian, java.awt.image.ImageProducer, java.io.Serializable

public class ImagePixels
extends PrimitiveArray.IntArray
implements java.awt.image.ImageProducer

8/06 THIS CLASS DOES NOT WORK.

A video or quickly changing image stored as an int[] array. Each int is 1 pixel.

Example: if L(java.awt.Image.class) returns an Image 50 pixels wide, then PI(257) and P(257).F() and many other functions all return the pixel at position 5x7 because 5*50+7==257.

Its not done yet??? but the int[] array should be copied and replaced when the java.awt.Image changes size.

L(int,Class,int) works normally: L(253,int[].class,47) returns all pixels in row 5 except the first 3. Since params are stored as ints, its a fast array-copy to get any subset of pixels through L(int,Class,int).

See Also:
Serialized Form

Nested Class Summary
static class ImagePixels.ImagePanel
           
static class ImagePixels.ImageWithProducer
          an ImageProducer can efficiently control the pixels of this Image
 
Nested classes/interfaces inherited from class codesimian.PrimitiveArray
PrimitiveArray.ByteArray, PrimitiveArray.IntArray
 
Field Summary
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, FUEL, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER
 
Constructor Summary
ImagePixels()
           
 
Method Summary
 void addConsumer(java.awt.image.ImageConsumer ic)
           
 boolean isConsumer(java.awt.image.ImageConsumer ic)
           
 java.lang.String keyword()
          For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
 java.lang.Object L(java.lang.Class type)
          Optionally execute this CS, and definitely try to CAST it to the specified Java type.
 int maxP()
          Maximum quantity of Params
 int minP()
          For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.
 void removeConsumer(java.awt.image.ImageConsumer ic)
           
 void requestTopDownLeftRightResend(java.awt.image.ImageConsumer ic)
           
static int[] resize(int[] wrongSize, int newSize)
          cuts off end of wrongSize[] or adds 0s (black pixels) at end
 boolean setL(java.lang.Object value)
          setL setD setF setJ setI setS setC setB setZ are functions that SET THE VALUE OF THIS CS to some object, primitive, or array.
 void startProduction(java.awt.image.ImageConsumer ic)
           
 
Methods inherited from class codesimian.PrimitiveArray.IntArray
cost, countP, L, newInstance, P, PD, PI, setD, setI, setL, setL, setP
 
Methods inherited from class codesimian.PrimitiveArray
D, deleteP, DForProxy, insertP, isIllusion, javaCodeForSubclass
 
Methods inherited from class codesimian.DefaultCS
B, C, decrementMyFuel, description, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertS, insertZ, J, javaCode, LForProxy, LForProxy, myFuel, name, objectToCS, objectToCSArray, objectToCSArray, prevD, prevL, PType, S, setB, setC, setCountP, setD, setExec, setF, setFuel, setJ, setL1, setMyFuel, setName, setObject, setPrevExec, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addP, addP, addP, addP, addP, BForProxy, CForProxy, clone, deleteP, FForProxy, IForProxy, javaCode, JForProxy, L, L, L, maxD, minD, overwrites, parent, parsePriority, PB, PC, PF, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, setB, setC, setCost, setDescription, setF, setHeap, setI, setJ, setL, setL, setParent, setParsePriority, setProxyOf, setPType, setS, setTester, setZ, SForProxy, tester, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ImagePixels

public ImagePixels()
Method Detail

keyword

public java.lang.String keyword()
Description copied from class: DefaultCS
For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
Default: Returns class name, minus package name (and its dots), and change the first letter to lowercase.

For example, CS.MaxParams does not override keyword(), which returns "maxP".

Overrides:
keyword in class PrimitiveArray.IntArray
See Also:
CS.parent(), CS.newInstance(), CS.name()

minP

public int minP()
Description copied from class: DefaultCS
For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.

Overrides:
minP in class PrimitiveArray

maxP

public int maxP()
Description copied from class: CS
Maximum quantity of Params

Overrides:
maxP in class PrimitiveArray

L

public java.lang.Object L(java.lang.Class type)
Description copied from class: CS
Optionally execute this CS, and definitely try to CAST it to the specified Java type. If fail, throw a ClassCastException.

Should I change this from throwing a CSCastException to return null instead?

It is preferred not to return CSs from this function. If you have a CS to return, the standard is to put it in param0... setP(0,returnValue), where the function caller should get the output from... P(0).

The functions: V L Z B C S I J F and D, usually EXECUTE this CS and CAST its value to the specified type.
L does not have to execute this CS, but all the others do. The other difference is L can throw a CSCastException (extends ClassCastException), which is a RuntimeException so you do not have to use try/catch if you trust it.

No pattern of L()'s behavior is guaranteed.
The L's of some some CSs are more predictable than others, often written about in javadoc.
If it casts correctly, it could fail later. If it fails many times, and you try again, it could still succeed.

Example: new int[7][6][5].getClass().getName() returns "[[[I". These 9 function names (not 10 because excludes Void) are also used by a very important part of Java (but not as function names): java.lang.Class.name() .

EXAMPLES:
JButton b = (JButton) new ButtonCS().L(Component.class); //JButton inherits from Component
int fiveFiftyFive = new N(555).I();
double charValues[] = (double[]) new S("arraySize11").L(double[].class);

Overrides:
L in class PrimitiveArray.IntArray
See Also:
CS.Z(), CS.B(), CS.C(), CS.S(), CS.I(), CS.J(), CS.F(), CS.D()

setL

public boolean setL(java.lang.Object value)
Description copied from class: CS
setL setD setF setJ setI setS setC setB setZ are functions that SET THE VALUE OF THIS CS to some object, primitive, or array.

Overrides:
setL in class PrimitiveArray.IntArray

resize

public static int[] resize(int[] wrongSize,
                           int newSize)
cuts off end of wrongSize[] or adds 0s (black pixels) at end


addConsumer

public void addConsumer(java.awt.image.ImageConsumer ic)
Specified by:
addConsumer in interface java.awt.image.ImageProducer

isConsumer

public boolean isConsumer(java.awt.image.ImageConsumer ic)
Specified by:
isConsumer in interface java.awt.image.ImageProducer

removeConsumer

public void removeConsumer(java.awt.image.ImageConsumer ic)
Specified by:
removeConsumer in interface java.awt.image.ImageProducer

requestTopDownLeftRightResend

public void requestTopDownLeftRightResend(java.awt.image.ImageConsumer ic)
Specified by:
requestTopDownLeftRightResend in interface java.awt.image.ImageProducer

startProduction

public void startProduction(java.awt.image.ImageConsumer ic)
Specified by:
startProduction in interface java.awt.image.ImageProducer