/**
Comp6461 Lab 5
@ author Rod Harris
*/

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;

public class Lab5
{
	public static void main(String[] args)
	{
		new Lab5();
	}

	public Lab5()
	{
		ApplicationFrame frame = new ApplicationFrame("Lab 5", 400, 400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		ShowImage sImage = new ShowImage();

		BufferedImage image = sImage.getImage();

		ImagePanel mainPanel = new ImagePanel();

		mainPanel.setImage(image);

		frame.getContentPane().add(mainPanel);

		frame.setVisible(true);

		short[] rt = new short[256];
		short[] gt = new short[256];
		short[] bt = new short[256];

		int r1;

		for (r1=0; r1<256; r1++)
		{
			rt[r1] = (short)((r1+21)%255);
		}

		for (r1=0; r1<256; r1++)
		{
			gt[r1] = (short)((r1+2)%255);
		}

		for (r1=0; r1<256; r1++)
		{
			bt[r1] = (short)((r1+35)%255);
		}

		short[][] sourceTable = { rt, gt, bt };

		LookupTable table = new ShortLookupTable(0, sourceTable);
		LookupOp opTable = new LookupOp(table,null);

		while (true)
		{
			image = opTable.filter(image,null);
			mainPanel.setImage(image);

			frame.repaint();
		}
	}
}

class ImagePanel extends JPanel
{
	private BufferedImage image;

	public ImagePanel()
	{
	}

	public void setImage(BufferedImage img)
	{
		image = img;
	}

	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);

		g.drawImage(image, 0, 0, null);
	}
}



