diff options
Diffstat (limited to 'attic/muse2-oom/muse2/awl/drawbar.cpp')
-rw-r--r-- | attic/muse2-oom/muse2/awl/drawbar.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/attic/muse2-oom/muse2/awl/drawbar.cpp b/attic/muse2-oom/muse2/awl/drawbar.cpp new file mode 100644 index 00000000..a82ed248 --- /dev/null +++ b/attic/muse2-oom/muse2/awl/drawbar.cpp @@ -0,0 +1,132 @@ +//============================================================================= +// Awl +// Audio Widget Library +// $Id:$ +// +// Copyright (C) 2007 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 "drawbar.h" + +#include <QPainter> + +namespace Awl { + +#if 0 + } +#endif + +//--------------------------------------------------------- +// Drawbar +//--------------------------------------------------------- + +Drawbar::Drawbar(QWidget* parent) + : Slider(parent) + { + _sliderColor = Qt::darkGray; + setOrientation(Qt::Vertical); + setInvertedAppearance(true); + setRange(0.0, 8.0); + setLineStep(1.0); + setPageStep(1.0); + setInteger(true); + } + +Drawbar::~Drawbar() + { + } + +//--------------------------------------------------------- +// setSliderColor +//--------------------------------------------------------- + +void Drawbar::setSliderColor(const QColor& c) + { + if (c != _sliderColor) { + _sliderColor = c; + update(); + } + } + +//--------------------------------------------------------- +// paint +//--------------------------------------------------------- + +void Drawbar::paintEvent(QPaintEvent*) + { + int h = height(); + int w = width(); + + int kh = w * 2; // knob height + int kw = w; + int pixel = h - kh; + int ppos = int(pixel * value() / 8.0); + + QPainter p(this); + + QColor sc(Qt::darkGray); + QColor svc(Qt::gray); + + p.setBrush(svc); + + //--------------------------------------------------- + // draw scale + //--------------------------------------------------- + + int sx = (w + 9) / 10; + int sw = w - 2 * sx; + p.fillRect(sx, 0, sw, ppos, sc); + QPen pen(Qt::white); + int lw = 2; + pen.setWidth(lw); + p.setPen(pen); + int sx1 = sx + lw/2; + p.drawLine(sx1, 0, sx1, ppos); + int sx2 = sx + sw - lw/2; + p.drawLine(sx2, 0, sx2, ppos); + + //--------------------------------------------------- + // draw numbers + //--------------------------------------------------- + + p.save(); + p.setClipRect(QRect(sx, 0, sw, ppos)); + QFont f = p.font(); + f.setPixelSize(8); + + int ch = pixel / 8; + QString num("%1"); + for (int i = 0; i < 8; ++i) { + p.drawText(0, i * pixel / 8 - (pixel - ppos), w, ch, Qt::AlignCenter, num.arg(8-i)); + } + p.restore(); + + //--------------------------------------------------- + // draw slider + //--------------------------------------------------- + + p.fillRect(0, ppos, kw, kh, _sliderColor); + + pen.setWidth(1); + pen.setColor(Qt::black); + p.setPen(pen); + + int y1 = ppos + kh / 5 * 2; + int y2 = ppos + kh / 5 * 3; + p.drawLine(0, y1, kw, y1); + p.drawLine(0, y2, kw, y2); + } +} + |