changed screen rendering mode from preprocessor to runtime configurable
[rocksndiamonds.git] / src / libgame / system.h
index 7e6bcc1f812150d0d2ea611f80951871f5be0b85..110e18c2392c3f462650f69e5ad0cf36bb246c29 100644 (file)
 
 #define SCALING_QUALITY_DEFAULT                SCALING_QUALITY_LINEAR
 
+/* values for screen rendering mode */
+#define STR_SPECIAL_RENDERING_OFF      "stream_texture_only"
+#define STR_SPECIAL_RENDERING_BITMAP   "bitmap_and_stream_texture"
+#define STR_SPECIAL_RENDERING_TARGET   "target_texture_only"
+#define STR_SPECIAL_RENDERING_DOUBLE   "stream_and_target_texture"
+
+#if defined(TARGET_SDL2)
+#define STR_SPECIAL_RENDERING_DEFAULT  STR_SPECIAL_RENDERING_DOUBLE
+#else
+#define STR_SPECIAL_RENDERING_DEFAULT  STR_SPECIAL_RENDERING_BITMAP
+#endif
+
+#define SPECIAL_RENDERING_OFF          0
+#define SPECIAL_RENDERING_BITMAP       1
+#define SPECIAL_RENDERING_TARGET       2
+#define SPECIAL_RENDERING_DOUBLE       3
+
+#if defined(TARGET_SDL2)
+#define SPECIAL_RENDERING_DEFAULT      SPECIAL_RENDERING_DOUBLE
+#else
+#define SPECIAL_RENDERING_DEFAULT      SPECIAL_RENDERING_BITMAP
+#endif
+
 /* values for touch control */
 #define TOUCH_CONTROL_VIRTUAL_BUTTONS  "virtual_buttons"
 #define TOUCH_CONTROL_WIPE_GESTURES    "wipe_gestures"
 /* values for drawing target for global border */
 #define DRAW_BORDER_TO_BACKBUFFER      0
 #define DRAW_BORDER_TO_SCREEN          1
+#define DRAW_BORDER_TO_FADE_SOURCE     2
+#define DRAW_BORDER_TO_FADE_TARGET     3
 
 /* values for move directions and special "button" key bitmasks */
 #define MV_NONE                        0
@@ -707,7 +732,6 @@ struct ProgramInfo
 
 struct OptionInfo
 {
-  char *display_name;
   char *server_host;
   int server_port;
 
@@ -729,11 +753,6 @@ struct OptionInfo
   boolean debug;
 };
 
-struct ScreenModeInfo
-{
-  int width, height;
-};
-
 struct VideoSystemInfo
 {
   int default_depth;
@@ -743,12 +762,11 @@ struct VideoSystemInfo
   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;
+  int screen_rendering_mode;
 
   boolean initialized;
 };
@@ -819,11 +837,11 @@ struct GfxInfo
   Bitmap *fade_bitmap_target;
   Bitmap *fade_bitmap_black;
 
+  int fade_border_source_status;
+  int fade_border_target_status;
   Bitmap *masked_border_bitmap_ptr;
 
-#if USE_FINAL_SCREEN_BITMAP
   Bitmap *final_screen_bitmap;
-#endif
 
   boolean clipping_enabled;
   int clip_x, clip_y;
@@ -1008,9 +1026,9 @@ struct SetupInfo
   boolean skip_levels;
   boolean time_limit;
   boolean fullscreen;
-  char *fullscreen_mode;
   int window_scaling_percent;
   char *window_scaling_quality;
+  char *screen_rendering_mode;
   boolean ask_on_escape;
   boolean ask_on_escape_editor;
   boolean quick_switch;