Home | History | Annotate | Download | only in WinQuake
      1 /*
      2 Copyright (C) 1996-1997 Id Software, Inc.
      3 
      4 This program is free software; you can redistribute it and/or
      5 modify it under the terms of the GNU General Public License
      6 as published by the Free Software Foundation; either version 2
      7 of the License, or (at your option) any later version.
      8 
      9 This program is distributed in the hope that it will be useful,
     10 but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     12 
     13 See the GNU General Public License for more details.
     14 
     15 You should have received a copy of the GNU General Public License
     16 along with this program; if not, write to the Free Software
     17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     18 
     19 */
     20 // vid.h -- video driver defs
     21 
     22 #define VID_CBITS	6
     23 #define VID_GRADES	(1 << VID_CBITS)
     24 
     25 // a pixel can be one, two, or four bytes
     26 typedef byte pixel_t;
     27 
     28 typedef struct vrect_s
     29 {
     30 	int				x,y,width,height;
     31 	struct vrect_s	*pnext;
     32 } vrect_t;
     33 
     34 typedef struct
     35 {
     36 	pixel_t			*buffer;		// invisible buffer
     37 	pixel_t			*colormap;		// 256 * VID_GRADES size
     38 	unsigned short	*colormap16;	// 256 * VID_GRADES size
     39 	int				fullbright;		// index of first fullbright color
     40 	unsigned		rowbytes;	// may be > width if displayed in a window
     41 	unsigned		width;
     42 	unsigned		height;
     43 	float			aspect;		// width / height -- < 0 is taller than wide
     44 	int				numpages;
     45 	int				recalc_refdef;	// if true, recalc vid-based stuff
     46 	pixel_t			*conbuffer;
     47 	int				conrowbytes;
     48 	unsigned		conwidth;
     49 	unsigned		conheight;
     50 	int				maxwarpwidth;
     51 	int				maxwarpheight;
     52 	pixel_t			*direct;		// direct drawing to framebuffer, if not
     53 									//  NULL
     54 } viddef_t;
     55 
     56 extern	viddef_t	vid;				// global video state
     57 extern	unsigned short	d_8to16table[256];
     58 extern	unsigned	d_8to24table[256];
     59 extern void (*vid_menudrawfn)(void);
     60 extern void (*vid_menukeyfn)(int key);
     61 
     62 void	VID_SetPalette (unsigned char *palette);
     63 // called at startup and after any gamma correction
     64 
     65 void	VID_ShiftPalette (unsigned char *palette);
     66 // called for bonus and pain flashes, and for underwater color changes
     67 
     68 void	VID_Init (unsigned char *palette);
     69 // Called at startup to set up translation tables, takes 256 8 bit RGB values
     70 // the palette data will go away after the call, so it must be copied off if
     71 // the video driver will need it again
     72 
     73 void	VID_Shutdown (void);
     74 // Called at shutdown
     75 
     76 void	VID_Update (vrect_t *rects);
     77 // flushes the given rectangles from the view buffer to the screen
     78 
     79 int VID_SetMode (int modenum, unsigned char *palette);
     80 // sets the mode; only used by the Quake engine for resetting to mode 0 (the
     81 // base mode) on memory allocation failures
     82 
     83 void VID_HandlePause (qboolean pause);
     84 // called only on Win32, when pause happens, so the mouse can be released
     85 
     86