1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#pragma once
#ifdef USE_TILE_LOCAL
#ifdef USE_SDL
#include <array>
#include "windowmanager.h"
struct SDL_Surface;
struct SDL_Window;
struct SDL_Cursor;
typedef void* SDL_GLContext;
class SDLWrapper : public WindowManager
{
public:
SDLWrapper();
~SDLWrapper();
// Class functions
virtual int init(coord_def *m_windowsz)
override;
// Environment state functions
virtual void set_window_title(const char *title) override;
virtual bool set_window_icon(const char* icon_name) override;
#ifdef TARGET_OS_WINDOWS
virtual void set_window_placement(coord_def *m_windowsz);
#endif
virtual unsigned char get_mod_state() const override;
virtual void set_mod_state(tiles_key_mod mod) override;
virtual void set_mouse_cursor(mouse_cursor_type id) override;
virtual unsigned short get_mouse_state(int *x, int *y) const override;
virtual string get_clipboard() override;
virtual bool has_clipboard() override;
// System time functions
virtual unsigned int set_timer(unsigned int interval,
wm_timer_callback callback) override;
virtual void remove_timer(unsigned int& timer_id) override;
virtual unsigned int get_ticks() const override;
virtual void delay(unsigned int ms) override;
// Event functions
virtual int wait_event(wm_event *event, int timeout) override;
virtual bool next_event_is(wm_event_type type) override;
// Display functions
virtual bool init_hidpi() override;
virtual void resize(coord_def &m_windowsz) override;
virtual void swap_buffers() override;
virtual int screen_width() const override;
virtual int screen_height() const override;
virtual int desktop_width() const override;
virtual int desktop_height() const override;
// Texture loading
virtual bool load_texture(GenericTexture *tex, const char *filename,
MipMapOptions mip_opt, unsigned int &orig_width,
unsigned int &orig_height,
tex_proc_func proc = nullptr,
bool force_power_of_two = true) override;
protected:
// Helper functions
SDL_Surface *load_image(const char *file) const;
int send_textinput(wm_event *event);
SDL_Window *m_window;
SDL_GLContext m_context;
int _desktop_width;
int _desktop_height;
private:
void glDebug(const char *msg);
int prev_keycode;
string m_textinput_queue;
array<SDL_Cursor*, NUM_MOUSE_CURSORS> m_cursors;
};
#endif // USE_SDL
#endif // USE_TILE_LOCAL
|