public ColorModel(string description, int maxPixelValue = 0, int gradientSize = 1024) { if (maxPixelValue == 0) { maxPixelValue = MaxPixelValue; } m_description = description; m_gradientSize = gradientSize; m_gain = 1.0; m_controlPts = new ObservableCollection <ColorControlPoint>(); m_stops = new ObservableCollection <ColorStop>(); m_gradient = new WG_Color[m_gradientSize]; for (int i = 0; i < m_gradientSize; i++) { m_gradient[i] = new WG_Color(0, 0, 0); } SetMaxPixelValue(maxPixelValue); }
public ColorModel() { m_description = "Default Color Model"; m_gradientSize = 1024; m_gain = 1.0; m_controlPts = new ObservableCollection <ColorControlPoint>(); m_stops = new ObservableCollection <ColorStop>(); m_gradient = new WG_Color[m_gradientSize]; m_controlPts.Add(new ColorControlPoint(0, 0)); m_controlPts.Add(new ColorControlPoint(MaxPixelValue, m_gradientSize - 1)); m_stops.Add(new ColorStop(0, new WG_Color(0, 0, 0))); m_stops.Add(new ColorStop(MaxPixelValue, new WG_Color(255, 255, 255))); m_maxPixelValue = MaxPixelValue; m_colorMap = new WG_Color[m_maxPixelValue + 1]; for (int i = 0; i < m_maxPixelValue + 1; i++) { m_colorMap[i] = new WG_Color(0, 0, 0); } //SetMaxPixelValue(maxPixelValue); m_maxPixelValue = MaxPixelValue; m_colorMap = new WG_Color[m_maxPixelValue + 1]; for (int i = 0; i < m_gradientSize; i++) { byte val = (byte)((float)(i * 255) / (float)(m_gradientSize)); m_gradient[i] = new WG_Color(val, val, val); } for (int i = 0; i < m_maxPixelValue + 1; i++) { byte val = (byte)((float)(i * 255) / (float)(m_maxPixelValue)); m_colorMap[i] = new WG_Color(val, val, val); } }
public double m_gain; // value used to amplify pixel values public void SetMaxPixelValue(int maxPixelValue) { m_maxPixelValue = maxPixelValue; m_colorMap = new WG_Color[m_maxPixelValue + 1]; for (int i = 0; i < m_maxPixelValue + 1; i++) { m_colorMap[i] = new WG_Color(0, 0, 0); } //m_controlPts.Add(new ColorControlPoint(0, 0)); //m_controlPts.Add(new ColorControlPoint(100 / 3, m_gradientSize / 3)); //m_controlPts.Add(new ColorControlPoint(100 * 2 / 3, m_gradientSize * 2 / 3)); //m_controlPts.Add(new ColorControlPoint(100, m_gradientSize - 1)); m_controlPts.Add(new ColorControlPoint(0, 0)); m_controlPts.Add(new ColorControlPoint(0, 0)); m_controlPts.Add(new ColorControlPoint(m_maxPixelValue, m_gradientSize - 1)); m_controlPts.Add(new ColorControlPoint(m_maxPixelValue, m_gradientSize - 1)); }
public ColorModel(ColorModelContainer cModelCont, int maxPixelValue = 65535, int gradientSize = 1024) { m_description = cModelCont.Description; m_gradientSize = gradientSize; m_gain = 1.0; m_controlPts = new ObservableCollection <ColorControlPoint>(); m_stops = new ObservableCollection <ColorStop>(); m_gradient = new WG_Color[m_gradientSize]; for (int i = 0; i < m_gradientSize; i++) { m_gradient[i] = new WG_Color(0, 0, 0); } foreach (ColorModelControlPointContainer pc in cModelCont.ControlPts) { m_controlPts.Add(new ColorControlPoint(pc.Value, pc.ColorIndex)); } foreach (ColorModelStopContainer sc in cModelCont.Stops) { m_stops.Add(new ColorStop(sc.ColorIndex, new WG_Color(sc.Red, sc.Green, sc.Blue))); } //SetMaxPixelValue(maxPixelValue); m_maxPixelValue = maxPixelValue; m_colorMap = new WG_Color[m_maxPixelValue + 1]; for (int i = 0; i < m_maxPixelValue + 1; i++) { m_colorMap[i] = new WG_Color(0, 0, 0); } BuildColorGradient(); BuildColorMap(); }
public void InsertColorStop(int index, byte red, byte green, byte blue) { WG_Color color = new WG_Color(red, green, blue); ColorStop cstop = new ColorStop(index, color); int position = 0; int maxIndex = m_gradientSize - 1; if (index == 0) { position = 0; } else if (index == maxIndex) { position = m_stops.Count(); } else { for (int i = 0; i < m_stops.Count(); i++) { if (index > m_stops[i].m_index) { position = i + 1; } else { break; } } } m_stops.Insert(position, cstop); }
public ColorStop(int index, WG_Color color) { m_color = color; m_index = index; }