annotate widgets/Fader.h @ 1363:bbeffb29bf09

Fix inconsistency between centre frame actually set and centre frame notified as set, which caused the start frame location to creep out of place gradually as you page through
author Chris Cannam
date Tue, 30 Oct 2018 14:00:20 +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