pcem/src/wx-sdl2-video.h

69 lines
2.1 KiB
C

#define RENDERER_AUTO 0
#define RENDERER_DIRECT3D 1
#define RENDERER_OPENGL 2
#define RENDERER_OPENGLES2 3
#define RENDERER_OPENGLES 4
#define RENDERER_SOFTWARE 5
#define RENDERER_GL3 6
struct sdl_render_driver;
typedef struct sdl_renderer_t {
int (*init)(SDL_Window* window, struct sdl_render_driver driver, SDL_Rect screen);
void (*close)();
void (*update)(SDL_Window* window, SDL_Rect updated_rect, BITMAP* screen);
void (*present)(SDL_Window* window, SDL_Rect texture_rect, SDL_Rect window_rect, SDL_Rect screen);
int always_update;
} sdl_renderer_t;
typedef struct sdl_render_driver {
int id;
const char* sdl_id;
const char* name;
int sdl_window_params;
sdl_renderer_t* (*renderer_create)();
void (*renderer_close)(sdl_renderer_t* renderer);
int (*renderer_available)(struct sdl_render_driver* driver);
} sdl_render_driver;
typedef float (*FLASH_FUNC)(float v);
typedef struct flash_t {
int enabled;
int time;
char color[4];
int start;
char alpha;
FLASH_FUNC func;
} flash_t;
flash_t flash;
#ifdef __cplusplus
extern "C" {
#endif
int sdl_video_init();
void sdl_video_close();
int sdl_renderer_init(SDL_Window* window);
void sdl_renderer_close();
int sdl_renderer_update(SDL_Window* window);
void sdl_renderer_present(SDL_Window* window);
void sdl_scale(int scale, SDL_Rect src, SDL_Rect* dst, int w, int h);
int sdl_is_fullscreen(SDL_Window* window);
sdl_render_driver* sdl_get_render_drivers(int* num_renderers);
sdl_render_driver sdl_get_render_driver_by_id(int id, int def);
sdl_render_driver sdl_get_render_driver_by_name(const char* name, int def);
sdl_render_driver* sdl_get_render_driver_by_name_ptr(const char* name);
void color_flash(FLASH_FUNC func, int time_ms, char r, char g, char b, char a);
#ifdef __cplusplus
}
#endif
extern sdl_render_driver requested_render_driver;
extern char current_render_driver_name[50];
extern int custom_resolution_width;
extern int custom_resolution_height;