public override void Draw() { if (!IsVisible()) { return; } var tr = ThumbRect; var rb = RenderBounds; var trackWidth = rb.Width; var trackOrigin = rb.X; var trackRect = new Rectangle(trackOrigin - 1, rb.Y + (rb.Height - TrackHeight) / 2, trackWidth + 2, TrackHeight); // Tickmarks (hacked until we have real art) for (int i = 0; i < Ticks; i++) { var tickRect = new Rectangle(trackOrigin - 1 + (int)(i * trackWidth * 1f / (Ticks - 1)), rb.Y + rb.Height / 2, 2, rb.Height / 2); WidgetUtils.DrawPanel("slider-tick", tickRect); } // Track WidgetUtils.DrawPanel("slider-track", trackRect); // Thumb var thumbHover = Widget.MouseOverWidget == this && tr.Contains(Viewport.LastMousePos); ButtonWidget.DrawBackground("scrollthumb", tr, IsDisabled(), isMoving, thumbHover); }
public override void DrawOuter() { if (!IsVisible()) { return; } var rb = RenderBounds; var ScrollbarHeight = rb.Height - 2 * ScrollbarWidth; var thumbHeight = ContentHeight == 0 ? 0 : Math.Max(MinimumThumbSize, (int)(ScrollbarHeight * Math.Min(rb.Height * 1f / ContentHeight, 1f))); var thumbOrigin = rb.Y + ScrollbarWidth + (int)((ScrollbarHeight - thumbHeight) * (-1f * ListOffset / (ContentHeight - rb.Height))); if (thumbHeight == ScrollbarHeight) { thumbHeight = 0; } backgroundRect = new Rectangle(rb.X, rb.Y, rb.Width - ScrollbarWidth + 1, rb.Height); upButtonRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Y, ScrollbarWidth, ScrollbarWidth); downButtonRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Bottom - ScrollbarWidth, ScrollbarWidth, ScrollbarWidth); scrollbarRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Y + ScrollbarWidth - 1, ScrollbarWidth, ScrollbarHeight + 2); thumbRect = new Rectangle(rb.Right - ScrollbarWidth, thumbOrigin, ScrollbarWidth, thumbHeight); var upHover = Ui.MouseOverWidget == this && upButtonRect.Contains(Viewport.LastMousePos); var upDisabled = thumbHeight == 0 || ListOffset >= 0; var downHover = Ui.MouseOverWidget == this && downButtonRect.Contains(Viewport.LastMousePos); var downDisabled = thumbHeight == 0 || ListOffset <= Bounds.Height - ContentHeight; var thumbHover = Ui.MouseOverWidget == this && thumbRect.Contains(Viewport.LastMousePos); WidgetUtils.DrawPanel(Background, backgroundRect); WidgetUtils.DrawPanel("scrollpanel-bg", scrollbarRect); ButtonWidget.DrawBackground("button", upButtonRect, upDisabled, UpPressed, upHover, false); ButtonWidget.DrawBackground("button", downButtonRect, downDisabled, DownPressed, downHover, false); if (thumbHeight > 0) { ButtonWidget.DrawBackground("scrollthumb", thumbRect, false, HasMouseFocus && thumbHover, thumbHover, false); } var upOffset = !UpPressed || upDisabled ? 4 : 4 + ButtonDepth; var downOffset = !DownPressed || downDisabled ? 4 : 4 + ButtonDepth; WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", UpPressed || upDisabled ? "up_pressed" : "up_arrow"), new float2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset)); WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", DownPressed || downDisabled ? "down_pressed" : "down_arrow"), new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset)); Game.Renderer.EnableScissor(backgroundRect.InflateBy(-1, -1, -1, -1)); foreach (var child in Children) { child.DrawOuter(); } Game.Renderer.DisableScissor(); }
public override void Draw() { if (!IsVisible()) { return; } Value = GetValue(); var tr = ThumbRect; var rb = RenderBounds; var trackWidth = rb.Width - rb.Height; var trackOrigin = rb.X + rb.Height / 2; var trackRect = new Rectangle(trackOrigin - 1, rb.Y + (rb.Height - TrackHeight) / 2, trackWidth + 2, TrackHeight); // Tickmarks var tick = ChromeProvider.GetImage("slider", "tick"); for (var i = 0; i < Ticks; i++) { var tickPos = new float2( trackOrigin + (i * (trackRect.Width - (int)tick.size.X) / (Ticks - 1)) - tick.size.X / 2, trackRect.Bottom); WidgetUtils.DrawRGBA(tick, tickPos); } // Track WidgetUtils.DrawPanel(Track, trackRect); // Thumb var thumbHover = Ui.MouseOverWidget == this && tr.Contains(Viewport.LastMousePos); ButtonWidget.DrawBackground(Thumb, tr, IsDisabled(), isMoving, thumbHover, false); }
public virtual void DrawBackground(Rectangle rect, bool disabled, bool pressed, bool hover, bool highlighted) { ButtonWidget.DrawBackground("button", rect, disabled, pressed, hover, highlighted); }