import java.awt.*;
import java.awt.image.*;

//verknüft Farbkomponenten der auf der Zeichenfläche liegenden Pixel mit den
//Farbwerten der zu setzenden Pixel mit dem bitweisen UND-Operator
public class MyCompositeContext implements CompositeContext
{
	//kombiniert zwei Raster. src soll zu dstIn hinzugefügt werden, das
	//Ergebnis soll in dstOut stehen.
	public void compose(Raster src, Raster dstIn, WritableRaster dstOut) 
	{
		
		System.out.println("Rechteck neu zeichnen: h="+src.getHeight()+" w="
					+src.getWidth());
		
		int src_packed;int dst_packed;int res_packed; //Die in einem 
				//int stehenden Farbwerte für das jew. Pixel
		
		//alle Pixel des Datenpuffers durchlaufen, kombinieren
		for (int i=0; i<dstOut.getDataBuffer().getSize();++i)
		{
			//auslesen der Farbwerte für akt. Pixel
			src_packed=src.getDataBuffer().getElem( i );
			dst_packed=dstIn.getDataBuffer().getElem( i );

			//die beiden int-Werte mit dem bitweisen UND-Operator ver-
			//knüpfen und in den Datenpuffers des Zielrasters schreiben
			dstOut.getDataBuffer().setElem(	i, src_packed & dst_packed );
		}
	
		System.out.println("Fertig\n*********");
	}

	public void dispose()
	{}

} 
