#include "windows.h"
#elif defined(PLATFORM_MSDOS)
#include "msdos.h"
+#elif defined(PLATFORM_ANDROID)
+#include "android.h"
#endif
#if defined(TARGET_SDL)
#define BLIT_INVERSE 2
#define BLIT_ON_BACKGROUND 3
+/* values for fullscreen status */
#define FULLSCREEN_NOT_AVAILABLE FALSE
#define FULLSCREEN_AVAILABLE TRUE
+/* values for window scaling */
+#define WINDOW_SCALING_NOT_AVAILABLE FALSE
+#define WINDOW_SCALING_AVAILABLE TRUE
+
+#define MIN_WINDOW_SCALING_PERCENT 50
+#define STD_WINDOW_SCALING_PERCENT 100
+#define MAX_WINDOW_SCALING_PERCENT 300
+#define STEP_WINDOW_SCALING_PERCENT 10
+
+/* values for window scaling quality */
+#define SCALING_QUALITY_NEAREST "nearest"
+#define SCALING_QUALITY_LINEAR "linear"
+#define SCALING_QUALITY_BEST "best"
+
+#define SCALING_QUALITY_DEFAULT SCALING_QUALITY_LINEAR
+
/* default input keys */
#define DEFAULT_KEY_LEFT KSYM_Left
#define DEFAULT_KEY_RIGHT KSYM_Right
#define REDRAWTILES_THRESHOLD 0
#endif
-#define IN_GFX_SCREEN(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \
+#define IN_GFX_FIELD_PLAY(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \
y >= gfx.sy && y < gfx.sy + gfx.sysize)
-#define IN_GFX_DOOR(x, y) (x >= gfx.dx && x < gfx.dx + gfx.dxsize && \
+#define IN_GFX_FIELD_FULL(x, y) (x >= gfx.real_sx && \
+ x < gfx.real_sx + gfx.full_sxsize && \
+ y >= gfx.real_sy && \
+ y < gfx.real_sy + gfx.full_sysize)
+#define IN_GFX_DOOR_1(x, y) (x >= gfx.dx && x < gfx.dx + gfx.dxsize && \
y >= gfx.dy && y < gfx.dy + gfx.dysize)
-#define IN_GFX_VIDEO(x, y) (x >= gfx.vx && x < gfx.vx + gfx.vxsize && \
+#define IN_GFX_DOOR_2(x, y) (x >= gfx.vx && x < gfx.vx + gfx.vxsize && \
y >= gfx.vy && y < gfx.vy + gfx.vysize)
+#define IN_GFX_DOOR_3(x, y) (x >= gfx.ex && x < gfx.ex + gfx.exsize && \
+ y >= gfx.ey && y < gfx.ey + gfx.eysize)
/* values for mouse cursor */
#define CURSOR_DEFAULT 0
/* type definitions */
+#if defined(TARGET_SDL2)
+typedef int (*EventFilter)(void *, Event *);
+#else
typedef int (*EventFilter)(const Event *);
+#endif
/* structure definitions */
int version_minor;
int version_patch;
+ void (*exit_message_function)(char *, va_list);
void (*exit_function)(int);
};
{
int default_depth;
int width, height, depth;
+ int window_width, window_height;
boolean fullscreen_available;
boolean fullscreen_enabled;
+ boolean fullscreen_initial;
struct ScreenModeInfo *fullscreen_modes;
char *fullscreen_mode_current;
+
+ boolean window_scaling_available;
+ int window_scaling_percent;
+ char *window_scaling_quality;
};
struct AudioSystemInfo
int vx, vy;
int vxsize, vysize;
+ int ex, ey;
+ int exsize, eysize;
+
int win_xsize, win_ysize;
int draw_deactivation_mask;
boolean time_limit;
boolean fullscreen;
char *fullscreen_mode;
+ int window_scaling_percent;
+ char *window_scaling_quality;
boolean ask_on_escape;
boolean ask_on_escape_editor;
boolean quick_switch;
int align, valign;
};
+struct DoorPartPosInfo
+{
+ int x, y;
+ int step_xoffset;
+ int step_yoffset;
+ int step_delay;
+ int start_step;
+ int start_step_opening;
+ int start_step_closing;
+ boolean draw_masked;
+ int sort_priority;
+};
+
struct TextPosInfo
{
int x, y;
int size;
int font, font_alt;
boolean draw_masked;
+ boolean draw_player; /* special case for network player buttons */
int sort_priority;
int id;
};
extern int button_status;
extern boolean motion_status;
+#if defined(TARGET_SDL2)
+extern boolean keyrepeat_status;
+#endif
extern int redraw_mask;
extern int redraw_tiles;
void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *,
char *, char *, char *, char *, char *, int);
+void InitExitMessageFunction(void (*exit_message_function)(char *, va_list));
void InitExitFunction(void (*exit_function)(int));
void InitPlatformDependentStuff(void);
void ClosePlatformDependentStuff(void);
void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *);
void InitGfxDoor1Info(int, int, int, int);
void InitGfxDoor2Info(int, int, int, int);
+void InitGfxDoor3Info(int, int, int, int);
void InitGfxWindowInfo(int, int);
void InitGfxScrollbufferInfo(int, int);
void InitGfxClipRegion(boolean, int, int, int, int);
void SetMainBackgroundBitmap(Bitmap *);
void SetDoorBackgroundBitmap(Bitmap *);
+void LimitScreenUpdates(boolean);
+
void InitVideoDisplay(void);
void CloseVideoDisplay(void);
void InitVideoBuffer(int, int, int, boolean);