summaryrefslogtreecommitdiff
path: root/Userland/Applications/SoundPlayer/BarsVisualizationWidget.h
blob: 54d3778e6c30a73c20881b11963d2c69653f8e57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
 * Copyright (c) 2021, Cesar Torres <shortanemoia@protonmail.com>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include "VisualizationBase.h"
#include <AK/Complex.h>
#include <LibAudio/Buffer.h>
#include <LibGUI/Frame.h>

class BarsVisualizationWidget final : public GUI::Frame
    , public Visualization {
    C_OBJECT(BarsVisualizationWidget)

public:
    ~BarsVisualizationWidget() override;
    void set_buffer(RefPtr<Audio::Buffer> buffer) override;
    void set_samplerate(int samplerate) override;

private:
    BarsVisualizationWidget();
    void set_buffer(RefPtr<Audio::Buffer> buffer, int samples_to_use);

    void paint_event(GUI::PaintEvent&) override;
    void mousedown_event(GUI::MouseEvent& event) override;

    Vector<Complex<double>> m_sample_buffer;
    Vector<int> m_gfx_falling_bars;
    int m_last_id;
    int m_sample_count;
    int m_samplerate;
    bool m_is_using_last;
    bool m_adjust_frequencies;
    RefPtr<GUI::Menu> m_context_menu;
};