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 */ |