2021-06-22 12:14:47 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
2026-02-17 12:04:49 +01:00
|
|
|
#include "image/image.h"
|
2021-06-22 12:14:47 +02:00
|
|
|
#include "imgui/imgui.h"
|
2022-11-29 00:01:26 +01:00
|
|
|
#include <mutex>
|
2024-05-09 01:16:08 +02:00
|
|
|
#include <string>
|
2021-06-22 12:14:47 +02:00
|
|
|
|
2026-04-03 12:53:14 +02:00
|
|
|
namespace satdump
|
2021-06-22 12:14:47 +02:00
|
|
|
{
|
2026-04-03 12:53:14 +02:00
|
|
|
namespace widgets
|
2021-06-22 12:14:47 +02:00
|
|
|
{
|
2026-04-03 12:53:14 +02:00
|
|
|
class FFTPlot
|
2026-02-17 12:04:49 +01:00
|
|
|
{
|
2026-04-03 12:53:14 +02:00
|
|
|
private:
|
|
|
|
|
float *values;
|
|
|
|
|
int values_size;
|
|
|
|
|
std::mutex work_mutex;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
float scale_min, scale_max;
|
|
|
|
|
float scale_resolution;
|
|
|
|
|
|
|
|
|
|
double bandwidth = 0;
|
|
|
|
|
double frequency = 0;
|
|
|
|
|
|
|
|
|
|
bool enable_freq_scale = true;
|
|
|
|
|
|
|
|
|
|
double actual_sdr_freq = -1;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
FFTPlot(float *v, int size, float min, float max, float scale_res = 20);
|
|
|
|
|
|
|
|
|
|
void draw(ImVec2 size);
|
|
|
|
|
image::Image drawImg(int size_x, int size_y);
|
|
|
|
|
|
|
|
|
|
void set_size(int size)
|
|
|
|
|
{
|
|
|
|
|
work_mutex.lock();
|
|
|
|
|
values_size = size;
|
|
|
|
|
work_mutex.unlock();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void set_ptr(float *v)
|
|
|
|
|
{
|
|
|
|
|
work_mutex.lock();
|
|
|
|
|
values = v;
|
|
|
|
|
work_mutex.unlock();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::vector<std::pair<std::string, double>> vfo_freqs;
|
|
|
|
|
};
|
|
|
|
|
} // namespace widgets
|
|
|
|
|
} // namespace satdump
|