/// <summary>Set the brightness based on point x,y relative to the VSlider</summary> private void SelectBrightness(int x, int y) { var dim = LayoutDimensions; if (dim.Empty || dim.VSlider.IsEmpty) { return; } var v = VerticalLayout ? Math_.Clamp(Math_.Frac(dim.VSlider.Left, x, dim.VSlider.Right), 0.0, 1.0) : Math_.Clamp(Math_.Frac(dim.VSlider.Bottom, y, dim.VSlider.Top), 0.0, 1.0); HSVColour = HSV.FromAHSV(HSVColour.A, HSVColour.H, HSVColour.S, (float)v); }
/// <summary>Set the alpha based on point x,y relative to the VSlider</summary> private void SelectAlpha(int x, int y) { var dim = LayoutDimensions; if (dim.Empty || dim.ASlider.IsEmpty) { return; } var a = VerticalLayout ? Math_.Clamp(Math_.Frac(dim.ASlider.Left, x, dim.ASlider.Right), 0.0, 1.0) : Math_.Clamp(Math_.Frac(dim.ASlider.Bottom, y, dim.ASlider.Top), 0.0, 1.0); HSVColour = HSV.FromAHSV((float)a, HSVColour.H, HSVColour.S, HSVColour.V); }
/// <summary>Set up the text box fields</summary> private void SetupFields() { // Validation CancelEventHandler Validating = (s, a) => { a.Cancel = !byte.TryParse(((TextBox)s).Text, out var dummy); }; m_edit_red.Validating += Validating; m_edit_green.Validating += Validating; m_edit_blue.Validating += Validating; m_edit_alpha.Validating += Validating; m_edit_hue.Validating += Validating; m_edit_sat.Validating += Validating; m_edit_lum.Validating += Validating; // Accept value Action <byte?, byte?, byte?, byte?> SetARGB = (a, r, g, b) => { var c = m_wheel.Colour; m_wheel.Colour = Color.FromArgb(a ?? c.A, r ?? c.R, g ?? c.G, b ?? c.B); }; Action <float?, float?, float?, float?> SetAHSV = (a, h, s, v) => { var c = m_wheel.HSVColour; if (a.HasValue) { a = Math_.Clamp(a.Value / 255f, 0f, 1f); } if (h.HasValue) { h = Math_.Clamp(h.Value / 255f, 0f, 1f); } if (s.HasValue) { s = Math_.Clamp(s.Value / 255f, 0f, 1f); } if (v.HasValue) { v = Math_.Clamp(v.Value / 255f, 0f, 1f); } m_wheel.HSVColour = HSV.FromAHSV(a ?? c.A, h ?? c.H, s ?? c.S, v ?? c.V); }; m_edit_alpha.Validated += (s, a) => SetARGB(byte.Parse(((TextBox)s).Text), null, null, null); m_edit_red.Validated += (s, a) => SetARGB(null, byte.Parse(((TextBox)s).Text), null, null); m_edit_green.Validated += (s, a) => SetARGB(null, null, byte.Parse(((TextBox)s).Text), null); m_edit_blue.Validated += (s, a) => SetARGB(null, null, null, byte.Parse(((TextBox)s).Text)); m_edit_hue.Validated += (s, a) => SetAHSV(null, byte.Parse(((TextBox)s).Text), null, null); m_edit_sat.Validated += (s, a) => SetAHSV(null, null, byte.Parse(((TextBox)s).Text), null); m_edit_lum.Validated += (s, a) => SetAHSV(null, null, null, byte.Parse(((TextBox)s).Text)); m_edit_hex.Validating += (s, a) => { a.Cancel = !uint.TryParse(((TextBox)s).Text, NumberStyles.HexNumber, null, out var dummy); }; m_edit_hex.Validated += (s, a) => { var argb = uint.Parse(((TextBox)s).Text, NumberStyles.HexNumber); unchecked { m_wheel.Colour = Color.FromArgb((int)argb); } }; }