Home | History | Annotate | Download | only in include
      1 /****************************************************************************
      2 *
      3 *						MegaGraph Graphics Library
      4 *
      5 *                   Copyright (C) 1996 SciTech Software.
      6 *							All rights reserved.
      7 *
      8 * Filename:		$Workfile:   mglwin.h  $
      9 * Version:		$Revision:   1.14  $
     10 *
     11 * Language:		ANSI C
     12 * Environment:	IBM PC (MS DOS)
     13 *
     14 * Description:	Header file for the MGLWIN bindings for MS Windows using
     15 *				WinG in a window and WinDirect for full screen. The MGLWIN
     16 *				binding only targets Win32 applications, so cannot be used
     17 *				for 16 bit Windows development.
     18 *
     19 * $Date:   14 Mar 1997 16:09:34  $ $Author:   KendallB  $
     20 *
     21 ****************************************************************************/
     22 
     23 #ifndef	__MGLWIN_H
     24 #define	__MGLWIN_H
     25 
     26 #ifndef MGLWIN
     27 #define	MGLWIN
     28 #endif
     29 
     30 /*---------------------- Macros and type definitions ----------------------*/
     31 
     32 typedef HWND		MGL_HWND;
     33 typedef	HDC			MGL_HDC;
     34 typedef	HINSTANCE	MGL_HINSTANCE;
     35 
     36 /*------------------------- Function Prototypes ---------------------------*/
     37 
     38 #ifdef	__cplusplus
     39 extern "C" {			/* Use "C" linkage when in C++ mode	*/
     40 #endif
     41 
     42 /* Initialise the MGL for fullscreen output */
     43 
     44 bool	MGLAPI MGL_init(m_int *driver,m_int *mode,const char *mglpath);
     45 
     46 /* Initialise the MGL just for Windowed output, not full screen */
     47 
     48 bool	MGLAPI MGL_initWindowed(const char *mglpath);
     49 
     50 /* Function to register a fullscreen window with the MGL. If you wish
     51  * for the MGL to use your own window for fullscreen modes, you can
     52  * register it with this function. Note that when the MGL goes into
     53  * fullscreen modes, the attributes, size and position of the window are
     54  * modified to make it into a fullscreen Window necessary to cover the
     55  * entire desktop, and the state of the window will be restore to the original
     56  * format on return to normal GDI mode.
     57  *
     58  * Note that if you are using a common window for Windowed mode and fullscreen
     59  * modes of your application, you will need to ensure that certain messages
     60  * that you window normally handles in windowed modes are ignored when in
     61  * fullscreen modes.
     62  */
     63 
     64 void 	MGLAPI MGL_registerFullScreenWindow(HWND hwndFullScreen);
     65 
     66 /* Function to register a fullscreen event handling window procedure.
     67  * If you wish to do your own event handling, you can register your window
     68  * procedure with the MGL using this function and it will be called
     69  * when there are messages to be handled. You can still call the MGL_event()
     70  * functions even if you have registered an event handling procedure.
     71  */
     72 
     73 void 	MGLAPI MGL_registerEventProc(WNDPROC userWndProc);
     74 
     75 /* Change the active display mode. You must destroy all display device
     76  * contexts before calling this function, and re-create them again with
     77  * the new display mode. Does not affect any event handling hooks.
     78  */
     79 
     80 bool	MGLAPI MGL_changeDisplayMode(m_int mode);
     81 
     82 /* Obtain the handle to the MGL fullscreen window when in fullscreen modes */
     83 
     84 MGL_HWND MGLAPI MGL_getFullScreenWindow(void);
     85 
     86 /* Tell the MGL what your applications main window is */
     87 
     88 void	MGLAPI MGL_setMainWindow(MGL_HWND hwnd);
     89 
     90 /* Tell the MGL your applications instance handle (call before all funcs!) */
     91 
     92 void	MGLAPI MGL_setAppInstance(MGL_HINSTANCE hInstApp);
     93 
     94 /* Device context management */
     95 
     96 MGLDC	* MGLAPI MGL_createDisplayDC(m_int numBuffers);
     97 MGLDC	* MGLAPI MGL_createSrollingDC(m_int virtualX,m_int virtualY,m_int numBuffers);
     98 MGLDC	* MGLAPI MGL_createOffscreenDC(void);
     99 MGLDC	* MGLAPI MGL_createLinearOffscreenDC(void);
    100 MGLDC	* MGLAPI MGL_createWindowedDC(MGL_HWND hwnd);
    101 MGLDC 	* MGLAPI MGL_createMemoryDC(m_int xSize,m_int ySize,m_int bitsPerPixel,pixel_format_t *pf);
    102 bool	MGLAPI MGL_destroyDC(MGLDC *dc);
    103 
    104 /* Get a Windows HDC for the MGL device context. You can use this returned
    105  * HDC to get GDI to draw to the device context surface, such as rendering
    106  * and using TrueType fonts with the MGL. If a Windows compatible HDC is not
    107  * available, this function will return NULL.
    108  */
    109 
    110 HDC		MGLAPI MGL_getWinDC(MGLDC *dc);
    111 
    112 /* Associate a Window manager DC with the MGLDC for painting */
    113 
    114 bool	MGLAPI MGL_setWinDC(MGLDC *dc,MGL_HDC hdc);
    115 
    116 /* Activate the WindowDC's palette */
    117 
    118 bool	MGLAPI MGL_activatePalette(MGLDC *dc,bool unrealize);
    119 
    120 /* Let the MGL know when your application is being activated or deactivated.
    121  * This function only needs to be called when running in Windowed modes and
    122  * you have set the system palette to SYSPAL_NOSTATIC mode, to ensure
    123  * that the MGL can properly re-map your application palette when your
    124  * app is not active and allow Windows to re-map your bitmap colors on the
    125  * fly. This function should be passed a pointer to the currently active
    126  * MGL Windowed DC and a flag to indicate whether the app is in the background
    127  * or not.
    128  */
    129 
    130 void	MGLAPI MGL_appActivate(MGLDC *winDC,bool active);
    131 
    132 /* Generic helper functions */
    133 
    134 ulong	MGLAPI MGL_getTicks(void);
    135 ulong	MGLAPI MGL_getTickResolution(void);
    136 void	MGLAPI MGL_delay(m_int millseconds);
    137 void	MGLAPI MGL_beep(m_int freq,m_int milliseconds);
    138 
    139 /* Fullscreen specific routines */
    140 
    141 void	MGLAPI MGL_setPaletteSnowLevel(MGLDC *dc,m_int level);
    142 m_int	MGLAPI MGL_getPaletteSnowLevel(MGLDC *dc);
    143 
    144 /* Determine if a specific scancode'ed key is held down (PC specific) */
    145 
    146 bool	MGLAPI EVT_isKeyDown(uchar scanCode);
    147 
    148 #ifdef	__cplusplus
    149 }						/* End of "C" linkage for C++	*/
    150 #endif
    151 
    152 #endif	/* __MGLWIN_H */
    153