• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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