Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5131 | clevermous | 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 |