Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public virtual void DrawBackground(Rectangle rect, bool disabled, bool pressed, bool hover, bool highlighted)
 {
     ButtonWidget.DrawBackground("button", rect, disabled, pressed, hover, highlighted);
 }