KEK/console_ncurses.h
Folkert van Heusden 4c7fcb4854 license
2023-03-26 21:47:42 +02:00

42 lines
880 B
C++

// (C) 2018-2023 by Folkert van Heusden
// Released under MIT license
#include <mutex>
#include <ncurses.h>
#include "console.h"
#include "terminal.h"
class console_ncurses : public console
{
private:
NEWWIN *w_main_b { nullptr };
NEWWIN *w_main { nullptr };
NEWWIN *w_panel_b { nullptr };
NEWWIN *w_panel { nullptr };
std::mutex ncurses_mutex;
std::thread *th_panel { nullptr };
int tx { 0 };
int ty { 0 };
protected:
int wait_for_char_ll(const short timeout) override;
void put_char_ll(const char c) override;
public:
console_ncurses(std::atomic_uint32_t *const stop_event, bus *const b);
virtual ~console_ncurses();
void put_string_lf(const std::string & what) override;
void resize_terminal() override;
void refresh_virtual_terminal() override;
void panel_update_thread() override;
};