1/* 2Copyright (C) 1996-1997 Id Software, Inc. 3 4This program is free software; you can redistribute it and/or 5modify it under the terms of the GNU General Public License 6as published by the Free Software Foundation; either version 2 7of the License, or (at your option) any later version. 8 9This program is distributed in the hope that it will be useful, 10but WITHOUT ANY WARRANTY; without even the implied warranty of 11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 13See the GNU General Public License for more details. 14 15You should have received a copy of the GNU General Public License 16along with this program; if not, write to the Free Software 17Foundation, 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 26typedef byte pixel_t; 27 28typedef struct vrect_s 29{ 30 int x,y,width,height; 31 struct vrect_s *pnext; 32} vrect_t; 33 34typedef 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 56extern viddef_t vid; // global video state 57extern unsigned short d_8to16table[256]; 58extern unsigned d_8to24table[256]; 59extern void (*vid_menudrawfn)(void); 60extern void (*vid_menukeyfn)(int key); 61 62void VID_SetPalette (unsigned char *palette); 63// called at startup and after any gamma correction 64 65void VID_ShiftPalette (unsigned char *palette); 66// called for bonus and pain flashes, and for underwater color changes 67 68void 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 73void VID_Shutdown (void); 74// Called at shutdown 75 76void VID_Update (vrect_t *rects); 77// flushes the given rectangles from the view buffer to the screen 78 79int 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 83void VID_HandlePause (qboolean pause); 84// called only on Win32, when pause happens, so the mouse can be released 85 86void VID_LockBuffer (void); 87void VID_UnlockBuffer (void); 88 89#ifdef GLQUAKE 90qboolean VID_Is8bit(void); 91#endif 92 93