#region Imports using DPumpHydr.WinFrmUI.RLT.Util; using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Text; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Windows.Forms; #endregion namespace DPumpHydr.WinFrmUI.RLT.Controls { #region AloneCheckBox [DefaultEvent("CheckedChanged")] public class AloneCheckBox : Control { public delegate void CheckedChangedEventHandler(object sender, EventArgs e); [DebuggerBrowsable(DebuggerBrowsableState.Never), CompilerGenerated] private AloneCheckBox.CheckedChangedEventHandler CheckedChangedEvent; private bool _Checked; private bool _EnabledCalc; private Graphics G; private readonly string B64Enabled; private readonly string B64Disabled; public event AloneCheckBox.CheckedChangedEventHandler CheckedChanged { [CompilerGenerated] add { AloneCheckBox.CheckedChangedEventHandler checkedChangedEventHandler = CheckedChangedEvent; AloneCheckBox.CheckedChangedEventHandler checkedChangedEventHandler2; do { checkedChangedEventHandler2 = checkedChangedEventHandler; AloneCheckBox.CheckedChangedEventHandler value2 = (AloneCheckBox.CheckedChangedEventHandler)Delegate.Combine(checkedChangedEventHandler2, value); checkedChangedEventHandler = Interlocked.CompareExchange(ref CheckedChangedEvent, value2, checkedChangedEventHandler2); } while (checkedChangedEventHandler != checkedChangedEventHandler2); } [CompilerGenerated] remove { AloneCheckBox.CheckedChangedEventHandler checkedChangedEventHandler = CheckedChangedEvent; AloneCheckBox.CheckedChangedEventHandler checkedChangedEventHandler2; do { checkedChangedEventHandler2 = checkedChangedEventHandler; AloneCheckBox.CheckedChangedEventHandler value2 = (AloneCheckBox.CheckedChangedEventHandler)Delegate.Remove(checkedChangedEventHandler2, value); checkedChangedEventHandler = Interlocked.CompareExchange(ref CheckedChangedEvent, value2, checkedChangedEventHandler2); } while (checkedChangedEventHandler != checkedChangedEventHandler2); } } public bool Checked { get => _Checked; set { _Checked = value; CheckedChangedEvent?.Invoke(this, null); Invalidate(); } } public new bool Enabled { get => EnabledCalc; set { _EnabledCalc = value; bool enabled = Enabled; if (enabled) { Cursor = Cursors.Hand; } else { Cursor = Cursors.Default; } Invalidate(); } } [DisplayName("Enabled")] public bool EnabledCalc { get => _EnabledCalc; set { Enabled = value; Invalidate(); } } public AloneCheckBox() { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true); B64Enabled = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA00lEQVQ4T6WTwQ2CMBSG30/07Ci6gY7gxZoIiYADuAIrsIDpQQ/cHMERZBOuXHimDSWALYL01EO/L//724JmLszk6S+BCOIExFsmL50sEH4kAZxVciYuJgnacD16Plpgg8tFtYMILntQdSXiZ3aXqa1UF/yUsoDw4wKglQaZZPa4RW3JEKzO4RjEbyJaN1BL8gvWgsMp3ADeq0lRJ2FimLZNYWpmFbudUJdolXTLyG2wTmDODUiccEfgSDIIfwmMxAMStS+XHPZn7l/z6Ifk+nSzBR8zi2d9JmVXSgAAAABJRU5ErkJggg=="; B64Disabled = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA1UlEQVQ4T6WTzQ2CQBCF56EnLpaiXvUAJBRgB2oFtkALdEAJnoVEMIGzdEIFjNkFN4DLn+xpD/N9efMWQAsPFvL0lyBMUg8MiwzyZwuiJAuI6CyTMxezBC24EuSTBTp4xaaN6JWdqKQbge6udfB1pfbBjrMvEMZZAdCm3ilw7eO1KRmCxRyiOH0TsFUQs5KMwVLweKY7ALFKUZUTECD6qdquCxM7i9jNhLJEraQ5xZzrYJngO9crGYBbAm2SEfhHoCQGeeK+Ls1Ld+fuM0/+kPp+usWCD10idEOGa4QuAAAAAElFTkSuQmCC"; DoubleBuffered = true; Enabled = true; ForeColor = AloneLibrary.ColorFromHex("#7C858E"); BackColor = Color.Transparent; Size = new(118, 17); } protected override void OnPaint(PaintEventArgs e) { G = e.Graphics; G.SmoothingMode = SmoothingMode.HighQuality; G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; base.OnPaint(e); //G.Clear(BackColor); bool enabled = Enabled; if (enabled) { using (SolidBrush solidBrush = new(AloneLibrary.ColorFromHex("#F3F4F7"))) { using Pen pen = new(AloneLibrary.ColorFromHex("#D0D5D9")); using SolidBrush solidBrush2 = new(ForeColor); using Font font = new("Segoe UI", 9f); G.FillPath(solidBrush, AloneLibrary.RoundRect(new Rectangle(0, 0, 16, 16), 3, AloneLibrary.RoundingStyle.All)); G.DrawPath(pen, AloneLibrary.RoundRect(new Rectangle(0, 0, 16, 16), 3, AloneLibrary.RoundingStyle.All)); G.DrawString(Text, font, solidBrush2, new Point(25, 0)); } bool @checked = Checked; if (@checked) { using Image image = Image.FromStream(new MemoryStream(Convert.FromBase64String(B64Enabled))); G.DrawImage(image, new Rectangle(3, 3, 11, 11)); } } else { using (SolidBrush solidBrush3 = new(AloneLibrary.ColorFromHex("#F5F5F8"))) { using Pen pen2 = new(AloneLibrary.ColorFromHex("#E1E1E2")); using SolidBrush solidBrush4 = new(AloneLibrary.ColorFromHex("#D0D3D7")); using Font font2 = new("Segoe UI", 9f); G.FillPath(solidBrush3, AloneLibrary.RoundRect(new Rectangle(0, 0, 16, 16), 3, AloneLibrary.RoundingStyle.All)); G.DrawPath(pen2, AloneLibrary.RoundRect(new Rectangle(0, 0, 16, 16), 3, AloneLibrary.RoundingStyle.All)); G.DrawString(Text, font2, solidBrush4, new Point(25, 0)); } bool checked2 = Checked; if (checked2) { using Image image2 = Image.FromStream(new MemoryStream(Convert.FromBase64String(B64Disabled))); G.DrawImage(image2, new Rectangle(3, 3, 11, 11)); } } } protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); bool enabled = Enabled; if (enabled) { Checked = !Checked; //CheckedChangedEvent?.Invoke(this, e); } } protected override void OnResize(EventArgs e) { base.OnResize(e); base.Size = new(base.Width, 17); } } #endregion }