rnd-20140301-1-src
[rocksndiamonds.git] / src / libgame / system.h
index abb63b591e70c039d3dface2849e1abb5b0d05d1..b74b6fae17165e376d7da80d6a22a8752e0fc7c2 100644 (file)
 #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
@@ -743,6 +756,7 @@ struct VideoSystemInfo
 
   boolean window_scaling_available;
   int window_scaling_percent;
+  char *window_scaling_quality;
 };
 
 struct AudioSystemInfo
@@ -796,6 +810,9 @@ struct GfxInfo
   int vx, vy;
   int vxsize, vysize;
 
+  int ex, ey;
+  int exsize, eysize;
+
   int win_xsize, win_ysize;
 
   int draw_deactivation_mask;
@@ -953,6 +970,7 @@ struct SetupInfo
   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;
@@ -1190,6 +1208,19 @@ struct MenuPosInfo
   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;
@@ -1265,6 +1296,7 @@ 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);
@@ -1276,6 +1308,8 @@ void SetWindowBackgroundBitmap(Bitmap *);
 void SetMainBackgroundBitmap(Bitmap *);
 void SetDoorBackgroundBitmap(Bitmap *);
 
+void LimitScreenUpdates(boolean);
+
 void InitVideoDisplay(void);
 void CloseVideoDisplay(void);
 void InitVideoBuffer(int, int, int, boolean);