58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
#ifndef WINDOW_H
|
|
#define WINDOW_H
|
|
|
|
#include <memory>
|
|
#include <utility>
|
|
#include <SDL.h>
|
|
#include "Font.h"
|
|
#include "Buffer.h"
|
|
#include "GL.h"
|
|
|
|
class BufferPane;
|
|
class BufferStatusPane;
|
|
|
|
class Window
|
|
{
|
|
public:
|
|
bool create(std::shared_ptr<Buffer> buffer);
|
|
void run_event_loop();
|
|
void request_redraw() { m_redraw_requested = true; }
|
|
std::shared_ptr<Font> font() const { return m_font; }
|
|
std::shared_ptr<GL> 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<Font> m_font;
|
|
uint32_t m_target_column;
|
|
|
|
std::shared_ptr<GL> m_gl;
|
|
|
|
std::shared_ptr<BufferPane> m_buffer_pane;
|
|
std::shared_ptr<BufferStatusPane> m_buffer_status_pane;
|
|
|
|
Uint16 m_keymod;
|
|
};
|
|
|
|
#endif
|