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 }