//   stralucire1.java

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



public class stralucire1 extends Applet
{
  Image img,imgn;
  Graphics g;
  int dimlat,dimin;  //dimensiuni imagine img
  int lat,inalt;  //dimensiuni imgn
 
 
  String valori[]={"min","0.5x","1.5x","max"};
  Button but[]=new Button[4];
  
    public void init()
   {
       Color culoare=new Color(80,200,80);
       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;
//  MemoryImageSource mis;                 
    Image rimg;
    Panel pnou=new Panel();
    setLayout(new BorderLayout());
    for (int i=0;i<valori.length;i++) {
      but[i]=new Button(valori[i]);
  //  pnou.setLayout(new GridLayout());
       pnou.add(but[i]);
    }
         pnou.validate();
     
    add("North",pnou);
  }
 
 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)
  {
     for (int i=0;i<valori.length;i++)
    {
      if (ob.equals(valori[i]))
       {    
         int select2=i+1;
         stralucire rim4=new stralucire(img,select2);
         imgn=rim4.rimg;
      }       
     }
      
    repaint();
    return true;
  }
  return false;
}   
 

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

}

//   stralucire.java

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



public class stralucire extends Applet
{
//  MemoryImageSource mis;                 
  Image rimg;
  float hsb[]=new float[3];
  
 
  
   stralucire (Image source,int select) {
//	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]);
                Color.RGBtoHSB(r,g,b,hsb);
                
                switch (select) {
                    case 1:  hsb[2]=0;
                             break;
                    case 2:  hsb[2]*=0.5;
                             break;
                    case 3:  hsb[2]*=1.5;
                             break;
                    case 4:  hsb[2]=1;
                             break;
                }
                hsb[2]=Math.max(0.0f,Math.min(hsb[2],1.0f));
                Pixn[y*widtho+x]=(alp | (Color.HSBtoRGB(hsb[0],hsb[1],hsb[2])));
	   }
	}

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

  }


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


}