annotate widgets/Fader.h @ 378:22b72f0f6a4e

* More work to abstract out interactive components used in the data library, so that it does not need to depend on QtGui.
author Chris Cannam
date Fri, 14 Mar 2008 17:14:21 +0000
parents 8c00a4d4fc69
children 1fe7951a61e8
rev   line source
Chris@58 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@0 2
Chris@0 3 /*
Chris@59 4 Sonic Visualiser
Chris@59 5 An audio file viewer and annotation editor.
Chris@59 6 Centre for Digital Music, Queen Mary, University of London.
Chris@0 7
Chris@59 8 This program is free software; you can redistribute it and/or
Chris@59 9 modify it under the terms of the GNU General Public License as
Chris@59 10 published by the Free Software Foundation; either version 2 of the
Chris@59 11 License, or (at your option) any later version. See the file
Chris@59 12 COPYING included with this distribution for more information.
Chris@0 13 */
Chris@0 14
Chris@0 15 #ifndef FADER_H
Chris@0 16 #define FADER_H
Chris@0 17
Chris@0 18 /**
Chris@0 19 * Horizontal audio fader and meter widget.
Chris@0 20 * Based on the vertical fader and meter widget from:
Chris@0 21 *
Chris@0 22 * Hydrogen
Chris@0 23 * Copyright(c) 2002-2005 by Alex >Comix< Cominu [comix@users.sourceforge.net]
Chris@0 24 * http://www.hydrogen-music.org
Chris@0 25 */
Chris@0 26
Chris@0 27
Chris@0 28 #include <string>
Chris@0 29 #include <iostream>
Chris@0 30
Chris@0 31 #include <QWidget>
Chris@0 32 #include <QPixmap>
Chris@0 33 #include <QMouseEvent>
Chris@0 34 #include <QWheelEvent>
Chris@0 35 #include <QPaintEvent>
Chris@0 36
Chris@0 37 class Fader : public QWidget
Chris@0 38 {
Chris@0 39 Q_OBJECT
Chris@0 40
Chris@0 41 public:
Chris@0 42 Fader(QWidget *parent, bool withoutKnob = false);
Chris@0 43 ~Fader();
Chris@0 44
Chris@0 45 void setValue(float newValue);
Chris@0 46 float getValue();
Chris@0 47
Chris@0 48 void setPeakLeft(float);
Chris@0 49 float getPeakLeft() { return m_peakLeft; }
Chris@0 50
Chris@0 51 void setPeakRight(float);
Chris@0 52 float getPeakRight() { return m_peakRight; }
Chris@0 53
Chris@189 54 signals:
Chris@189 55 void valueChanged(float); // 0.0 -> 1.0
Chris@189 56
Chris@189 57 void mouseEntered();
Chris@189 58 void mouseLeft();
Chris@189 59
Chris@189 60 protected:
Chris@0 61 virtual void mousePressEvent(QMouseEvent *ev);
Chris@0 62 virtual void mouseDoubleClickEvent(QMouseEvent *ev);
Chris@0 63 virtual void mouseMoveEvent(QMouseEvent *ev);
Chris@132 64 virtual void mouseReleaseEvent(QMouseEvent *ev);
Chris@0 65 virtual void wheelEvent( QWheelEvent *ev );
Chris@0 66 virtual void paintEvent(QPaintEvent *ev);
Chris@189 67 virtual void enterEvent(QEvent *);
Chris@189 68 virtual void leaveEvent(QEvent *);
Chris@0 69
Chris@187 70 int getMaxX() const;
Chris@187 71
Chris@0 72 bool m_withoutKnob;
Chris@0 73 float m_value;
Chris@0 74 float m_peakLeft;
Chris@0 75 float m_peakRight;
Chris@0 76
Chris@187 77 bool m_mousePressed;
Chris@187 78 int m_mousePressX;
Chris@187 79 float m_mousePressValue;
Chris@187 80
Chris@0 81 QPixmap m_back;
Chris@0 82 QPixmap m_leds;
Chris@0 83 QPixmap m_knob;
Chris@0 84 QPixmap m_clip;
Chris@0 85 };
Chris@0 86
Chris@0 87 #endif