annotate widgets/Fader.h @ 1553:76e4302a3fc2

Fix note numbering - ensure stable across whole track (as it used to be, but without scanning all notes in paint in order to do that)
author Chris Cannam
date Fri, 22 Nov 2019 14:12:50 +0000
parents a18e78b9c78b
children
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@1406 63 void mousePressEvent(QMouseEvent *ev) override;
Chris@1406 64 void mouseDoubleClickEvent(QMouseEvent *ev) override;
Chris@1406 65 void mouseMoveEvent(QMouseEvent *ev) override;
Chris@1406 66 void mouseReleaseEvent(QMouseEvent *ev) override;
Chris@1406 67 void wheelEvent( QWheelEvent *ev ) override;
Chris@1406 68 void paintEvent(QPaintEvent *ev) override;
Chris@1406 69 void enterEvent(QEvent *) override;
Chris@1406 70 void leaveEvent(QEvent *) override;
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