|
|
1.1 root 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: void VID_LockBuffer (void);
87: void VID_UnlockBuffer (void);
88:
89: #ifdef GLQUAKE
90: qboolean VID_Is8bit(void);
91: #endif
92:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.