annotate widgets/Fader.h @ 1025:c02de0e34233 spectrogram-minor-refactor

Make paint method do its own timing and abandon if it's taking too long (still needs some work on queueing correct repaints of the remainder)
author Chris Cannam
date Mon, 25 Jan 2016 16:16:21 +0000
parents 1fe7951a61e8
children a18e78b9c78b
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@584 37 #include "base/Debug.h"
Chris@584 38
Chris@0 39 class Fader : public QWidget
Chris@0 40 {
Chris@0 41 Q_OBJECT
Chris@0 42
Chris@0 43 public:
Chris@0 44 Fader(QWidget *parent, bool withoutKnob = false);
Chris@0 45 ~Fader();
Chris@0 46
Chris@0 47 void setValue(float newValue);
Chris@0 48 float getValue();
Chris@0 49
Chris@0 50 void setPeakLeft(float);
Chris@0 51 float getPeakLeft() { return m_peakLeft; }
Chris@0 52
Chris@0 53 void setPeakRight(float);
Chris@0 54 float getPeakRight() { return m_peakRight; }
Chris@0 55
Chris@189 56 signals:
Chris@189 57 void valueChanged(float); // 0.0 -> 1.0
Chris@189 58
Chris@189 59 void mouseEntered();
Chris@189 60 void mouseLeft();
Chris@189 61
Chris@189 62 protected:
Chris@0 63 virtual void mousePressEvent(QMouseEvent *ev);
Chris@0 64 virtual void mouseDoubleClickEvent(QMouseEvent *ev);
Chris@0 65 virtual void mouseMoveEvent(QMouseEvent *ev);
Chris@132 66 virtual void mouseReleaseEvent(QMouseEvent *ev);
Chris@0 67 virtual void wheelEvent( QWheelEvent *ev );
Chris@0 68 virtual void paintEvent(QPaintEvent *ev);
Chris@189 69 virtual void enterEvent(QEvent *);
Chris@189 70 virtual void leaveEvent(QEvent *);
Chris@0 71
Chris@187 72 int getMaxX() const;
Chris@187 73
Chris@0 74 bool m_withoutKnob;
Chris@0 75 float m_value;
Chris@0 76 float m_peakLeft;
Chris@0 77 float m_peakRight;
Chris@0 78
Chris@187 79 bool m_mousePressed;
Chris@187 80 int m_mousePressX;
Chris@187 81 float m_mousePressValue;
Chris@187 82
Chris@0 83 QPixmap m_back;
Chris@0 84 QPixmap m_leds;
Chris@0 85 QPixmap m_knob;
Chris@0 86 QPixmap m_clip;
Chris@0 87 };
Chris@0 88
Chris@0 89 #endif