File indexing completed on 2024-04-21 04:51:46

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 "sharedframe.h"
0012 
0013 #include <QPixmap>
0014 #include <QVector>
0015 #include <QWidget>
0016 
0017 namespace Mlt {
0018 class Filter;
0019 }
0020 
0021 class MonitorManager;
0022 
0023 /*class EqualizerWidget : public QWidget
0024 {
0025     Q_OBJECT
0026 public:
0027     EqualizerWidget(QWidget *parent = nullptr);
0028 
0029 };*/
0030 
0031 /** @class AudioGraphWidget
0032     @brief \@todo Describe class AudioGraphWidget
0033     @todo Describe class AudioGraphWidget
0034  */
0035 class AudioGraphWidget : public QWidget
0036 {
0037     Q_OBJECT
0038 public:
0039     explicit AudioGraphWidget(QWidget *parent = nullptr);
0040     void drawBackground();
0041 
0042 public Q_SLOTS:
0043     void showAudio(const QVector<float> &bands);
0044 
0045 protected:
0046     void paintEvent(QPaintEvent *pe) override;
0047     void resizeEvent(QResizeEvent *event) override;
0048 
0049 private:
0050     QVector<float> m_levels;
0051     QVector<int> m_dbLabels;
0052     QStringList m_freqLabels;
0053     QPixmap m_pixmap;
0054     QRect m_rect;
0055     int m_maxDb;
0056     void drawDbLabels(QPainter &p, const QRect &rect);
0057     void drawChanLabels(QPainter &p, const QRect &rect, int barWidth);
0058 };
0059 
0060 /** @class AudioGraphSpectrum
0061     @brief An audio spectrum
0062     @author Jean-Baptiste Mardelle
0063  */
0064 class AudioGraphSpectrum : public ScopeWidget
0065 {
0066     Q_OBJECT
0067 public:
0068     AudioGraphSpectrum(MonitorManager *manager, QWidget *parent = nullptr);
0069     ~AudioGraphSpectrum() override;
0070     void dockVisible(bool visible);
0071 
0072 private:
0073     MonitorManager *m_manager;
0074     Mlt::Filter *m_filter;
0075     AudioGraphWidget *m_graphWidget;
0076     // EqualizerWidget *m_equalizer;
0077     void processSpectrum();
0078     void refreshScope(const QSize &size, bool full) override;
0079 
0080 public Q_SLOTS:
0081     void refreshPixmap();
0082 
0083 private Q_SLOTS:
0084     void activate(bool enable);
0085 };