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