annotate widgets/Fader.h @ 1511:a473b73fb045 time-frequency-boxes

Introduce time-frequency box layer
author Chris Cannam
date Thu, 19 Sep 2019 15:18:28 +0100
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