Subversion Repositories Kolibri OS

Rev

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

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