package gui;

// gui.ImageUtils

import graphics.ImageUtils;
import gui.run.RunButton;
import gui.run.RunSlider;
import ip.gui.NumImage;

import javax.swing.*;
import java.awt.*;

public class IconUtils {

    public static double scaleSlider(int t) {
        return 0.49 * (t / 100.0) + 0.01;
    }

    static double ar = 0.01;
    static double ag = 0.01;
    static double ab = 0.01;


    public static void main(String args[]) {
        JFrame f = new JFrame();

        Container c = f.getContentPane();
        c.setLayout(new FlowLayout());
        final RunButton pseudoColorButton =
                new RunButton(Icons.getColorCameramanIcon()) {
                    public void run() {
                        System.out.println("cr311");
                    }
                };
        c.add(new RunSlider() {
            public void run() {
                ar = scaleSlider(getValue());
                updateImage(ar, ag, ab, pseudoColorButton);
            }
        });
        c.add(new RunSlider() {
            public void run() {
                ag = scaleSlider(getValue());
                updateImage(ar, ag, ab, pseudoColorButton);
            }
        });
        c.add(new RunSlider() {
            public void run() {
                ab = scaleSlider(getValue());
                updateImage(ar, ag, ab, pseudoColorButton);
            }
        });
        c.add(new RunButton(Icons.getMagnifierIcon()) {
            public void run() {
                System.out.println("mag");
            }
        });
        c.add(new RunButton(Icons.getBrushIcon()) {
            public void run() {
                System.out.println("brush");
            }
        });
        c.add(new RunButton(Icons.getCameramanIcon()) {
            public void run() {
                System.out.println("cr311");
            }
        });


        c.add(pseudoColorButton);
        f.setSize(400, 400);
        f.setVisible(true);
    }

    public static void updateImage(
            double ar, double ag, double ab,
            RunButton rb) {
    }

    public static Icon getColorIcon(short r[][]) {
        return new ImageIcon(ImageUtils.short2FalseColorImage(r));
    }

    public static Icon getIcon(short r[][]) {
        return new ImageIcon(ImageUtils.short2Image(r));
    }

    public static int getRed(int v) {
        return getLut(v, 0.0125);
    }

    public static int getGreen(int v) {
        return getLut(v, 0.125);
    }

    public static int getBlue(int v) {
        return getLut(v, 0.425);
    }

    public static int getLut(int v, double a) {
        return (int) (255 / 2.0 * (Math.sin(a * v) + 1));
    }

}