diff options
author | Tim E. Real <termtech@rogers.com> | 2010-11-28 21:14:50 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2010-11-28 21:14:50 +0000 |
commit | 8dc8689a009a3702bf4135e628f9d63df8b2ea36 (patch) | |
tree | fea6d4781b06fabfb24255751df95de750099830 /muse2/awl/volslider.cpp | |
parent | b121a3b91f0e288934c4d78161ff1d20f96ff861 (diff) |
Added AWL files
Diffstat (limited to 'muse2/awl/volslider.cpp')
-rw-r--r-- | muse2/awl/volslider.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/muse2/awl/volslider.cpp b/muse2/awl/volslider.cpp new file mode 100644 index 00000000..59f1b8cf --- /dev/null +++ b/muse2/awl/volslider.cpp @@ -0,0 +1,85 @@ +//============================================================================= +// 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 "fastlog.h" +#include "volslider.h" + +namespace Awl { + +//--------------------------------------------------------- +// VolSlider +//--------------------------------------------------------- + +VolSlider::VolSlider(QWidget* parent) + : Slider(parent) + { + setLog(true); + setRange(-60.0f, 10.0f); + setScaleWidth(7); + setLineStep(.8f); + setPageStep(3.0f); + } + +//--------------------------------------------------------- +// mouseDoubleClickEvent +//--------------------------------------------------------- + +void VolSlider::mouseDoubleClickEvent(QMouseEvent* ev) + { + if (ev->button() == Qt::RightButton) + _value = 0.0; + else + _value = _minValue; + valueChange(); + update(); + } + + +//--------------------------------------------------------- +// setValue +//--------------------------------------------------------- + +void VolSlider::setValue(double val) + { + if (_log) { + if (val == 0.0f) + _value = _minValue; + else { + _value = fast_log10(val) * 20.0f; + if (_value < _minValue) + _value = _minValue; + } + } + else + _value = val; + update(); + } + +//--------------------------------------------------------- +// value +//--------------------------------------------------------- + +double VolSlider::value() const + { + return _log ? (_value <= _minValue) ? 0.0f : pow(10.0, _value*0.05f) + : _value; + } + +} |