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