static public IColorMap FromFile(string path) { IColorMap cm = null; XmlReader r = null; try { r = XmlReader.Create(path); r.ReadToFollowing("ColorMap"); double bias = double.Parse(r["Bias"]); double contrast = double.Parse(r["Contrast"]); string type = r["Type"]; switch (type) { case "RGBFile": r.ReadToDescendant("RGB"); StringReader sr = new StringReader(r.ReadString()); cm = new FileColorMap(sr); sr.Close(); break; case "Advanced": // skip LIP tag r.ReadToDescendant("LIP"); r.ReadToDescendant("Red"); string red = r.ReadString(); r.ReadToNextSibling("Green"); string green = r.ReadString(); r.ReadToNextSibling("Blue"); string blue = r.ReadString(); cm = new CustomLIColorMap(red, green, blue); break; default: cm = Create((ColorMapTypes)Enum.Parse(typeof(ColorMapTypes), r["Type"], true), null); break; } if (cm != null) { cm.Initialize(); cm.Bias = bias; cm.Contrast = contrast; } } finally { if (r != null) { r.Close(); } } return(cm); }
// param is a colorMapFile for file color maps or LI points for LI color maps static public IColorMap Create(ColorMapTypes cp, string param) { IColorMap cpi = null; switch (cp) { case ColorMapTypes.Gray: cpi = new GrayColorMap(); break; case ColorMapTypes.Red: cpi = new RedColorMap(); break; case ColorMapTypes.Green: cpi = new GreenColorMap(); break; case ColorMapTypes.Blue: cpi = new BlueColorMap(); break; case ColorMapTypes.A: cpi = new AColorMap(); break; case ColorMapTypes.B: cpi = new BColorMap(); break; case ColorMapTypes.BB: cpi = new BBColorMap(); break; case ColorMapTypes.HE: cpi = new HEColorMap(); break; case ColorMapTypes.Heat: cpi = new HeatColorMap(); break; case ColorMapTypes.Cool: cpi = new CoolColorMap(); break; case ColorMapTypes.Rainbow: cpi = new RainbowColorMap(); break; case ColorMapTypes.Standard: cpi = new StandardColorMap(); break; case ColorMapTypes.I8: cpi = new I8ColorMap(); break; case ColorMapTypes.AIPS0: cpi = new AIPS0ColorMap(); break; case ColorMapTypes.Staircase: cpi = new StaircaseColorMap(); break; case ColorMapTypes.Color: cpi = new ColorColorMap(); break; case ColorMapTypes.SLS: cpi = new SLSColorMap(); break; case ColorMapTypes.HSV: cpi = new HSVColorMap(); break; case ColorMapTypes.RGBFile: if (string.IsNullOrEmpty(param)) { throw new ArgumentNullException("Custom Map file name is not valid"); } cpi = new FileColorMap(param); break; case ColorMapTypes.Advanced: { if (string.IsNullOrEmpty(param)) { throw new ArgumentNullException("LI points are missing"); } // extract color values string[] LIPoitns = param.Split(new char[] { ';' }); if (LIPoitns.Length != 3 || string.IsNullOrEmpty(LIPoitns[0]) || string.IsNullOrEmpty(LIPoitns[1]) || string.IsNullOrEmpty(LIPoitns[2])) { throw new ArgumentNullException("Invalid LI points"); } cpi = new CustomLIColorMap(LIPoitns[0], LIPoitns[1], LIPoitns[2]); } break; default: break; } return(cpi); }