/* * Copyright (C) 1997-2001 Id Software, Inc. * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 * Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ /* vid_null.c -- null video driver to aid porting efforts */ /* this assumes that one of the refs is statically linked to the executable */ #include "../client/client.h" viddef_t viddef; /* global video state */ refexport_t re; refexport_t GetRefAPI(refimport_t rimp); /* * ========================================================================== * * DIRECT LINK GLUE * * ========================================================================== */ #define MAXPRINTMSG 4096 void VID_Printf(int print_level, char *fmt,...) { va_list argptr; char msg [MAXPRINTMSG]; va_start(argptr, fmt); vsnprintf(msg, sizeof(msg), fmt, argptr); va_end(argptr); if (print_level == PRINT_ALL) Com_Printf("%s", msg); else Com_DPrintf("%s", msg); } void VID_Error(int err_level, char *fmt,...) { va_list argptr; char msg [MAXPRINTMSG]; va_start(argptr, fmt); vsnprintf(msg, sizeof(msg), fmt, argptr); va_end(argptr); Com_Error(err_level, "%s", msg); } void VID_NewWindow(int width, int height) { viddef.width = width; viddef.height = height; } /* * * VID_GetModeInfo */ typedef struct vidmode_s { const char *description; int width , height; int mode; } vidmode_t; vidmode_t vid_modes[] = { {"Mode 0: 320x240", 320, 240, 0}, {"Mode 1: 400x300", 400, 300, 1}, {"Mode 2: 512x384", 512, 384, 2}, {"Mode 3: 640x480", 640, 480, 3}, {"Mode 4: 800x600", 800, 600, 4}, {"Mode 5: 960x720", 960, 720, 5}, {"Mode 6: 1024x768", 1024, 768, 6}, {"Mode 7: 1152x864", 1152, 864, 7}, {"Mode 8: 1280x960", 1280, 960, 8}, {"Mode 9: 1600x1200", 1600, 1200, 9}, {"Mode 10: 2048x1536", 2048, 1536, 10} }; #define VID_NUM_MODES ( sizeof( vid_modes ) / sizeof( vid_modes[0] ) ) qboolean VID_GetModeInfo(int *width, int *height, int mode) { if (mode < 0 || mode >= VID_NUM_MODES) return false; *width = vid_modes[mode].width; *height = vid_modes[mode].height; return true; } void VID_Init(void) { refimport_t ri; viddef.width = 320; viddef.height = 240; ri.Cmd_AddCommand = Cmd_AddCommand; ri.Cmd_RemoveCommand = Cmd_RemoveCommand; ri.Cmd_Argc = Cmd_Argc; ri.Cmd_Argv = Cmd_Argv; ri.Cmd_ExecuteText = Cbuf_ExecuteText; ri.Con_Printf = VID_Printf; ri.Sys_Error = VID_Error; ri.FS_LoadFile = FS_LoadFile; ri.FS_FreeFile = FS_FreeFile; ri.FS_Gamedir = FS_Gamedir; ri.Vid_NewWindow = VID_NewWindow; ri.Cvar_Get = Cvar_Get; ri.Cvar_Set = Cvar_Set; ri.Cvar_SetValue = Cvar_SetValue; ri.Vid_GetModeInfo = VID_GetModeInfo; re = GetRefAPI(ri); if (re.api_version != API_VERSION) Com_Error(ERR_FATAL, "Re has incompatible api_version"); /* call the init function */ if (re.Init(NULL, NULL) == -1) Com_Error(ERR_FATAL, "Couldn't start refresh"); } void VID_Shutdown(void) { if (re.Shutdown) re.Shutdown(); } void VID_CheckChanges(void) { } void VID_MenuInit(void) { } void VID_MenuDraw(void) { } const char * VID_MenuKey(int k) { return NULL; }