All pastes #454463 Raw Edit

doh

public text v1 · immutable
·published 2007-04-23 17:01 UTC
rendered paste body

import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import javax.swing.*;
import javax.imageio.*;

public class Uppgift3e extends JApplet
{

class NegativFilter extends ImageFilter
{
	
	public void setPixels(int x, int y, int w, int h, ColorModel model,
		int[] pixels, int off, int scansize)
	{
		int[] compo = new int[4];
//		int[] pixels2 = new int[w * h];
		int index;
		for (int i=x; i<w; i++)
			for (int j=y; j<h; j++)
			{
				index = i + (j*scansize) + off;
				compo = model.getComponents(pixels[index], compo, 0);
				compo[0] = 255 - compo[0];
				compo[1] = 255 - compo[1];
				compo[2] = 255 - compo[2];
				pixels[index] = (int) model.getDataElement(compo, 0);
//				pixels2[index] = (int) model.getDataElement(compo, 0);
			}
	
//		pixels = pixels2;
	}
}
	
	private JPanel canvas = new JPanel()
	{
		public void paintComponent(Graphics g)
		{
			paintCanvas(g);
		}
	};
	private Image original;
	private Image temp;
	
	public void init()
	{
		try
		{
			original = ImageIO.read(new URL(getCodeBase(), "rapist.jpg"));
			temp = original;
		}
		catch (Exception e)
		{
			fel(e);
		}
		
		setLayout(new BorderLayout());
		
		JPanel topp = new JPanel(new FlowLayout(FlowLayout.CENTER));
		JButton invertera = new JButton("Invertera");
		invertera.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
				uppdatera(new NegativFilter());
			}
		});
		JButton återställ = new JButton("Återställ");
		återställ.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
			}
		});
		JButton gråtona = new JButton("Gråtona");
		gråtona.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
			}
		});
		topp.add(invertera);
		topp.add(återställ);
		topp.add(gråtona);
		add("North", topp);
		
		add("Center", canvas);
		
		JPanel botten = new JPanel(new FlowLayout(FlowLayout.CENTER));
		JButton filter1 = new JButton("Filter #1");
		filter1.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
			}
		});
		JButton filter2 = new JButton("Filter #2");
		filter2.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
			}
		});
		JButton filter3 = new JButton("Filter #3");
		filter3.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent ae)
			{
			}
		});
		botten.add(filter1);
		botten.add(filter2);
		botten.add(filter3);
		add("South", botten);
	}
	
	private void uppdatera(ImageFilter filter)
	{
		ImageProducer ip = temp.getSource();
		FilteredImageSource f = new FilteredImageSource(ip, filter);
		temp = createImage(f);
		canvas.repaint();
	}
	
	private void paintCanvas(Graphics g)
	{
		int w = canvas.getWidth();
		int h = canvas.getHeight();
		
		if (temp == null)
		{
			g.setColor(Color.white);
			g.fillRect(0, 0, w, h);
			return;
		}
		
		g.drawImage(temp, 0, 0, w, h, this);
		System.out.println("hej");
	}
	
	private void fel(Exception e)
	{
		e.printStackTrace();
		System.exit(0);
	}
}