File indexing completed on 2024-04-14 04:46:03

0001 /*
0002 SPDX-FileCopyrightText: 2016 Jean-Baptiste Mardelle <jb@kdenlive.org>
0003 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #pragma once
0007 
0008 #include <QWidget>
0009 #include <memory>
0010 
0011 namespace Mlt {
0012 class Filter;
0013 } // namespace Mlt
0014 
0015 class AudioLevelWidget : public QWidget
0016 {
0017     Q_OBJECT
0018 public:
0019     explicit AudioLevelWidget(int width, int sliderHandle, QWidget *parent = nullptr);
0020     ~AudioLevelWidget() override;
0021     void refreshPixmap();
0022     int audioChannels;
0023     void setVisibility(bool enable);
0024 
0025 protected:
0026     void paintEvent(QPaintEvent *) override;
0027     void resizeEvent(QResizeEvent *event) override;
0028     void changeEvent(QEvent *event) override;
0029 #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
0030     void enterEvent(QEnterEvent *event) override;
0031 #else
0032     void enterEvent(QEvent *event) override;
0033 #endif
0034     void leaveEvent(QEvent *event) override;
0035 
0036 private:
0037     std::unique_ptr<Mlt::Filter> m_filter;
0038     int m_width;
0039     int m_offset;
0040     QPixmap m_pixmap;
0041     QVector<double> m_peaks;
0042     QVector<double> m_values;
0043     int m_maxDb;
0044     int m_channelWidth;
0045     int m_channelDistance;
0046     int m_channelFillWidth;
0047     bool m_displayToolTip;
0048     int m_sliderHandle;
0049     void drawBackground(int channels = 2);
0050     /** @brief Update tooltip with current dB values */
0051     void updateToolTip();
0052 
0053 public Q_SLOTS:
0054     void setAudioValues(const QVector<double> &values);
0055 };