text: /*
  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);
          vsprintf (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);
          vsprintf (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;
  }
  