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 };