summaryrefslogtreecommitdiff
path: root/attic/muse2-oom/muse2/awl/slider.cpp
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-09-15 12:14:55 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-09-15 12:14:55 +0000
commitb0546e5e7f7044019892543c6c82029db8d564a7 (patch)
tree1b96a6260900f3fbf3513fb48a5a72aa89052dc8 /attic/muse2-oom/muse2/awl/slider.cpp
parent583c73d1a07154d3d2672d65d8cce6495f490454 (diff)
moved attic to a branch of it's own
Diffstat (limited to 'attic/muse2-oom/muse2/awl/slider.cpp')
-rw-r--r--attic/muse2-oom/muse2/awl/slider.cpp254
1 files changed, 0 insertions, 254 deletions
diff --git a/attic/muse2-oom/muse2/awl/slider.cpp b/attic/muse2-oom/muse2/awl/slider.cpp
deleted file mode 100644
index 00f3d925..00000000
--- a/attic/muse2-oom/muse2/awl/slider.cpp
+++ /dev/null
@@ -1,254 +0,0 @@
-//=============================================================================
-// Awl
-// Audio Widget Library
-// $Id:$
-//
-// Copyright (C) 2002-2006 by Werner Schweer and others
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2.
-//
-// This program 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 General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//=============================================================================
-
-#include "slider.h"
-
-#include <QMouseEvent>
-#include <QPainter>
-
-namespace Awl {
-
-//---------------------------------------------------------
-// Slider
-//---------------------------------------------------------
-
-Slider::Slider(QWidget* parent)
- : AbstractSlider(parent), orient(Qt::Vertical), _sliderSize(14,14)
- {
- init();
- }
-
-//---------------------------------------------------------
-// Slider
-//---------------------------------------------------------
-
-Slider::Slider(Qt::Orientation orientation, QWidget* parent)
- : AbstractSlider(parent), orient(orientation), _sliderSize(14,14)
- {
- init();
- }
-
-//---------------------------------------------------------
-// Slider
-//---------------------------------------------------------
-
-void Slider::init()
- {
- if (orient == Qt::Vertical)
- setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
- else
- setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
- dragMode = false;
- points = 0;
- updateKnob();
- }
-
-//---------------------------------------------------------
-// sizeHint
-//---------------------------------------------------------
-
-QSize Slider::sizeHint() const
- {
- int w = _sliderSize.width() + scaleWidth();
- return orient == Qt::Vertical ? QSize(w, 200) : QSize(200, w);
- }
-
-//---------------------------------------------------------
-// Slider
-//---------------------------------------------------------
-
-Slider::~Slider()
- {
- if (points)
- delete points;
- }
-
-//---------------------------------------------------------
-// setOrientation
-//---------------------------------------------------------
-
-void Slider::setOrientation(Qt::Orientation o)
- {
- orient = o;
- updateKnob();
- update();
- }
-
-//---------------------------------------------------------
-// updateKnob
-//---------------------------------------------------------
-
-void Slider::updateKnob()
- {
- if (points)
- delete points;
- points = new QPainterPath;
- int kh = _sliderSize.height();
- int kw = _sliderSize.width();
- points->moveTo(0.0, 0.0);
- if (orient == Qt::Vertical) {
- int kh = _sliderSize.height();
- int kh2 = kh / 2;
- points->lineTo(kw, -kh2);
- points->lineTo(kw, kh2);
- }
- else {
- int kw2 = kw/2;
- points->lineTo(-kw2, kh);
- points->lineTo(kw2, kh);
- }
- points->lineTo(0.0, 0.0);
- }
-
-//---------------------------------------------------------
-// setInvertedAppearance
-//---------------------------------------------------------
-
-void Slider::setInvertedAppearance(bool val)
- {
- AbstractSlider::setInvertedAppearance(val);
- update();
- }
-
-//---------------------------------------------------------
-// setSliderSize
-//---------------------------------------------------------
-
-void Slider::setSliderSize(const QSize& s)
- {
- _sliderSize = s;
- update();
- }
-
-//---------------------------------------------------------
-// mousePressEvent
-//---------------------------------------------------------
-
-void Slider::mousePressEvent(QMouseEvent* ev)
- {
- startDrag = ev->pos();
-// if (points->boundingRect().toRect().contains(startDrag)) {
- emit sliderPressed(_id);
- dragMode = true;
- int pixel = (orient == Qt::Vertical) ? height() - _sliderSize.height() : width() - _sliderSize.width();
- dragppos = int(pixel * (_value - minValue()) / (maxValue() - minValue()));
- if (_invert)
- dragppos = pixel - dragppos;
-// }
- }
-
-//---------------------------------------------------------
-// mouseReleaseEvent
-//---------------------------------------------------------
-
-void Slider::mouseReleaseEvent(QMouseEvent*)
- {
- if (dragMode) {
- emit sliderReleased(_id);
- dragMode = false;
- }
- }
-
-//---------------------------------------------------------
-// mouseMoveEvent
-//---------------------------------------------------------
-
-void Slider::mouseMoveEvent(QMouseEvent* ev)
- {
- if (!dragMode)
- return;
- int delta = startDrag.y() - ev->y();
-
-// if (_invert)
-// delta = -delta;
- if (orient == Qt::Horizontal)
- delta = -delta;
- int ppos = dragppos + delta;
- if (ppos < 0)
- ppos = 0;
-
- int pixel = (orient == Qt::Vertical) ? height() - _sliderSize.height() : width() - _sliderSize.width();
- if (ppos > pixel)
- ppos = pixel;
- int pos = _invert ? (pixel - ppos) : ppos;
- _value = (pos * (maxValue() - minValue()) / pixel) + minValue() - 0.000001;
- update();
- valueChange();
- }
-
-//---------------------------------------------------------
-// paint
-// r - phys coord system
-//---------------------------------------------------------
-
-void Slider::paintEvent(QPaintEvent* ev)
- {
- int h = height();
- int w = width();
- int kw = _sliderSize.width();
- int kh = _sliderSize.height();
- int pixel = (orient == Qt::Vertical) ? h - kh : w - kw;
- double range = maxValue() - minValue();
- int ppos = int(pixel * (_value - minValue()) / range);
- if ((orient == Qt::Vertical && _invert) || (orient == Qt::Horizontal && !_invert))
- ppos = pixel - ppos;
-
- QRect rr(ev->rect());
- QPainter p(this);
-
- QColor sc(isEnabled() ? _scaleColor : Qt::gray);
- QColor svc(isEnabled() ? _scaleValueColor : Qt::gray);
- p.setBrush(svc);
-
- int kh2 = kh/2;
-
- //---------------------------------------------------
- // draw scale
- //---------------------------------------------------
-
- if (orient == Qt::Vertical) {
- int xm = (w - _scaleWidth - _sliderSize.height()) / 2;
- int y1 = kh2;
- int y2 = h - (ppos + y1);
- int y3 = h - y1;
- p.fillRect(xm, y1, _scaleWidth, y2-y1, _invert ? svc : sc);
- p.fillRect(xm, y2, _scaleWidth, y3-y2, _invert ? sc : svc);
- p.translate(QPointF(xm + _scaleWidth/2, y2));
- }
- else {
- int ym = (h - _scaleWidth - _sliderSize.height()) / 2;
- int x1 = kh2;
- int x2 = w - (ppos + x1);
- int x3 = w - x1;
- p.fillRect(x1, ym, x2-x1, _scaleWidth, _invert ? sc : svc);
- p.fillRect(x2, ym, x3-x2, _scaleWidth, _invert ? svc : sc);
- p.translate(QPointF(x2, ym + _scaleWidth/2));
- }
-
- //---------------------------------------------------
- // draw slider
- //---------------------------------------------------
-
- p.setRenderHint(QPainter::Antialiasing, true);
- p.setPen(QPen(svc, 0));
- p.drawPath(*points);
- }
-}
-