/****************************************************************************
*
*						MegaGraph Graphics Library
*
*                   Copyright (C) 1996 SciTech Software.
*							All rights reserved.
*
* Filename:		$Workfile:   mgldos.h  $
* Version:		$Revision:   1.9  $
*
* Language:		ANSI C
* Environment:	IBM PC (MS DOS)
*
* Description:	Header file for the MGLDOS binding for the MSDOS environment.
*
* $Date:   30 Jan 1997 17:31:58  $ $Author:   KendallB  $
*
****************************************************************************/

#ifndef	__MGLDOS_H
#define	__MGLDOS_H

#ifndef MGLDOS
#define	MGLDOS
#endif

/*---------------------- Macros and type definitions ----------------------*/

typedef void *MGL_HWND;

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

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

/* Disable/enable event handling (call before calling MGL_init */

    void MGLAPI MGL_useEvents(bool use);

/* Device context management */

    MGLDC *MGLAPI MGL_createDisplayDC(m_int numBuffers);
    MGLDC *MGLAPI MGL_createScrollingDC(m_int virtualX, m_int virtualY,
					m_int numBuffers);
    MGLDC *MGLAPI MGL_createOffscreenDC(void);
    MGLDC *MGLAPI MGL_createLinearOffscreenDC(void);
    MGLDC *MGLAPI MGL_createMemoryDC(m_int xSize, m_int ySize,
				     m_int bitsPerPixel, pixel_format_t *pf);
    bool MGLAPI MGL_destroyDC(MGLDC *dc);

/* 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);
    void MGLAPI MGL_suspend(void);
    void MGLAPI MGL_resume(void);

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