migrate substitution keywords to SVN
[reactos.git] / reactos / drivers / dd / bootvid / bootvid.h
1 /*
2 * ReactOS Boot video driver
3 *
4 * Copyright (C) 2003 Casper S. Hornstroup
5 * Copyright (C) 2004 Filip Navara
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 *
21 * $Id$
22 */
23
24 #ifndef _BOOTVID_H
25 #define _BOOTVID_H
26
27 #define PALETTE_FADE_STEPS 20
28 #define PALETTE_FADE_TIME 20 * 10000 /* 20ms */
29
30 /*
31 * Windows Bitmap structures
32 */
33
34 #define RT_BITMAP 2
35
36 typedef struct tagRGBQUAD
37 {
38 unsigned char rgbBlue;
39 unsigned char rgbGreen;
40 unsigned char rgbRed;
41 unsigned char rgbReserved;
42 } RGBQUAD, *PRGBQUAD;
43
44 typedef long FXPT2DOT30;
45
46 typedef struct tagCIEXYZ
47 {
48 FXPT2DOT30 ciexyzX;
49 FXPT2DOT30 ciexyzY;
50 FXPT2DOT30 ciexyzZ;
51 } CIEXYZ, *LPCIEXYZ;
52
53 typedef struct tagCIEXYZTRIPLE
54 {
55 CIEXYZ ciexyzRed;
56 CIEXYZ ciexyzGreen;
57 CIEXYZ ciexyzBlue;
58 } CIEXYZTRIPLE, *LPCIEXYZTRIPLE;
59
60 typedef struct {
61 DWORD bV5Size;
62 LONG bV5Width;
63 LONG bV5Height;
64 WORD bV5Planes;
65 WORD bV5BitCount;
66 DWORD bV5Compression;
67 DWORD bV5SizeImage;
68 LONG bV5XPelsPerMeter;
69 LONG bV5YPelsPerMeter;
70 DWORD bV5ClrUsed;
71 DWORD bV5ClrImportant;
72 DWORD bV5RedMask;
73 DWORD bV5GreenMask;
74 DWORD bV5BlueMask;
75 DWORD bV5AlphaMask;
76 DWORD bV5CSType;
77 CIEXYZTRIPLE bV5Endpoints;
78 DWORD bV5GammaRed;
79 DWORD bV5GammaGreen;
80 DWORD bV5GammaBlue;
81 DWORD bV5Intent;
82 DWORD bV5ProfileData;
83 DWORD bV5ProfileSize;
84 DWORD bV5Reserved;
85 } BITMAPV5HEADER, *PBITMAPV5HEADER;
86
87 /*
88 * Private driver structures
89 */
90
91 typedef struct {
92 ULONG r;
93 ULONG g;
94 ULONG b;
95 } FADER_PALETTE_ENTRY;
96
97 typedef struct _VGA_REGISTERS
98 {
99 UCHAR CRT[24];
100 UCHAR Attribute[21];
101 UCHAR Graphics[9];
102 UCHAR Sequencer[5];
103 UCHAR Misc;
104 } VGA_REGISTERS, *PVGA_REGISTERS;
105
106 /* VGA registers */
107 #define MISC (PUCHAR)0x3c2
108 #define SEQ (PUCHAR)0x3c4
109 #define SEQDATA (PUCHAR)0x3c5
110 #define CRTC (PUCHAR)0x3d4
111 #define CRTCDATA (PUCHAR)0x3d5
112 #define GRAPHICS (PUCHAR)0x3ce
113 #define GRAPHICSDATA (PUCHAR)0x3cf
114 #define ATTRIB (PUCHAR)0x3c0
115 #define STATUS (PUCHAR)0x3da
116 #define PELMASK (PUCHAR)0x3c6
117 #define PELINDEX (PUCHAR)0x3c8
118 #define PELDATA (PUCHAR)0x3c9
119
120 /* In pixelsups.S */
121 extern VOID
122 InbvPutPixels(int x, int y, unsigned long c);
123
124 #endif /* _BOOTVID_H */