001    package railo.runtime.functions.image;
002    
003    import java.awt.Color;
004    
005    import railo.commons.color.ColorCaster;
006    import railo.commons.lang.StringUtil;
007    import railo.runtime.PageContext;
008    import railo.runtime.exp.FunctionException;
009    import railo.runtime.exp.PageException;
010    import railo.runtime.img.filter.GrayscaleColormap;
011    import railo.runtime.img.filter.LinearColormap;
012    import railo.runtime.img.filter.SpectrumColormap;
013    
014    public class ImageFilterColorMap {
015            public static Object call(PageContext pc, String type) throws PageException {
016                    return call(pc, type, null, null);
017            }
018            public static Object call(PageContext pc, String type, String lineColor1) throws PageException {
019                    return call(pc, type, lineColor1, null);
020                    
021            }
022            public static Object call(PageContext pc, String type, String lineColor1,String lineColor2) throws PageException {
023                    type=type.toLowerCase().trim();
024                    
025                    if("grayscale".equals(type)) return new GrayscaleColormap();
026                    else if("spectrum".equals(type)) return new SpectrumColormap();
027                    else if("linear".equals(type)) {
028                            boolean isEmpty1=StringUtil.isEmpty(lineColor1);
029                            boolean isEmpty2=StringUtil.isEmpty(lineColor2);
030                            
031                            if(isEmpty1 && isEmpty2) return new LinearColormap();
032                            else if(!isEmpty1 && !isEmpty2) {
033                                    Color color1 = ColorCaster.toColor(lineColor1);
034                                    Color color2 = ColorCaster.toColor(lineColor2);
035                                    return new LinearColormap(color1.getRGB(),color2.getRGB());
036                            }
037                            else 
038                                    throw new FunctionException(pc, "ImageFilterColorMap", 2, "lineColor1", "when you define linecolor1 you have to define linecolor2 as well");
039                                    
040                    }
041                    else throw new FunctionException(pc, "ImageFilterColorMap", 1, "type", "invalid type defintion, valid types are [grayscale,spectrum,linear]");
042                    
043                    
044                    
045                    
046            }
047    }