public void CopyTo(PatternPoint pp, SliderTypeEnum sliderType) { switch (sliderType) { case SliderTypeEnum.RGB: pp.H = H; pp.S = S; pp.L = L; pp.InitialL = InitialL; pp.Lightness = Lightness; pp.PointColor = PointColor; break; case SliderTypeEnum.WT: pp.WhiteD = WhiteD; pp.InitialWhiteD = InitialWhiteD; pp.Temp = Temp; break; case SliderTypeEnum.W: pp.WhiteD = WhiteD; pp.InitialWhiteD = InitialWhiteD; break; case SliderTypeEnum.Warm: pp.WarmD = WarmD; pp.InitialWarmD = InitialWarmD; break; case SliderTypeEnum.Cold: pp.ColdD = ColdD; pp.InitialColdD = InitialColdD; break; } }
public void ClearPoint(SliderTypeEnum sliderType) { switch (sliderType) { case SliderTypeEnum.RGB: SetPoint_HSL(0.0, 0.0, 0.0); break; case SliderTypeEnum.WT: WhiteD = 0.0; Temp = 0.0; break; case SliderTypeEnum.W: WhiteD = 0.0; break; case SliderTypeEnum.Warm: WarmD = 0.0; break; case SliderTypeEnum.Cold: ColdD = 0.0; break; } }
/// <summary> /// 移除列表滑动事件 /// </summary> /// <param name="sliderType">滑动类型</param> /// <param name="action">回调事件</param> public void RemoveSliderEvent(SliderTypeEnum sliderType, Action action) { if (sliderAction.ContainsKey(sliderType)) { sliderAction[sliderType] -= action; if (sliderAction[sliderType] == null) { sliderAction.Remove(sliderType); } } }
/// <summary> /// 注册列表滑动事件 /// </summary> /// <param name="sliderType">滑动类型</param> /// <param name="action">回调事件</param> public void RegisterSliderEvent(SliderTypeEnum sliderType, Action action) { if (!sliderAction.ContainsKey(sliderType)) { sliderAction.Add(sliderType, action); } else { sliderAction[sliderType] += action; } }
public void RestorePoint(SliderTypeEnum sliderType) { switch (sliderType) { case SliderTypeEnum.RGB: L = InitialL; break; case SliderTypeEnum.WT: case SliderTypeEnum.W: WhiteD = InitialWhiteD; break; case SliderTypeEnum.Warm: WarmD = InitialWarmD; break; case SliderTypeEnum.Cold: ColdD = InitialColdD; break; } }
void CreateSliderList(XElement root, List <SliderItem> sliderList) { SliderTypeEnum sliderType = SliderTypeEnum.RGB; int ix = 0; if (root != null) { foreach (XElement basePoint in root.Elements("BasePoint")) { int Pos = int.Parse(basePoint.Attribute("Pos").Value); PatternPoint pp = Pattern[Pos - 1]; switch (root.Name.ToString()) { case "RGB": System.Drawing.Color color = System.Drawing.Color.FromArgb (0, int.Parse(basePoint.Attribute("R").Value), int.Parse(basePoint.Attribute("G").Value), int.Parse(basePoint.Attribute("B").Value) ); pp = Pattern[Pos - 1]; pp.H = color.GetHue(); pp.S = color.GetSaturation(); pp.L = color.GetBrightness(); pp.SaveLightness(); pp.PointColor = Color.FromRgb(color.R, color.G, color.B); pp.Lightness = Convert.ToInt32(pp.L * 255.0); sliderType = SliderTypeEnum.RGB; break; case "White": pp.WhiteD = double.Parse(basePoint.Attribute("W").Value); pp.InitialWhiteD = pp.WhiteD; sliderType = SliderTypeEnum.W; break; case "WhiteTemp": pp.WhiteD = double.Parse(basePoint.Attribute("W").Value); pp.InitialWhiteD = pp.WhiteD; pp.Temp = double.Parse(basePoint.Attribute("T").Value); sliderType = SliderTypeEnum.WT; break; case "Warm": pp.WarmD = double.Parse(basePoint.Attribute("W").Value); pp.InitialWarmD = pp.WarmD; sliderType = SliderTypeEnum.Warm; break; case "Cold": pp.ColdD = double.Parse(basePoint.Attribute("W").Value); pp.InitialColdD = pp.ColdD; sliderType = SliderTypeEnum.Cold; break; } sliderList.Add(CreateSlider(sliderList, ix, Pos, (PointVariant)int.Parse(basePoint.Attribute("Variant").Value), sliderType)); ix++; } } }
//XElement whitePoint(SliderItem si) //{ // //< BasePoint Pos = "1" W = "0" Variant = "0" /> // XElement xe = new XElement("BasePoint", // new XAttribute("Pos", ((int)si.Value).ToString()), // new XAttribute("W", (si.PatternPoint.WhiteD).ToString()), // new XAttribute("Variant", ((int)si.Variant).ToString()) // ); // return xe; //} #endregion SliderItem CreateSlider(List <SliderItem> sList, int ix, int pos, PointVariant pVariant, SliderTypeEnum sliderType) { SliderItem si = new SliderItem(); si.Ix = ix; si.Owner = sList; si.PatternPoint = Pattern[pos - 1]; si.Variant = pVariant; si.Minimum = 1; si.Maximum = PointCount; si.SelectionStart = 1; si.SelectionEnd = si.Maximum; si.Value = pos; si.SliderType = sliderType; return(si); }
/****************************************************************************/ #region Base methods // Метод вызывает EffectUC public void SetPanel(SliderTypeEnum variant) { switch (variant) { case SliderTypeEnum.RGB: rangePointer.Visibility = Visibility.Visible; colorSelector.Visibility = Visibility.Visible; huePart.Visibility = Visibility.Visible; satPart.Visibility = Visibility.Visible; lightPart.Visibility = Visibility.Visible; whitePart.Visibility = Visibility.Collapsed; tempPart.Visibility = Visibility.Collapsed; coldPart.Visibility = Visibility.Collapsed; warmPart.Visibility = Visibility.Collapsed; break; case SliderTypeEnum.W: rangePointer.Visibility = Visibility.Collapsed; colorSelector.Visibility = Visibility.Collapsed; huePart.Visibility = Visibility.Collapsed; satPart.Visibility = Visibility.Collapsed; lightPart.Visibility = Visibility.Collapsed; whitePart.Visibility = Visibility.Visible; tempPart.Visibility = Visibility.Collapsed; coldPart.Visibility = Visibility.Collapsed; warmPart.Visibility = Visibility.Collapsed; break; case SliderTypeEnum.WT: rangePointer.Visibility = Visibility.Collapsed; colorSelector.Visibility = Visibility.Collapsed; huePart.Visibility = Visibility.Collapsed; satPart.Visibility = Visibility.Collapsed; lightPart.Visibility = Visibility.Collapsed; whitePart.Visibility = Visibility.Visible; tempPart.Visibility = Visibility.Visible; coldPart.Visibility = Visibility.Collapsed; warmPart.Visibility = Visibility.Collapsed; break; case SliderTypeEnum.Cold: rangePointer.Visibility = Visibility.Collapsed; colorSelector.Visibility = Visibility.Collapsed; huePart.Visibility = Visibility.Collapsed; satPart.Visibility = Visibility.Collapsed; lightPart.Visibility = Visibility.Collapsed; whitePart.Visibility = Visibility.Collapsed; tempPart.Visibility = Visibility.Collapsed; coldPart.Visibility = Visibility.Visible; warmPart.Visibility = Visibility.Collapsed; break; case SliderTypeEnum.Warm: rangePointer.Visibility = Visibility.Collapsed; colorSelector.Visibility = Visibility.Collapsed; huePart.Visibility = Visibility.Collapsed; satPart.Visibility = Visibility.Collapsed; lightPart.Visibility = Visibility.Collapsed; whitePart.Visibility = Visibility.Collapsed; tempPart.Visibility = Visibility.Collapsed; coldPart.Visibility = Visibility.Collapsed; warmPart.Visibility = Visibility.Visible; break; } }
void UpdateLuminosityGradient(SliderItem leftSlider, SliderItem rightSlider) { double delta; SliderTypeEnum sliderType = leftSlider.SliderType; int stepCount = rightSlider.Pos - leftSlider.Pos; switch (leftSlider.SliderType) { case SliderTypeEnum.RGB: leftSlider.PatternPoint.RestorePoint(sliderType); leftSlider.PatternPoint.UpdatePoint_RGB(); rightSlider.PatternPoint.RestorePoint(sliderType); rightSlider.PatternPoint.UpdatePoint_RGB(); break; default: leftSlider.PatternPoint.RestorePoint(sliderType); rightSlider.PatternPoint.RestorePoint(sliderType); break; //case SliderTypeEnum.WT: //case SliderTypeEnum.W: // leftSlider.PatternPoint.RestorePoint(sliderType); // rightSlider.PatternPoint.RestorePoint(sliderType); // break; //case SliderTypeEnum.Cold: // leftSlider.PatternPoint.RestorePoint(sliderType); // rightSlider.PatternPoint.RestorePoint(sliderType); // break; //case SliderTypeEnum.Warm: // leftSlider.PatternPoint.RestorePoint(sliderType); // rightSlider.PatternPoint.RestorePoint(sliderType); // break; } if (stepCount > 0) { switch (leftSlider.SliderType) { case SliderTypeEnum.RGB: delta = (rightSlider.PatternPoint.L - leftSlider.PatternPoint.L) / stepCount; for (int i = 0; i < stepCount - 1; i++) { double prevLight = Pattern[leftSlider.Pos - 1 + i].L; Pattern[leftSlider.Pos + i].SetPoint_HSL(Pattern[leftSlider.Pos + i].H, Pattern[leftSlider.Pos + i].S, prevLight + delta); } break; case SliderTypeEnum.WT: case SliderTypeEnum.W: delta = (rightSlider.PatternPoint.WhiteD - leftSlider.PatternPoint.WhiteD) / stepCount; for (int i = 0; i < stepCount - 1; i++) { double prevWhiteD = Pattern[leftSlider.Pos - 1 + i].WhiteD; Pattern[leftSlider.Pos + i].WhiteD = prevWhiteD + delta; } break; case SliderTypeEnum.Warm: delta = (rightSlider.PatternPoint.WarmD - leftSlider.PatternPoint.WarmD) / stepCount; for (int i = 0; i < stepCount - 1; i++) { double prevWarmD = Pattern[leftSlider.Pos - 1 + i].WarmD; Pattern[leftSlider.Pos + i].WarmD = prevWarmD + delta; } break; case SliderTypeEnum.Cold: delta = (rightSlider.PatternPoint.ColdD - leftSlider.PatternPoint.ColdD) / stepCount; for (int i = 0; i < stepCount - 1; i++) { double prevColdD = Pattern[leftSlider.Pos - 1 + i].ColdD; Pattern[leftSlider.Pos + i].ColdD = prevColdD + delta; } break; } } }