private static int CalculateHeightOfMiddlePartOfScrollBar(ICanHaveHorizontalScrollBar parent, int bgWidth) { int midWidth; if (parent.HorizontalItemCount <= parent.HorizontalMaxVisibleItems) { midWidth = bgWidth - (BarEndsWidth * 2); } else { midWidth = ((parent.HorizontalMaxVisibleItems * bgWidth) / parent.HorizontalItemCount) - BarEndsWidth * 2; } if (midWidth >= bgWidth) { midWidth = bgWidth - (BarEndsWidth * 2); } else if (midWidth <= 0) { midWidth = 0; } return(midWidth); }
public HorizontalScrollBar(IWindow window, ICanHaveHorizontalScrollBar parent, Border border) : base(window, parent) { // scrollbars must be attached to a control Window = window; Parent = parent ?? throw new ArgumentNullException(nameof(parent)); _spriteSheet = Ui.SpriteSheet; _border = border; ZIndex = parent.ZIndex; Visible = true; _leftArrow = new IconButtonUsingOverlay(window, this, Ui.ScrollBar.LeftArrow, Ui.ScrollBar.ArrowNormalOverlay, Ui.ScrollBar.ArrowPressedOverlay, Rectangle.Empty); _leftArrow.SetOnClick(ScrollUp); _rightArrow = new IconButtonUsingOverlay(window, this, Ui.ScrollBar.RightArrow, Ui.ScrollBar.ArrowNormalOverlay, Ui.ScrollBar.ArrowPressedOverlay, Rectangle.Empty); _rightArrow.SetOnClick(ScrollDown); _draggable = new Draggable(MouseButton.Left, 5); _mouseScrollable = new MouseScrollable(parent, ModifierKeys.Shift); _mouseScrollable.OnScroll = ScrollMouse; }