SRB2/src/i_video.h

140 lines
2.7 KiB
C

// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 1993-1996 by id Software, Inc.
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2019 by Sonic Team Junior.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file i_video.h
/// \brief System specific interface stuff.
#ifndef __I_VIDEO__
#define __I_VIDEO__
#include "doomtype.h"
#ifdef __GNUG__
#pragma interface
#endif
typedef enum
{
/// Software
render_soft = 1,
/// OpenGL
render_opengl = 2,
/// Dedicated
render_none = 3 // for dedicated server
} rendermode_t;
/** \brief currect render mode
*/
extern rendermode_t rendermode;
/** \brief use highcolor modes if true
*/
extern boolean highcolor;
/** \brief setup video mode
*/
void I_StartupGraphics(void);
void I_StartupHardwareGraphics(void);
/** \brief restore old video mode
*/
void I_ShutdownGraphics(void);
/** \brief The I_SetPalette function
\param palette Takes full 8 bit values
\return void
*/
void I_SetPalette(RGBA_t *palette);
/** \brief return the number of video modes
*/
INT32 VID_NumModes(void);
/** \brief The VID_GetModeForSize function
\param w width
\param h height
\return vidmode closest to w : h
*/
INT32 VID_GetModeForSize(INT32 w, INT32 h);
/** \brief The VID_SetMode function
Set the video mode right now,
the video mode change is delayed until the start of the next refresh
by setting the setmodeneeded to a value >0
setup a video mode, this is to be called from the menu
\param modenum video mode to set to
\return currect video mode
*/
INT32 VID_SetMode(INT32 modenum);
void VID_CheckRenderer(void);
/** \brief The VID_GetModeName function
\param modenum video mode number
\return name of video mode
*/
const char *VID_GetModeName(INT32 modenum);
void VID_PrepareModeList(void); /// note hack for SDL
/** \brief can video system do fullscreen
*/
extern boolean allow_fullscreen;
/** \brief Update video system without updating frame
*/
void I_UpdateNoBlit(void);
/** \brief Update video system with updating frame
*/
void I_FinishUpdate(void);
/** \brief I_FinishUpdate(), but vsync disabled
*/
void I_UpdateNoVsync(void);
/** \brief Wait for vertical retrace or pause a bit.
\param count max wait
\return void
*/
void I_WaitVBL(INT32 count);
/** \brief The I_ReadScreen function
\param scr buffer to copy screen to
\return void
*/
void I_ReadScreen(UINT8 *scr);
/** \brief Start disk icon
*/
void I_BeginRead(void);
/** \brief Stop disk icon
*/
void I_EndRead(void);
#endif