#ifndef WINDOW_H #define WINDOW_H #include #include #include #include "Font.h" #include "Buffer.h" #include "GL.h" class BufferPane; class BufferStatusPane; class Window { public: bool create(std::shared_ptr buffer); void run_event_loop(); void request_redraw() { m_redraw_requested = true; } std::shared_ptr font() const { return m_font; } std::shared_ptr gl() const { return m_gl; } protected: enum : uint32_t { KEYMOD_CTRL = 0x10000, KEYMOD_ALT = 0x20000, KEYMOD_SHIFT = 0x40000, KEYMOD_GUI = 0x80000, }; void resize(); void redraw(); void handle_event(SDL_Event & event); void handle_keysym(uint32_t keysym); void handle_keyval(uint32_t keyval); uint32_t get_keyval(SDL_Keycode keysym); uint32_t get_shifted(uint32_t keysym); SDL_Window * m_window; bool m_exit_requested; bool m_redraw_requested; int m_width; int m_height; std::shared_ptr m_font; uint32_t m_target_column; std::shared_ptr m_gl; std::shared_ptr m_buffer_pane; std::shared_ptr m_buffer_status_pane; Uint16 m_keymod; }; #endif