/*
* Copyright 2015 Laszlo Balazs-Csiki
*
* This file is part of Pixelitor. Pixelitor is free software: you
* can redistribute it and/or modify it under the terms of the GNU
* General Public License, version 3 as published by the Free
* Software Foundation.
*
* Pixelitor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pixelitor. If not, see <http://www.gnu.org/licenses/>.
*/
package pixelitor.filters.lookup;
import java.awt.image.LookupTable;
import java.awt.image.ShortLookupTable;
/**
* A class with static methods that produce LookupTable objects for image
* filters
*/
public final class LookupFactory {
/**
* Utility class with static methods
*/
private LookupFactory() {
}
public static LookupTable createLookupForRemoveRed() {
short[][] lookupData = new short[3][256];
lookupData[0] = getNullMapping();
lookupData[1] = getDefaultMapping();
lookupData[2] = getDefaultMapping();
return new ShortLookupTable(0, lookupData);
}
public static LookupTable createLookupForOnlyRed() {
short[][] lookupData = new short[3][256];
lookupData[0] = getDefaultMapping();
lookupData[1] = getNullMapping();
lookupData[2] = getNullMapping();
return new ShortLookupTable(0, lookupData);
}
public static LookupTable createLookupForRemoveGreen() {
short[][] lookupData = new short[3][256];
lookupData[0] = getDefaultMapping();
lookupData[1] = getNullMapping();
lookupData[2] = getDefaultMapping();
return new ShortLookupTable(0, lookupData);
}
public static LookupTable createLookupForOnlyGreen() {
short[][] lookupData = new short[3][256];
lookupData[0] = getNullMapping();
lookupData[1] = getDefaultMapping();
lookupData[2] = getNullMapping();
return new ShortLookupTable(0, lookupData);
}
public static LookupTable createLookupForRemoveBlue() {
short[][] lookupData = new short[3][256];
lookupData[0] = getDefaultMapping();
lookupData[1] = getDefaultMapping();
lookupData[2] = getNullMapping();
return new ShortLookupTable(0, lookupData);
}
public static LookupTable createLookupForOnlyBlue() {
short[][] lookupData = new short[3][256];
lookupData[0] = getNullMapping();
lookupData[1] = getNullMapping();
lookupData[2] = getDefaultMapping();
return new ShortLookupTable(0, lookupData);
}
public static LookupTable createLookupFrom3Arrays(short[] redMappings, short[] greenMappings, short[] blueMappings) {
short[][] lookupData = new short[3][256];
lookupData[0] = redMappings;
lookupData[1] = greenMappings;
lookupData[2] = blueMappings;
return new ShortLookupTable(0, lookupData);
}
private static short[] getDefaultMapping() {
short[] lookupData = new short[256];
for (int i = 0; i < 256; i++) {
lookupData[i] = (short) i;
}
return lookupData;
}
private static short[] getNullMapping() {
short[] lookupData = new short[256];
for (int i = 0; i < 256; i++) {
lookupData[i] = 0;
}
return lookupData;
}
}