/*
Copyright (C) 2015
Matthias P. Braendli, matthias.braendli@mpb.li
http://opendigitalradio.org
*/
/*
This file is part of ODR-DPD.
ODR-DPD is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
ODR-DPD is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with ODR-DPD. If not, see .
*/
#pragma once
#include "utils.hpp"
#include
#include
#include
#include
#include
// Exception to quit the program
class sdl_quit : public std::exception {};
struct Point {
double x, y, z;
uint8_t r, g, b;
};
class PointCloud
{
public:
PointCloud(size_t num_points);
// Must call this regularly
// returns name of key pressed, or an empty string if nothing
// happened
std::string handle_event(void);
// The caller must guarantee that the two vectors have the same size
void push_samples(std::pair, std::vector > &data);
// Update the display. Must be called from the same thread as the
// one that constructed this instance.
void draw(void);
void set_tx_gain(double gain) { m_txgain = gain; }
void set_rx_gain(double gain) { m_rxgain = gain; }
private:
std::vector generate_border(void);
size_t m_num_points;
double m_rxgain;
double m_txgain;
std::mutex m_mutex;
std::deque m_points;
};