//negativ1.java

import java.applet.*;
import java.awt.*;
import java.awt.image.*;


public class negativ1 extends Applet
{
  Image img,imgn;
  Graphics g;
  int dimlat,dimin;  //dimensiuni imagine img
  int lat,inalt;  //dimensiuni imgn
 
  public void init()
 {
    Color culoare=new Color(70,150,100);
     setBackground(culoare);
     String imaginea=getParameter("imagine");
    if (imaginea==null)
         imaginea="Andreea1.jpg" ;
    img=getImage(getCodeBase(), imaginea);
    dimlat=img.getWidth(this);
    dimin=img.getHeight(this);
    imgn=img;
 //   Image rimg;
    Panel p=new Panel();
    setLayout(new BorderLayout());
    p.add(new Button("Negativ"));
    add("North",p);
  //  g.drawImage(img,60,60,this);
  }
     
   
  public boolean action(Event evt, Object ob)
{
  Graphics g=getGraphics();
  inalt=imgn.getHeight(this);
  lat=imgn.getWidth(this);
  g.clearRect(60,100+dimin,60+lat,100+dimin+inalt);
  g.dispose();
    if (evt.target instanceof Button)
  {
    negativ rim3=new negativ(imgn);
    imgn=rim3.rimg;
    repaint();
   //selection=10;
   return true;
  }
  return false;
}
   
 

public void paint(Graphics g)
{
 g.drawImage(img,60,60,this);
 g.drawImage(imgn,100+dimlat,60,this);
         
}

public void update(Graphics g)
 {
    paint(g);
 }

}


//  negativ.java

import java.applet.*;
import java.awt.*;
import java.awt.image.*;

public class negativ extends Applet
{

//  MemoryImageSource mis;                 
  Image rimg;

  negativ (Image source) {
//	canFilterIndexColorModel=true;
	ColorModel cm=ColorModel.getRGBdefault();
	boolean success;
        int widtho,heighto,oldi;
	int[] Pixo,Pixn;
	int pixelval;
	
	PixelGrabber pg;
	widtho = source.getWidth(this);
	heighto = source.getHeight(this);


	Pixo = new int[widtho*heighto];     
	Pixn = new int[widtho*heighto];     

	pg = new PixelGrabber(source.getSource(), 0,0,widtho,heighto,Pixo,0,widtho);

	try
	{
		success = pg.grabPixels(0);             
	}                                                                      
	catch (Exception e)
	{
		System.out.println("Eroare!! " + e);
	}

	for (int y=0; y < heighto; y++)
	{
	   for (int x=0; x < widtho; x++)
	   {
		int r=cm.getRed(Pixo[y*widtho+x]);
		int g=cm.getGreen(Pixo[y*widtho+x]);
		int b=cm.getBlue(Pixo[y*widtho+x]);
		int alp=cm.getAlpha(Pixo[y*widtho+x]);
		r=Math.abs(r-255);
		g=Math.abs(g-255);
		b=Math.abs(b-255);
		Pixn[y*widtho+x]=(alp<<24) | (r<<16) | (g<<8) | (b<<0);
	   }
	}

	rimg = createImage(new MemoryImageSource(widtho,heighto,Pixn,0,widtho));

  }


  public void paint (Graphics g1)
  {	
//	g1.drawImage(rimg,250,250,this);
  }


}