Files

188 lines
4.6 KiB
C#
Raw Permalink Normal View History

2026-08-27 11:23:13 -06:00
// Decompiled with JetBrains decompiler
// Type: CustomControls.CustomSwitch
// Assembly: Raton, Version=0.4.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 36C4E416-7F8D-4D23-930F-B5CCB0D810E7
// Assembly location: C:\Users\user\Desktop\v3.8.0 Deluxe Plugins (v4.0.0) cracked\Raton.exe
using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Threading.Tasks;
using System.Windows.Forms;
#nullable disable
namespace CustomControls;
public class CustomSwitch : CheckBox
{
private Color onBackColor = ColorTranslator.FromHtml("#69f58e");
private Color onToggleColor = Color.WhiteSmoke;
private Color offBackColor = Color.Gray;
private Color offToggleColor = Color.Gainsboro;
private bool solidStyle = true;
private float togglePosition;
private bool isChecked;
[Category("Custom")]
public Color OnBackColor
{
get => this.onBackColor;
set
{
this.onBackColor = value;
this.Invalidate();
}
}
[Category("Custom")]
public Color OnToggleColor
{
get => this.onToggleColor;
set
{
this.onToggleColor = value;
this.Invalidate();
}
}
[Category("Custom")]
public Color OffBackColor
{
get => this.offBackColor;
set
{
this.offBackColor = value;
this.Invalidate();
}
}
[Category("Custom")]
public Color OffToggleColor
{
get => this.offToggleColor;
set
{
this.offToggleColor = value;
this.Invalidate();
}
}
[Browsable(false)]
public override string Text
{
get => base.Text;
set
{
}
}
[Category("Custom")]
[DefaultValue(true)]
public bool SolidStyle
{
get => this.solidStyle;
set
{
this.solidStyle = value;
this.Invalidate();
}
}
public new event EventHandler CheckedChanged;
[Category("Custom")]
[DefaultValue(false)]
public new bool Checked
{
get => this.isChecked;
set
{
if (this.isChecked == value)
return;
this.isChecked = value;
this.AnimateToggle();
this.Invalidate();
EventHandler checkedChanged = this.CheckedChanged;
if (checkedChanged == null)
return;
checkedChanged((object) this, EventArgs.Empty);
}
}
public CustomSwitch()
{
this.MinimumSize = new Size(45, 22);
this.togglePosition = 2f;
this.isChecked = false;
}
private GraphicsPath GetFigurePath()
{
int num = this.Height - 1;
Rectangle rect1 = new Rectangle(0, 0, num, num);
Rectangle rect2 = new Rectangle(this.Width - num - 2, 0, num, num);
GraphicsPath figurePath = new GraphicsPath();
figurePath.StartFigure();
figurePath.AddArc(rect1, 90f, 180f);
figurePath.AddArc(rect2, 270f, 180f);
figurePath.CloseFigure();
return figurePath;
}
protected override void OnPaint(PaintEventArgs pevent)
{
int num = this.Height - 5;
pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
pevent.Graphics.Clear(this.Parent.BackColor);
bool flag = !this.Enabled;
Color color1;
Color color2;
if (this.isChecked)
{
color1 = this.onBackColor;
color2 = this.onToggleColor;
}
else
{
color1 = this.offBackColor;
color2 = this.offToggleColor;
}
if (flag)
{
color1 = this.Darken(color1);
color2 = this.Darken(color2);
}
if (this.solidStyle)
pevent.Graphics.FillPath((Brush) new SolidBrush(color1), this.GetFigurePath());
else
pevent.Graphics.DrawPath(new Pen(color1, 2f), this.GetFigurePath());
pevent.Graphics.FillEllipse((Brush) new SolidBrush(color2), new Rectangle((int) this.togglePosition, 2, num, num));
}
private Color Darken(Color color, float factor = 0.35f)
{
return Color.FromArgb((int) color.A, (int) ((double) color.R * (double) factor), (int) ((double) color.G * (double) factor), (int) ((double) color.B * (double) factor));
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
this.Checked = !this.Checked;
}
private async void AnimateToggle()
{
CustomSwitch customSwitch = this;
int num = customSwitch.Checked ? 2 : customSwitch.Width - customSwitch.Height + 1;
int end = customSwitch.Checked ? customSwitch.Width - customSwitch.Height + 1 : 2;
int step = end > num ? 2 : -2;
for (int i = num; (step > 0 ? (i <= end ? 1 : 0) : (i >= end ? 1 : 0)) != 0; i += step)
{
customSwitch.togglePosition = (float) i;
customSwitch.Invalidate();
await Task.Delay(5);
}
}
}