File indexing completed on 2024-04-28 04:52:04

0001 /*
0002 SPDX-FileCopyrightText: 2016 Jean-Baptiste Mardelle <jb@kdenlive.org>
0003 This file is part of Kdenlive. See www.kdenlive.org.
0004 
0005 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 #pragma once
0009 
0010 #include "scopewidget.h"
0011 #include <QWidget>
0012 #include <memory>
0013 
0014 class MonitorAudioLevel : public ScopeWidget
0015 {
0016     Q_OBJECT
0017 public:
0018     explicit MonitorAudioLevel(int height, QWidget *parent = nullptr);
0019     ~MonitorAudioLevel() override;
0020     void refreshPixmap();
0021     int audioChannels;
0022     bool isValid;
0023     void setVisibility(bool enable);
0024 
0025 protected:
0026     void paintEvent(QPaintEvent *) override;
0027     void resizeEvent(QResizeEvent *event) override;
0028 
0029 private:
0030     int m_height;
0031     QPixmap m_pixmap;
0032     QVector<double> m_peaks;
0033     int m_maxDb;
0034     QVector<double> m_values;
0035     int m_channelHeight;
0036     int m_channelDistance;
0037     int m_channelFillHeight;
0038     void drawBackground(int channels = 2);
0039     void refreshScope(const QSize &size, bool full) override;
0040 
0041 public Q_SLOTS:
0042     void setAudioValues(const QVector<double> &values);
0043 
0044 Q_SIGNALS:
0045     void audioLevelsAvailable(const QVector<double>& levels);
0046 };