public void SetColormapParams(ColorMapTypes colorMapType, string param) { if (_modelState.ColorMap.Type != colorMapType || _modelState.ColorMap.Param != param) { _modelState.ColorMap.Type = colorMapType; _modelState.ColorMap.Param = param; IColorMap cm = ColorMapFactory.Create(colorMapType, param); if (cm != null) { cm.Initialize(); if (CurrentImage != null) { CurrentImage.ColorMap = cm; RaiseImageChanged(); } } } }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region color mapping //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private void listView1_SelectedIndexChanged(object sender, EventArgs e) { // we get this event when item is deselected first (in which case selected indices count will be zero) if (listView1.SelectedIndices.Count > 0 && listView1.Items[listView1.SelectedIndices[0]].Selected) { string[] cmaps = { "Gray", "Red", "Green", "Blue", "A", "B", "BB", "HE", "Heat", "Cool", "Rainbow", "Standard", "I8", "AIPS0", "Staircase", "Color", "SLS", "HSV", "Advanced", "RGBFile", "None" }; ColorMapTypes cp = (ColorMapTypes)Enum.Parse(typeof(ColorMapTypes), cmaps[listView1.SelectedIndices[0]]); switch (cp) { case ColorMapTypes.RGBFile: // showing dialog while inside this event handler miss things up. schedule // an event to take care of showing the dialog to break this link this.BeginInvoke(new EventHandler(ShowFileDialog), new object[] { sender, e }); // I return to avoid executing the code below as the logic will continue in the // ShowFileDialog event above. break; case ColorMapTypes.Advanced: // if we already in advanced no need to go to advanced tab. perhaps User wants // to change it from colormap if (_model.ColorMapType != ColorMapTypes.Advanced) { tabControl1.SelectedTab = tabControl1.TabPages[2]; } break; default: _colorMapListViewSelectedIndex = listView1.SelectedIndices[0]; if (cp != ColorMapTypes.None) { _model.SetColormapParams(cp, ""); ResetContrastBias(); } break; } } }
/// <summary> /// Sets the ColorMapType property, available only to objects in the same assembly as TargaHeader. /// </summary> /// <param name="eColorMapType">One of the ColorMapType enumeration values.</param> internal protected void SetColorMapType(ColorMapTypes eColorMapType) { this.eColorMapType = eColorMapType; }
static public IColorMap Create(ColorMapTypes cp) { return(ColorMapFactory.Create(cp, "")); }
// 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); }