diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2020-12-29 16:09:43 +0100 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2020-12-29 16:39:54 +0100 |
commit | 645250e1cd8ce9bc1faea599df7a1b05836bfeb8 (patch) | |
tree | c6311afab3900d2dd2aecbfbe1ac348d0e48c428 /plugingui/scrollbar.cc | |
parent | dce64999d3325c5b55499d6ba657066efa48fbff (diff) |
Split UI code into application/plugin UI and UI library.
Diffstat (limited to 'plugingui/scrollbar.cc')
-rw-r--r-- | plugingui/scrollbar.cc | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/plugingui/scrollbar.cc b/plugingui/scrollbar.cc deleted file mode 100644 index 9a17d1d..0000000 --- a/plugingui/scrollbar.cc +++ /dev/null @@ -1,214 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/*************************************************************************** - * scrollbar.cc - * - * Sun Apr 14 12:54:58 CEST 2013 - * Copyright 2013 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of DrumGizmo. - * - * DrumGizmo is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * DrumGizmo is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with DrumGizmo; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include "scrollbar.h" - -#include <hugin.hpp> - -#include "painter.h" - -namespace GUI { - -ScrollBar::ScrollBar(Widget *parent) - : Widget(parent) -{ -} - -void ScrollBar::setRange(int r) -{ - rangeValue = r; - setValue(value()); - redraw(); -} - -int ScrollBar::range() -{ - return rangeValue; -} - -void ScrollBar::setMaximum(int m) -{ - maxValue = m; - if(maxValue < rangeValue) - { - rangeValue = maxValue; - } - setValue(value()); - redraw(); -} - -int ScrollBar::maximum() -{ - return maxValue; -} - -void ScrollBar::addValue(int delta) -{ - setValue(value() + delta); -} - -void ScrollBar::setValue(int value) -{ - if(value > (maxValue - rangeValue)) - { - value = maxValue - rangeValue; - } - - if(value < 0) - { - value = 0; - } - - if(currentValue == value) - { - return; - } - - currentValue = value; - - valueChangeNotifier(value); - - redraw(); -} - -int ScrollBar::value() -{ - return currentValue; -} - -//! Draw an up/down arrow at (x,y) with the bounding box size (w,h) -//! If h is negative the arrow will point down, if positive it will point up. -static void drawArrow(Painter &p, int x, int y, int w, int h) -{ - if(h < 0) - { - y -= h; - } - - p.drawLine(x, y, x + (w / 2), y + h); - p.drawLine(x + (w / 2), y + h, x + w, y); - - ++y; - p.drawLine(x, y, x + (w / 2), y + h); - p.drawLine(x + (w / 2), y + h, x + w, y); -} - -void ScrollBar::repaintEvent(RepaintEvent* repaintEvent) -{ - Painter p(*this); - - p.clear(); - - p.drawImageStretched(0, 0, bg_img, width(), height()); - - p.setColour(Colour(183.0f/255.0f, 219.0f/255.0f, 255.0f/255.0f, 1.0f)); - if(!maxValue) - { - return; - } - - { - int h = height() - 2 * width() - 3; - int offset = width() + 2; - - int y_val1 = (currentValue * h) / maxValue; - int y_val2 = ((currentValue + rangeValue) * h) / maxValue - 1; - - p.drawFilledRectangle(2, y_val1 + offset, width() - 1, y_val2 + offset); - } - - p.drawLine(0, 0, 0, height()); - - drawArrow(p, width()/4, width()/4, width()/2, -1 * (width()/3)); - p.drawLine(0, width(), width(), width()); - - drawArrow(p, width()/4, height() - width() + width()/4, width()/2, width()/3); - p.drawLine(0, height() - width(), width(), height() - width()); -} - -void ScrollBar::scrollEvent(ScrollEvent* scrollEvent) -{ - setValue(value() + scrollEvent->delta); -} - -void ScrollBar::mouseMoveEvent(MouseMoveEvent* mouseMoveEvent) -{ - if(!dragging) - { - return; - } - - float delta = yOffset - mouseMoveEvent->y; - - int h = height() - 2 * width() - 3; - delta /= (float)h / (float)maxValue; - - int newval = valueOffset - delta; - if(newval != value()) - { - setValue(newval); - } -} - -void ScrollBar::buttonEvent(ButtonEvent* buttonEvent) -{ - // Ignore everything except left clicks. - if(buttonEvent->button != MouseButton::left) - { - return; - } - - if((buttonEvent->y < (int)width()) && buttonEvent->y > 0) - { - if(buttonEvent->direction == Direction::down) - { - addValue(-1); - } - - return; - } - - if((buttonEvent->y > ((int)height() - (int)width())) && - (buttonEvent->y < (int)height())) - { - if(buttonEvent->direction == Direction::down) - { - addValue(1); - } - - return; - } - - if(buttonEvent->direction == Direction::down) - { - yOffset = buttonEvent->y; - valueOffset = value(); - } - - dragging = (buttonEvent->direction == Direction::down); -} - -} // GUI:: |