1 /****************************************************************************************/
\r
4 /* Description: GDI dib handling code */
\r
6 /* Code fragments contributed by John Miles */
\r
8 /* The contents of this file are subject to the Genesis3D Public License */
\r
9 /* Version 1.01 (the "License"); you may not use this file except in */
\r
10 /* compliance with the License. You may obtain a copy of the License at */
\r
11 /* http://www.genesis3d.com */
\r
13 /* Software distributed under the License is distributed on an "AS IS" */
\r
14 /* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */
\r
15 /* the License for the specific language governing rights and limitations */
\r
16 /* under the License. */
\r
18 /* The Original Code is Genesis3D, released March 25, 1999. */
\r
19 /* Genesis3D Version 1.1 released November 15, 1999 */
\r
20 /* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */
\r
22 /****************************************************************************************/
\r
26 #define SAL_VERSION "1.00"
\r
27 #define SAL_VERSION_DATE "23-May-96"
\r
47 // If compiling SAL library, use __declspec(dllexport) for both
\r
48 // declarations and definitions
\r
50 // If compiling SAL application, use __declspec(dllimport) for
\r
51 // declarations -- definitions don't matter
\r
53 // (DOS, other system definitions to be added later)
\r
58 #define SALEXPORT WINAPI
\r
61 #define DXDEC __declspec(dllexport)
\r
62 #define DXDEF __declspec(dllexport)
\r
64 #define DXDEC __declspec(dllimport)
\r
75 #define SALEXPORT WINAPI
\r
80 // Misc. constant definitions
\r
84 // General type definitions for portability
\r
90 typedef unsigned char U8 ;
\r
91 typedef unsigned short U16;
\r
92 typedef unsigned long U32;
\r
94 typedef signed char S8 ;
\r
95 typedef signed short S16;
\r
96 typedef signed long S32;
\r
116 #define SAL_FULLSCREEN 0 // Set fullscreen DDraw mode
\r
117 #define SAL_WINDOW 1 // Set DIB windowed mode
\r
118 #define SAL_TRY_FULLSCREEN 2 // Try fullscreen, fall back to DIB
\r
120 #define SAL_FRONT_SURFACE 0
\r
121 #define SAL_BACK_SURFACE 1
\r
124 // Preference names and default values
\r
127 #define SAL_ALLOW_FRONT_LOCK 0 // Disregard request for front surface lock
\r
128 #define DEFAULT_AFL NO
\r
130 #define SAL_BUFFER_IF_NO_LFB 1 // Use system RAM page buffer if no LFB available
\r
131 #define DEFAULT_BINL YES
\r
133 #define SAL_DOS_MONO_DEBUG 2 // Set up monochrome TTY debug monitor for DOS
\r
134 #define DEFAULT_DMD YES
\r
136 #define SAL_MAX_VIDEO_PAGES 3 // Allocate up to 3 video pages if possible
\r
137 #define DEFAULT_MVP 3
\r
139 #define SAL_ALLOW_WINDOW_RESIZE 4 // Allow window to be resized
\r
140 #define DEFAULT_AWR YES
\r
142 #define SAL_PREVENT_ALT_MENU_POPUP 5 // Do not allow ALT to pause app
\r
143 #define DEFAULT_PAMP YES
\r
145 #define SAL_ALWAYS_ON_TOP 6 // App has normal window Z order
\r
146 #define DEFAULT_SAOT NO
\r
148 #define SAL_MAXIMIZE_TO_FULLSCREEN 7 // Maximize button switches to FS
\r
149 #define DEFAULT_MTF YES
\r
151 #define N_SAL_PREFS 8 // # of preference types
\r
185 // Function pointer types
\r
188 typedef void (SALEXPORT * SALFOCUSCB) (S32 status);
\r
189 typedef void (SALEXPORT * SALEXITCB) (void);
\r
192 // Miscellaneous/support services (not system-specific)
\r
195 DXDEC void __cdecl SAL_debug_printf (char *fmt, ...);
\r
197 DXDEC S32 WINAPI SAL_get_preference (U32 number);
\r
199 DXDEC S32 WINAPI SAL_set_preference (U32 number,
\r
203 // General services (not system-specific)
\r
206 DXDEC void WINAPI SAL_set_palette_entry (S32 index,
\r
210 DXDEC void WINAPI SAL_get_palette_entry (S32 index,
\r
213 DXDEC void WINAPI SAL_set_palette_range (S32 index,
\r
215 SAL_RGB32 *entry_list,
\r
218 DXDEC void WINAPI SAL_get_palette_range (S32 index,
\r
220 SAL_RGB32 *entry_list);
\r
222 DXDEC void WINAPI SAL_get_pixel_format (S32 *pixel_pitch,
\r
223 S32 *bytes_per_pixel,
\r
235 DXDEC void WINAPI SAL_flip_surface (void);
\r
236 DXDEF void WINAPI SAL_blit_surface (void);
\r
238 DXDEC void WINAPI SAL_wipe_surface (S32 surface,
\r
241 DXDEC void WINAPI SAL_lock_surface (S32 surface,
\r
245 DXDEC void WINAPI SAL_release_surface (S32 surface,
\r
248 DXDEC void WINAPI SAL_lock_region (S32 surface,
\r
253 DXDEC void WINAPI SAL_release_region (S32 surface,
\r
254 SAL_REGION region);
\r
260 DXDEC void WINAPI SAL_show_system_mouse (void);
\r
261 DXDEC void WINAPI SAL_hide_system_mouse (void);
\r
263 DXDEC void WINAPI SAL_constrain_mouse (void);
\r
264 DXDEC void WINAPI SAL_unconstrain_mouse (void);
\r
267 // System-specific functions for Win32 version
\r
272 DXDEC S32 WINAPI SAL_startup (BOOL FileLog);
\r
273 DXDEC void WINAPI SAL_shutdown (void);
\r
275 DXDEC BOOL WINAPI SAL_set_main_window(HWND hWindow);
\r
276 // CHANGE! (12/18/96)
\r
277 // Must have a menu in my app.
\r
278 DXDEC HWND WINAPI SAL_create_main_window (const char *MenuName);
\r
280 DXDEC S32 WINAPI SAL_set_display_mode (S32 display_size_X,
\r
281 S32 display_size_Y,
\r
283 S32 initial_window_mode,
\r
284 S32 allow_mode_switch);
\r
286 DXDEC S32 WINAPI SAL_window_status (void);
\r
287 DXDEC void WINAPI SAL_window_area (SAL_WINAREA *area);
\r
288 DXDEC void WINAPI SAL_client_area (SAL_WINAREA *area);
\r
289 DXDEC S32 WINAPI SAL_set_window_area (SAL_WINAREA *area);
\r
290 DXDEC S32 WINAPI SAL_is_app_active (void);
\r
291 DXDEC SALFOCUSCB WINAPI SAL_register_focus_callback (SALFOCUSCB fn);
\r
292 DXDEC WNDPROC WINAPI SAL_register_WNDPROC (WNDPROC fn);
\r
294 DXDEC void WINAPI SAL_serve_message_queue (void);
\r
296 DXDEC void __cdecl SAL_error_box (C8 *caption,
\r
298 // CHANGE! (12/18/96) John Pollard
\r
299 DXDEC void WINAPI SAL_GetBackBufferDC(HDC *dc);
\r
300 DXDEC void WINAPI SAL_ReleaseBackBufferDC(HDC dc);
\r