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);

}
