home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************
- *
- * MegaGraph Graphics Library
- *
- * Copyright (C) 1996 SciTech Software.
- * All rights reserved.
- *
- * Filename: $Workfile: mglwin.h $
- * Version: $Revision: 1.14 $
- *
- * Language: ANSI C
- * Environment: IBM PC (MS DOS)
- *
- * Description: Header file for the MGLWIN bindings for MS Windows using
- * WinG in a window and WinDirect for full screen. The MGLWIN
- * binding only targets Win32 applications, so cannot be used
- * for 16 bit Windows development.
- *
- * $Date: 14 Mar 1997 16:09:34 $ $Author: KendallB $
- *
- ****************************************************************************/
-
- #ifndef __MGLWIN_H
- #define __MGLWIN_H
-
- #ifndef MGLWIN
- #define MGLWIN
- #endif
-
- /*---------------------- Macros and type definitions ----------------------*/
-
- typedef HWND MGL_HWND;
- typedef HDC MGL_HDC;
- typedef HINSTANCE MGL_HINSTANCE;
-
- /*------------------------- Function Prototypes ---------------------------*/
-
- #ifdef __cplusplus
- extern "C" { /* Use "C" linkage when in C++ mode */
- #endif
-
- /* Initialise the MGL for fullscreen output */
-
- bool MGLAPI MGL_init(m_int *driver,m_int *mode,const char *mglpath);
-
- /* Initialise the MGL just for Windowed output, not full screen */
-
- bool MGLAPI MGL_initWindowed(const char *mglpath);
-
- /* Function to register a fullscreen window with the MGL. If you wish
- * for the MGL to use your own window for fullscreen modes, you can
- * register it with this function. Note that when the MGL goes into
- * fullscreen modes, the attributes, size and position of the window are
- * modified to make it into a fullscreen Window necessary to cover the
- * entire desktop, and the state of the window will be restore to the original
- * format on return to normal GDI mode.
- *
- * Note that if you are using a common window for Windowed mode and fullscreen
- * modes of your application, you will need to ensure that certain messages
- * that you window normally handles in windowed modes are ignored when in
- * fullscreen modes.
- */
-
- void MGLAPI MGL_registerFullScreenWindow(HWND hwndFullScreen);
-
- /* Function to register a fullscreen event handling window procedure.
- * If you wish to do your own event handling, you can register your window
- * procedure with the MGL using this function and it will be called
- * when there are messages to be handled. You can still call the MGL_event()
- * functions even if you have registered an event handling procedure.
- */
-
- void MGLAPI MGL_registerEventProc(WNDPROC userWndProc);
-
- /* Change the active display mode. You must destroy all display device
- * contexts before calling this function, and re-create them again with
- * the new display mode. Does not affect any event handling hooks.
- */
-
- bool MGLAPI MGL_changeDisplayMode(m_int mode);
-
- /* Obtain the handle to the MGL fullscreen window when in fullscreen modes */
-
- MGL_HWND MGLAPI MGL_getFullScreenWindow(void);
-
- /* Tell the MGL what your applications main window is */
-
- void MGLAPI MGL_setMainWindow(MGL_HWND hwnd);
-
- /* Tell the MGL your applications instance handle (call before all funcs!) */
-
- void MGLAPI MGL_setAppInstance(MGL_HINSTANCE hInstApp);
-
- /* Device context management */
-
- MGLDC * MGLAPI MGL_createDisplayDC(m_int numBuffers);
- MGLDC * MGLAPI MGL_createSrollingDC(m_int virtualX,m_int virtualY,m_int numBuffers);
- MGLDC * MGLAPI MGL_createOffscreenDC(void);
- MGLDC * MGLAPI MGL_createLinearOffscreenDC(void);
- MGLDC * MGLAPI MGL_createWindowedDC(MGL_HWND hwnd);
- MGLDC * MGLAPI MGL_createMemoryDC(m_int xSize,m_int ySize,m_int bitsPerPixel,pixel_format_t *pf);
- bool MGLAPI MGL_destroyDC(MGLDC *dc);
-
- /* Get a Windows HDC for the MGL device context. You can use this returned
- * HDC to get GDI to draw to the device context surface, such as rendering
- * and using TrueType fonts with the MGL. If a Windows compatible HDC is not
- * available, this function will return NULL.
- */
-
- HDC MGLAPI MGL_getWinDC(MGLDC *dc);
-
- /* Associate a Window manager DC with the MGLDC for painting */
-
- bool MGLAPI MGL_setWinDC(MGLDC *dc,MGL_HDC hdc);
-
- /* Activate the WindowDC's palette */
-
- bool MGLAPI MGL_activatePalette(MGLDC *dc,bool unrealize);
-
- /* Let the MGL know when your application is being activated or deactivated.
- * This function only needs to be called when running in Windowed modes and
- * you have set the system palette to SYSPAL_NOSTATIC mode, to ensure
- * that the MGL can properly re-map your application palette when your
- * app is not active and allow Windows to re-map your bitmap colors on the
- * fly. This function should be passed a pointer to the currently active
- * MGL Windowed DC and a flag to indicate whether the app is in the background
- * or not.
- */
-
- void MGLAPI MGL_appActivate(MGLDC *winDC,bool active);
-
- /* Generic helper functions */
-
- ulong MGLAPI MGL_getTicks(void);
- ulong MGLAPI MGL_getTickResolution(void);
- void MGLAPI MGL_delay(m_int millseconds);
- void MGLAPI MGL_beep(m_int freq,m_int milliseconds);
-
- /* Fullscreen specific routines */
-
- void MGLAPI MGL_setPaletteSnowLevel(MGLDC *dc,m_int level);
- m_int MGLAPI MGL_getPaletteSnowLevel(MGLDC *dc);
-
- /* Determine if a specific scancode'ed key is held down (PC specific) */
-
- bool MGLAPI EVT_isKeyDown(uchar scanCode);
-
- #ifdef __cplusplus
- } /* End of "C" linkage for C++ */
- #endif
-
- #endif /* __MGLWIN_H */
-