package ij.process;
import java.awt.Color;

/** ImageJ bit blitting classes must implement this interface. */
public interface Blitter {

    /** dst=src */
    public static final int COPY = 0;
    
    /** dst=255-src (8-bits and RGB) */
    public static final int COPY_INVERTED = 1;
    
    /** Copies with white pixels transparent. */
    public static final int COPY_TRANSPARENT = 2;
    
    /** dst=dst+src */
    public static final int ADD = 3;
    
    /** dst=dst-src */
    public static final int SUBTRACT = 4;
        
    /** dst=src*src */
    public static final int MULTIPLY = 5;
    
    /** dst=dst/src */
    public static final int DIVIDE = 6;
    
    /** dst=(dst+src)/2 */
    public static final int AVERAGE = 7;
    
    /** dst=abs(dst-src) */
    public static final int DIFFERENCE = 8;
    
    /** dst=dst AND src */
    public static final int AND = 9;
    
    /** dst=dst OR src */
    public static final int OR = 10;
    
    /** dst=dst XOR src */
    public static final int XOR = 11;
    
    /** dst=min(dst,src) */
    public static final int MIN = 12;
    
    /** dst=max(dst,src) */
    public static final int MAX = 13;
    
    /** Copies with zero pixels transparent. */
    public static final int COPY_ZERO_TRANSPARENT = 14;


    /** Sets the transparent color used in the COPY_TRANSPARENT
        mode (default is Color.white). */
    public void setTransparentColor(Color c);

    /** Copies the image in 'src' to (x,y) using the specified mode. */
    public void copyBits(ImageProcessor src, int x, int y, int mode);

}