152 lines
5.3 KiB
C
152 lines
5.3 KiB
C
/****************************************************************************
|
|
*
|
|
* MegaGraph Graphics Library
|
|
*
|
|
* Copyright (C) 1996 SciTech Software.
|
|
* All rights reserved.
|
|
*
|
|
* Filename: $Workfile: mglwin.h $
|
|
* Version: $Revision: 1 $
|
|
*
|
|
* 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: 1/22/98 12:19p $ $Author: Jmonroe $
|
|
*
|
|
****************************************************************************/
|
|
|
|
#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 */
|