//  alphaRGB1.java

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



public class alphaRGB1 extends Applet
{
  Image img,imgn;
  Graphics g;
  int dimlat,dimin;  //dimensiuni imagine img
  int lat,inalt;  //dimensiuni imgn
  int argb=0;
 
  String valori[]={"min","0.5x","1.5x","max"};
  Button but[]=new Button[4];
  
    public void init()
   {
     Color culoare=new Color(150,100,50);
     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 p=new Panel();
    Panel pnou=new Panel();
  
    
    setLayout(new BorderLayout());
    p.add(new Button("Alpha"));
    p.add(new Button("Rosu"));
    p.add(new Button("Verde"));
    p.add(new Button("Albastru"));
    add("North",p);
    for (int i=0;i<valori.length;i++) 
      but[i]=new Button(valori[i]);
    pnou.setLayout(new GridLayout(20,2,30,10));
    p.validate();
    for (int i=0;i<valori.length;i++)
             pnou.add(but[i]);
    add("East",pnou);
    pnou.validate();  
    
  }
 
 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)
  {
  
     if (ob.equals("Alpha"))
          argb=1;
     else if (ob.equals("Rosu"))
          argb=2;
     else if (ob.equals("Verde"))
           argb=3;
     else if (ob.equals("Albastru"))
           argb=4;
    for (int i=0;i<valori.length;i++)
    {
       if (ob.equals(valori[i]))
       {    
            int select2=i+1;
            alpha rim7=new alpha(img,argb,select2);
            imgn=rim7.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);
         
}

}


//  alpha.java

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



public class alpha extends Applet
{
//  MemoryImageSource mis;                 
  Image rimg;
  
  
 
  
   public alpha (Image source,int argb,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]);
                switch (argb) {
                    case 1:  alp=alpha1(alp,select);      
                             break;
                    case 2:  r=alpha1(r,select);      
                             break;
                    case 3:  g=alpha1(g,select);      
                             break;
                    case 4:  b=alpha1(b,select);      
                             break;
                }
                
                Pixn[y*widtho+x]=(alp<<24) | (r<<16) | (g<<8) | (b<<0);
	   }
	}

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

  }


 public  int alpha1(int x,int sel)
  {
      int y=0;
      switch (sel) {
                    case 1:  y=0;
                             break;
                    case 2:  y=(int)(x*0.5);
                             break;
                    case 3:  y=(int)(x*1.5);
                             break;
                    case 4:  y=255;
                             break;
                }
                y=Math.max(0,Math.min(y,255));
                return y;
  }



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


}