Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5131 clevermous 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 */