ref: 2433bad34328371645a8c869c71d2c2cc9b46d72
dir: /QW/scitech/include/mglwin.h/
/**************************************************************************** * * 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 */