// Path: desktop/src/main/java/com/cv4j/core/datamodel/ImageProcessor.java
// public interface ImageProcessor {
// 
// 	/** Returns the width of this image in pixels. */
// 	int getWidth();
// 
// 	/** Returns the height of this image in pixels. */
// 	int getHeight();
// 
// 	/** Returns the channels of this image. */
// 	int getChannels();
// 
// 	void getPixel(int row, int col, byte[] rgb);
// 
// 	/** get all pixels */
// 	int[] getPixels();
// 
// 	ImageData getImage();
// 
// 	/** Returns float array with one channel of image by index*/
// 	float[] toFloat(int index);
// 
// 	/** Returns int array with one channel of image by index*/
// 	int[] toInt(int index);
// 
// 	/** Returns byte array with one channel of image by index*/
// 	byte[] toByte(int index);
// 
// }
// 
// Path: desktop/src/main/java/com/cv4j/core/datamodel/lut/LUT.java
// public class LUT {
// 
//     public static int[][] getColorFilterLUT(int style) {
// 
//         switch(style) {
//             case AUTUMN_STYLE:
//                 return AutumnLUT.AUTUMN_LUT;
// 
//             case BONE_STYLE:
//                 return BoneLUT.BONE_LUT;
// 
//             case COOL_STYLE:
//                 return CoolLUT.COOL_LUT;
// 
//             case HOT_STYLE:
//                 return HotLUT.HOT_LUT;
// 
//             case HSV_STYLE:
//                 return HsvLUT.HSV_LUT;
// 
//             case JET_STYLE:
//                 return JetLUT.JET_LUT;
// 
//             case OCEAN_STYLE:
//                 return OceanLUT.OCEAN_LUT;
// 
//             case PINK_STYLE:
//                 return PinkLUT.PINK_LUT;
// 
//             case RAINBOW_STYLE:
//                 return RainbowLUT.RAINBOW_LUT;
// 
//             case SPRING_STYLE:
//                 return SpringLUT.SPRING_LUT;
// 
//             case SUMMER_STYLE:
//                 return SummerLUT.SUMMER_LUT;
// 
//             case WINTER_STYLE:
//                 return WinterLUT.WINTER_LUT;
// 
//             default:
//                 return AutumnLUT.AUTUMN_LUT;
//         }
//     }
// }


import com.cv4j.core.datamodel.ImageProcessor;
import com.cv4j.core.datamodel.lut.LUT;

    public ColorFilter() {
        style = AUTUMN_STYLE;
    }

    public void setStyle(int style) {
        this.style = style;
    }

    @Override
    public ImageProcessor doFilter(ImageProcessor src) {

        int tr=0;
        int tg=0;
        int tb=0;
        int[][] lut = getStyleLUT(style);
        int size = R.length;
        for(int i=0; i<size; i++) {
            tr = R[i] & 0xff;
            tg = G[i] & 0xff;
            tb = B[i] & 0xff;

            R[i] = (byte)lut[tr][0];
            G[i] = (byte)lut[tg][1];
            B[i] = (byte)lut[tb][2];
        }
        return src;
    }

    private int[][] getStyleLUT(int style) {
// Path: desktop/src/main/java/com/cv4j/core/datamodel/ImageProcessor.java
// public interface ImageProcessor {
// 
// 	/** Returns the width of this image in pixels. */
// 	int getWidth();
// 
// 	/** Returns the height of this image in pixels. */
// 	int getHeight();
// 
// 	/** Returns the channels of this image. */
// 	int getChannels();
// 
// 	void getPixel(int row, int col, byte[] rgb);
// 
// 	/** get all pixels */
// 	int[] getPixels();
// 
// 	ImageData getImage();
// 
// 	/** Returns float array with one channel of image by index*/
// 	float[] toFloat(int index);
// 
// 	/** Returns int array with one channel of image by index*/
// 	int[] toInt(int index);
// 
// 	/** Returns byte array with one channel of image by index*/
// 	byte[] toByte(int index);
// 
// }
// 
// Path: desktop/src/main/java/com/cv4j/core/datamodel/lut/LUT.java
// public class LUT {
// 
//     public static int[][] getColorFilterLUT(int style) {
// 
//         switch(style) {
//             case AUTUMN_STYLE:
//                 return AutumnLUT.AUTUMN_LUT;
// 
//             case BONE_STYLE:
//                 return BoneLUT.BONE_LUT;
// 
//             case COOL_STYLE:
//                 return CoolLUT.COOL_LUT;
// 
//             case HOT_STYLE:
//                 return HotLUT.HOT_LUT;
// 
//             case HSV_STYLE:
//                 return HsvLUT.HSV_LUT;
// 
//             case JET_STYLE:
//                 return JetLUT.JET_LUT;
// 
//             case OCEAN_STYLE:
//                 return OceanLUT.OCEAN_LUT;
// 
//             case PINK_STYLE:
//                 return PinkLUT.PINK_LUT;
// 
//             case RAINBOW_STYLE:
//                 return RainbowLUT.RAINBOW_LUT;
// 
//             case SPRING_STYLE:
//                 return SpringLUT.SPRING_LUT;
// 
//             case SUMMER_STYLE:
//                 return SummerLUT.SUMMER_LUT;
// 
//             case WINTER_STYLE:
//                 return WinterLUT.WINTER_LUT;
// 
//             default:
//                 return AutumnLUT.AUTUMN_LUT;
//         }
//     }
// }


// Path: desktop/src/main/java/com/cv4j/core/filters/ColorFilter.java
import com.cv4j.core.datamodel.ImageProcessor;
import com.cv4j.core.datamodel.lut.LUT;


    public ColorFilter() {
        style = AUTUMN_STYLE;
    }

    public void setStyle(int style) {
        this.style = style;
    }

    @Override
    public ImageProcessor doFilter(ImageProcessor src) {

        int tr=0;
        int tg=0;
        int tb=0;
        int[][] lut = getStyleLUT(style);
        int size = R.length;
        for(int i=0; i<size; i++) {
            tr = R[i] & 0xff;
            tg = G[i] & 0xff;
            tb = B[i] & 0xff;

            R[i] = (byte)lut[tr][0];
            G[i] = (byte)lut[tg][1];
            B[i] = (byte)lut[tb][2];
        }
        return src;
    }

    private int[][] getStyleLUT(int style) {
        return LUT.getColorFilterLUT(style);