using System; using System.Drawing; namespace Gwen.Control { /// /// Horizontal slider. /// public class HorizontalSlider : Slider { /// /// Initializes a new instance of the class. /// /// Parent control. public HorizontalSlider(Base parent) : base(parent) { m_SliderBar.IsHorizontal = true; } protected override float CalculateValue() { return (float)m_SliderBar.X / (Width - m_SliderBar.Width); } protected override void UpdateBarFromValue() { m_SliderBar.MoveTo((int)((Width - m_SliderBar.Width) * (m_Value)), m_SliderBar.Y); } /// /// Handler invoked on mouse click (left) event. /// /// X coordinate. /// Y coordinate. /// If set to true mouse button is down. protected override void OnMouseClickedLeft(int x, int y, bool down) { m_SliderBar.MoveTo((int)(CanvasPosToLocal(new Point(x, y)).X - m_SliderBar.Width*0.5), m_SliderBar.Y); m_SliderBar.InputMouseClickedLeft(x, y, down); OnMoved(m_SliderBar); } /// /// Lays out the control's interior according to alignment, padding, dock etc. /// /// Skin to use. protected override void Layout(Skin.Base skin) { m_SliderBar.SetSize(15, Height); UpdateBarFromValue(); } /// /// Renders the control using specified skin. /// /// Skin to use. protected override void Render(Skin.Base skin) { skin.DrawSlider(this, true, m_SnapToNotches ? m_NotchCount : 0, m_SliderBar.Width); } } }