mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
19a4b820c4
This has been overkill from the start, and it has been bugging me for a long time. With this change, we're probably a bit slower on most platforms but save huge amounts of space with all in-memory sample datastructures.
42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
/*
|
|
* Copyright (c) 2021, Cesar Torres <shortanemoia@protonmail.com>
|
|
* Copyright (c) 2022, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "VisualizationWidget.h"
|
|
#include <AK/Array.h>
|
|
#include <AK/Complex.h>
|
|
#include <AK/FixedArray.h>
|
|
#include <LibGUI/Frame.h>
|
|
|
|
class BarsVisualizationWidget final : public VisualizationWidget {
|
|
C_OBJECT(BarsVisualizationWidget)
|
|
|
|
public:
|
|
~BarsVisualizationWidget() override = default;
|
|
|
|
private:
|
|
BarsVisualizationWidget();
|
|
|
|
void render(GUI::PaintEvent&, FixedArray<float> const&) override;
|
|
void context_menu_event(GUI::ContextMenuEvent& event) override;
|
|
|
|
static constexpr size_t fft_size = 512;
|
|
static constexpr size_t bar_count = 64;
|
|
// Things become weird near the Nyquist limit. Just don't use that FFT data.
|
|
static constexpr size_t cutoff = fft_size - 32;
|
|
|
|
Array<Complex<float>, fft_size> m_fft_samples {};
|
|
Array<float, fft_size> m_fft_window {};
|
|
Array<float, fft_size / 2> m_previous_samples {};
|
|
Array<int, bar_count> m_gfx_falling_bars {};
|
|
bool m_is_using_last;
|
|
bool m_adjust_frequencies;
|
|
bool m_logarithmic_spectrum;
|
|
RefPtr<GUI::Menu> m_context_menu;
|
|
};
|