/*- ******************************************************************************* * Copyright (c) 2011, 2014 Diamond Light Source Ltd. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Matthew Gerring - initial API and implementation and/or initial documentation *******************************************************************************/ package uk.ac.diamond.scisoft.analysis.histogram.functions; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Deprecated and replaced by colour map implementations in org.dawnsci.plotting.histogram */ @Deprecated public class GlobalColourMaps { public static final String[] colourMapNames = {"Grey", "Film negative", "sqrt", "Film negative (sqrt)", "Traditional pm3d (black-blue-red-yellow)", "Ncd Colour", "Green-red-violet", "Ocean (green-blue-white)", "Hot (black-red-yellow-white)", "Colour printable on gray (black-blue-violet-yellow-white)", "Rainbow (blue-green-yellow-red)", "AFM hot (black-red-yellow-white)", "Low Skewed Grayscale (black-white)", "High Skewed Grayscale (black-white)", "Geographical", "Mark's special"}; public static HashMap<String,Integer> indexOfMappingFunctions = null; public static LinkedList<AbstractMapFunction> mappingFunctions = null; public static ArrayList<Integer> colourSelectList = new ArrayList<Integer>(); private static final Logger logger = LoggerFactory.getLogger(GlobalColourMaps.class); private static float specialMinThreshold = 0.1f; private static float specialMaxThreshold = 0.9f; /** * Add a mapping function to the view's list * @param mappingFunction */ private static void addToMappings(AbstractMapFunction mappingFunction) { int i; if (indexOfMappingFunctions == null) { indexOfMappingFunctions = new HashMap<String, Integer>(); i = 0; } else { i = mappingFunctions.size(); } String function = mappingFunction.getMapFunctionName(); if (indexOfMappingFunctions.containsKey(function)) { logger.warn("Adding a mapping function whose name, {}, already exists", function); logger.warn("Overwriting the index"); } mappingFunctions.add(mappingFunction); indexOfMappingFunctions.put(function, i); } public static AbstractMapFunction getFunction(String functionName) { final int index = indexOfMappingFunctions.get(functionName); if (index>-1) return mappingFunctions.get(index); return null; } private static void addToColourMapBox(String red, boolean redInvert, String green, boolean greenInvert, String blue, boolean blueInvert, String alpha, boolean alphaInvert) { Integer index; index = indexOfMappingFunctions.get(red); if (index == null) { logger.warn("Cannot find mapping function {}, resorting to x"); index = indexOfMappingFunctions.get("x"); } if (redInvert) index *= -1; colourSelectList.add(index); index = indexOfMappingFunctions.get(green); if (index == null) { logger.warn("Cannot find mapping function {}, resorting to x"); index = indexOfMappingFunctions.get("x"); } if (greenInvert) index *= -1; colourSelectList.add(index); index = indexOfMappingFunctions.get(blue); if (index == null) { logger.warn("Cannot find mapping function {}, resorting to x"); index = indexOfMappingFunctions.get("x"); } if (blueInvert) index *= -1; colourSelectList.add(index); index = indexOfMappingFunctions.get(alpha); if (index == null) { logger.warn("Cannot find mapping function {}, resorting to 1.0"); index = indexOfMappingFunctions.get("1.0"); } if (alphaInvert) index *= -1; colourSelectList.add(index); } public static void InitializeColourMaps() { if (indexOfMappingFunctions == null) { mappingFunctions = new LinkedList<AbstractMapFunction>(); // 0 ConstMapFunction mapZero = new ConstMapFunction(0, "0"); addToMappings(mapZero); // 1 ConstMapFunction mapHalf = new ConstMapFunction(0.5, "0.5"); addToMappings(mapHalf); // 2 ConstMapFunction mapOne = new ConstMapFunction(1.0, "1.0"); addToMappings(mapOne); // 3 LinearMapFunction linearMap = new LinearMapFunction(); addToMappings(linearMap); // initial pick SquareMapFunction squareMap = new SquareMapFunction(); addToMappings(squareMap); CubicMapFunction cubicMap = new CubicMapFunction(); addToMappings(cubicMap); QuarticMapFunction quarticMap = new QuarticMapFunction(); addToMappings(quarticMap); SquareRootMapFunction sqrtMap = new SquareRootMapFunction(); addToMappings(sqrtMap); FourthRootMapFunction frthrtMap = new FourthRootMapFunction(); addToMappings(frthrtMap); SinMapFunction sin90Map = new SinMapFunction("sin(x*90)", 0.5*Math.PI, false); addToMappings(sin90Map); CosMapFunction cos90Map = new CosMapFunction("cos(x*90)", 0.5*Math.PI, false); addToMappings(cos90Map); LinearMapFunction lineOff5abs = new LinearMapFunction("|x-0.5|", -0.5, true); addToMappings(lineOff5abs); SquareScaleOffsetMapFunction amap = new SquareScaleOffsetMapFunction("(2x-1)^2", 2.0, -1.0); addToMappings(amap); SinMapFunction sin180map = new SinMapFunction("sin(x*180)", Math.PI, false); addToMappings(sin180map); CosMapFunction cos180map = new CosMapFunction("|cos(x*180)|", Math.PI, true); addToMappings(cos180map); SinMapFunction sin360map = new SinMapFunction("sin(x*360)", 2.0*Math.PI, false); addToMappings(sin360map); CosMapFunction cos360map = new CosMapFunction("cos(x*360)", 2.0*Math.PI, false); addToMappings(cos360map); SinMapFunction asin360map = new SinMapFunction("|sin(x*360)|", 2.0*Math.PI, true); addToMappings(asin360map); CosMapFunction acos360map = new CosMapFunction("|cos(x*360)|", 2.0*Math.PI, true); addToMappings(acos360map); SinMapFunction asin720map = new SinMapFunction("|sin(x*720)|", 4.0*Math.PI, true); addToMappings(asin720map); CosMapFunction acos720map = new CosMapFunction("|cos(x*720)|", 4.0*Math.PI, true); addToMappings(acos720map); LinearMapFunction linea = new LinearMapFunction("3x", 3.0, false); addToMappings(linea); LinearMapFunction lineb = new LinearMapFunction("3x-1", 3.0, -1.0, false); addToMappings(lineb); LinearMapFunction linec = new LinearMapFunction("3x-2", 3.0, -2.0, false); addToMappings(linec); LinearMapFunction alineb = new LinearMapFunction("|3x-1|", 3.0, -1.0, true); addToMappings(alineb); LinearMapFunction alinec = new LinearMapFunction("|3x-2|", 3.0, -2.0, true); addToMappings(alinec); LinearMapFunction lined = new LinearMapFunction("(3x-1)/2", 1.5, -0.5, false); addToMappings(lined); LinearMapFunction linee = new LinearMapFunction("(3x-2)/2", 1.5, -1.0, false); addToMappings(linee); LinearMapFunction alined = new LinearMapFunction("|3x-1|/2", 1.5, -0.5, true); addToMappings(alined); LinearMapFunction alinee = new LinearMapFunction("|3x-2|/2", 1.5, -1.0, true); addToMappings(alinee); LinearMapFunction linef = new LinearMapFunction("2x", 2.0, false); addToMappings(linef); LinearMapFunction lineg = new LinearMapFunction("2x-0.5", 2.0, -0.5, false); addToMappings(lineg); LinearMapFunction lineh = new LinearMapFunction("2x-1", 2.0, -1.0, false); addToMappings(lineh); LinearMapFunction alineg = new LinearMapFunction("|2x-0.5|", 2.0, -0.5, true); addToMappings(alineg); LinearMapFunction clinea = new LinearMapFunction("x/0.32-0.78125", (1.0/0.32), -0.78125, false); addToMappings(clinea); LinearMapFunction clineb = new LinearMapFunction("2x-0.84", 2.0, -0.84, false); addToMappings(clineb); CustomAPieceWiseLinearMapFunction linei = new CustomAPieceWiseLinearMapFunction(); addToMappings(linei); NCDGamma2RedFunction ncdRed = new NCDGamma2RedFunction(); addToMappings(ncdRed); NCDGamma2GreenFunction ncdGreen = new NCDGamma2GreenFunction(); addToMappings(ncdGreen); NCDGamma2BlueFunction ncdBlue = new NCDGamma2BlueFunction(); addToMappings(ncdBlue); GeoBlueMapFunction geoBlue = new GeoBlueMapFunction(); GeoGreenMapFunction geoGreen = new GeoGreenMapFunction(); GeoRedMapFunction geoRed = new GeoRedMapFunction(); addToMappings(geoRed); addToMappings(geoGreen); addToMappings(geoBlue); SpecialExposureFunction redExpFunc = new SpecialExposureFunction("RedSpecial",specialMinThreshold, specialMaxThreshold,'r'); addToMappings(redExpFunc); SpecialExposureFunction greenExpFunc = new SpecialExposureFunction("GreenSpecial",specialMinThreshold, specialMaxThreshold, 'g'); addToMappings(greenExpFunc); SpecialExposureFunction blueExpFunc = new SpecialExposureFunction("BlueSpecial",specialMinThreshold, specialMaxThreshold, 'b'); addToMappings(blueExpFunc); UserCustomFunction customFunc = new UserCustomFunction("Custom",24); addToMappings(customFunc); UserCustomFunction redCustomFunc = new UserCustomFunction("Red Custom",24); addToMappings(redCustomFunc); UserCustomFunction greenCustomFunc = new UserCustomFunction("Green Custom",24); addToMappings(greenCustomFunc); UserCustomFunction blueCustomFunc = new UserCustomFunction("Blue Custom",24); addToMappings(blueCustomFunc); UserCustomFunction alphaCustomFunc = new UserCustomFunction("Alpha Custom",24); addToMappings(alphaCustomFunc); addToColourMapBox( "x", false, "x", false, "x", false, "1.0", false); addToColourMapBox( "x", true, "x", true, "x", true, "1.0", false); addToColourMapBox( "sqrt(x)", false, "sqrt(x)", false, "sqrt(x)", false, "1.0", false); addToColourMapBox( "sqrt(x)", true, "sqrt(x)", true, "sqrt(x)", true, "1.0", false); addToColourMapBox( "sqrt(x)", false, "x^3", false, "sin(x*360)", false, "1.0", false); addToColourMapBox( "NCD Gamma II Red",false,"NCD Gamma II Green",false,"NCD Gamma II Blue",false,"1.0",false); addToColourMapBox( "x", false, "|x-0.5|", false, "x^4", false, "1.0", false); addToColourMapBox( "3x-2", false, "|3x-1|/2", false, "x", false, "1.0", false); addToColourMapBox( "3x", false, "3x-1", false, "3x-2", false, "1.0", false); addToColourMapBox( "x/0.32-0.78125", false, "2x-0.84", false, "4x;1;-2x+1.84;12.5x-11.5", false, "1.0", false); addToColourMapBox( "|2x-0.5|", false, "sin(x*180)", false, "cos(x*90)", false, "1.0", false); addToColourMapBox( "2x", false, "2x-0.5", false, "2x-1", false, "1.0", false); addToColourMapBox( "sqrt(x)", false, "sqrt(x)", false, "sqrt(x)", false, "1.0", false); addToColourMapBox( "x^2", false, "x^2", false, "x^2", false, "1.0", false); addToColourMapBox("GeoRed",false,"GeoGreen",false,"GeoBlue",false,"1.0",false); addToColourMapBox("RedSpecial",false,"GreenSpecial",false,"BlueSpecial",false,"1.0",false); } } }