1 // Taken from FreeType 2 (www.freetype.org)
3 #undef WIN32_LEAN_AND_MEAN
7 #include <win32k/bitmaps.h>
8 #include "../eng/objects.h"
11 #include <win32k/debug1.h>
13 // #include "grfont.h"
14 // #include <string.h>
18 const unsigned char font_8x8
[2048] =
20 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
21 0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,
22 0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E,
23 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00,
24 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00,
25 0x38, 0x7C, 0x38, 0xFE, 0xFE, 0x92, 0x10, 0x7C,
26 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x7C,
27 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00,
28 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF,
29 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00,
30 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF,
31 0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78,
32 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18,
33 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x70, 0xF0, 0xE0,
34 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x67, 0xE6, 0xC0,
35 0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99,
36 0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00,
37 0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00,
38 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18,
39 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00,
40 0x7F, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x00,
41 0x3E, 0x63, 0x38, 0x6C, 0x6C, 0x38, 0x86, 0xFC,
42 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00,
43 0x18, 0x3C, 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF,
44 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00,
45 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00,
46 0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00,
47 0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, 0x00, 0x00,
48 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00,
49 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00,
50 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00,
51 0x00, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00,
52 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
53 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00,
54 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
55 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
56 0x18, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x18, 0x00,
57 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
58 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00,
59 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
60 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00,
61 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00,
62 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
63 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00,
64 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
65 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
66 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
67 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00,
68 0x7C, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0x7C, 0x00,
69 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00,
70 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, 0xFC, 0x00,
71 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
72 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00,
73 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
74 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00,
75 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
76 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00,
77 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00,
78 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00,
79 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30,
80 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00,
81 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00,
82 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00,
83 0x3C, 0x66, 0x0C, 0x18, 0x18, 0x00, 0x18, 0x00,
84 0x7C, 0xC6, 0xDE, 0xDE, 0xDC, 0xC0, 0x7C, 0x00,
85 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x00,
86 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00,
87 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00,
88 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00,
89 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00,
90 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00,
91 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3A, 0x00,
92 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00,
93 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
94 0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00,
95 0xE6, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0xE6, 0x00,
96 0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00,
97 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
98 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
99 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00,
100 0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00,
101 0x7C, 0xC6, 0xC6, 0xC6, 0xD6, 0x7C, 0x0E, 0x00,
102 0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00,
103 0x7C, 0xC6, 0xE0, 0x78, 0x0E, 0xC6, 0x7C, 0x00,
104 0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
105 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFC, 0x00,
106 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
107 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
108 0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0x00,
109 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00,
110 0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00,
111 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00,
112 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00,
113 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
114 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00,
115 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
116 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
117 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
118 0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xDC, 0x00,
119 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
120 0x1C, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0x76, 0x00,
121 0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
122 0x38, 0x6C, 0x64, 0xF0, 0x60, 0x60, 0xF0, 0x00,
123 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
124 0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00,
125 0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
126 0x0C, 0x00, 0x1C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78,
127 0xE0, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00,
128 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
129 0x00, 0x00, 0xCC, 0xFE, 0xFE, 0xD6, 0xD6, 0x00,
130 0x00, 0x00, 0xB8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
131 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
132 0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0,
133 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E,
134 0x00, 0x00, 0xDC, 0x76, 0x62, 0x60, 0xF0, 0x00,
135 0x00, 0x00, 0x7C, 0xC0, 0x70, 0x1C, 0xF8, 0x00,
136 0x10, 0x30, 0xFC, 0x30, 0x30, 0x34, 0x18, 0x00,
137 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
138 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
139 0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
140 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00,
141 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
142 0x00, 0x00, 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00,
143 0x1C, 0x30, 0x30, 0xE0, 0x30, 0x30, 0x1C, 0x00,
144 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
145 0xE0, 0x30, 0x30, 0x1C, 0x30, 0x30, 0xE0, 0x00,
146 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
147 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0x00,
148 0x7C, 0xC6, 0xC0, 0xC6, 0x7C, 0x0C, 0x06, 0x7C,
149 0x00, 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
150 0x1C, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
151 0x7E, 0x81, 0x3C, 0x06, 0x3E, 0x66, 0x3B, 0x00,
152 0xCC, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
153 0xE0, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
154 0x30, 0x30, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
155 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0x78, 0x0C, 0x38,
156 0x7E, 0x81, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
157 0xCC, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
158 0xE0, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
159 0xCC, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
160 0x7C, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00,
161 0xE0, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
162 0xC6, 0x10, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
163 0x30, 0x30, 0x00, 0x78, 0xCC, 0xFC, 0xCC, 0x00,
164 0x1C, 0x00, 0xFC, 0x60, 0x78, 0x60, 0xFC, 0x00,
165 0x00, 0x00, 0x7F, 0x0C, 0x7F, 0xCC, 0x7F, 0x00,
166 0x3E, 0x6C, 0xCC, 0xFE, 0xCC, 0xCC, 0xCE, 0x00,
167 0x78, 0x84, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
168 0x00, 0xCC, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
169 0x00, 0xE0, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
170 0x78, 0x84, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
171 0x00, 0xE0, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
172 0x00, 0xCC, 0x00, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
173 0xC3, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x18, 0x00,
174 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
175 0x18, 0x18, 0x7E, 0xC0, 0xC0, 0x7E, 0x18, 0x18,
176 0x38, 0x6C, 0x64, 0xF0, 0x60, 0xE6, 0xFC, 0x00,
177 0xCC, 0xCC, 0x78, 0x30, 0xFC, 0x30, 0xFC, 0x30,
178 0xF8, 0xCC, 0xCC, 0xFA, 0xC6, 0xCF, 0xC6, 0xC3,
179 0x0E, 0x1B, 0x18, 0x3C, 0x18, 0x18, 0xD8, 0x70,
180 0x1C, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
181 0x38, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
182 0x00, 0x1C, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
183 0x00, 0x1C, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
184 0x00, 0xF8, 0x00, 0xB8, 0xCC, 0xCC, 0xCC, 0x00,
185 0xFC, 0x00, 0xCC, 0xEC, 0xFC, 0xDC, 0xCC, 0x00,
186 0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00,
187 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00,
188 0x18, 0x00, 0x18, 0x18, 0x30, 0x66, 0x3C, 0x00,
189 0x00, 0x00, 0x00, 0xFC, 0xC0, 0xC0, 0x00, 0x00,
190 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x0C, 0x00, 0x00,
191 0xC6, 0xCC, 0xD8, 0x36, 0x6B, 0xC2, 0x84, 0x0F,
192 0xC3, 0xC6, 0xCC, 0xDB, 0x37, 0x6D, 0xCF, 0x03,
193 0x18, 0x00, 0x18, 0x18, 0x3C, 0x3C, 0x18, 0x00,
194 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00,
195 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00,
196 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88,
197 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA,
198 0xDB, 0xF6, 0xDB, 0x6F, 0xDB, 0x7E, 0xD7, 0xED,
199 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
200 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18,
201 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18,
202 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36,
203 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36,
204 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18,
205 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36,
206 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
207 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36,
208 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00,
209 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00,
210 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00,
211 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18,
212 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00,
213 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18,
215 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18,
216 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
217 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18,
218 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18,
219 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36,
220 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00,
221 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36,
222 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00,
223 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36,
224 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36,
225 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00,
226 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36,
227 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00,
228 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18,
230 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36,
231 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00,
232 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00,
233 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18,
234 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36,
235 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36,
236 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18,
237 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18,
239 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
240 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
241 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
242 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
243 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
244 0x00, 0x00, 0x76, 0xDC, 0xC8, 0xDC, 0x76, 0x00,
245 0x00, 0x78, 0xCC, 0xF8, 0xCC, 0xF8, 0xC0, 0xC0,
246 0x00, 0xFC, 0xCC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
247 0x00, 0x00, 0xFE, 0x6C, 0x6C, 0x6C, 0x6C, 0x00,
248 0xFC, 0xCC, 0x60, 0x30, 0x60, 0xCC, 0xFC, 0x00,
249 0x00, 0x00, 0x7E, 0xD8, 0xD8, 0xD8, 0x70, 0x00,
250 0x00, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0xC0,
251 0x00, 0x76, 0xDC, 0x18, 0x18, 0x18, 0x18, 0x00,
252 0xFC, 0x30, 0x78, 0xCC, 0xCC, 0x78, 0x30, 0xFC,
253 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x6C, 0x38, 0x00,
254 0x38, 0x6C, 0xC6, 0xC6, 0x6C, 0x6C, 0xEE, 0x00,
255 0x1C, 0x30, 0x18, 0x7C, 0xCC, 0xCC, 0x78, 0x00,
256 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x00, 0x00,
257 0x06, 0x0C, 0x7E, 0xDB, 0xDB, 0x7E, 0x60, 0xC0,
258 0x38, 0x60, 0xC0, 0xF8, 0xC0, 0x60, 0x38, 0x00,
259 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
260 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00,
261 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00,
262 0x60, 0x30, 0x18, 0x30, 0x60, 0x00, 0xFC, 0x00,
263 0x18, 0x30, 0x60, 0x30, 0x18, 0x00, 0xFC, 0x00,
264 0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18,
265 0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0x70,
266 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00,
267 0x00, 0x76, 0xDC, 0x00, 0x76, 0xDC, 0x00, 0x00,
268 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00,
269 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
270 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
271 0x0F, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x3C, 0x1C,
272 0x58, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00,
273 0x70, 0x98, 0x30, 0x60, 0xF8, 0x00, 0x00, 0x00,
274 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00,
275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
278 static SURFOBJ
*CharCellSurfObj
;
279 static HBITMAP hCharCellBitmap
;
281 VOID
BitmapToSurf(HDC hdc
, PSURFGDI SurfGDI
, SURFOBJ
*SurfObj
, PBITMAPOBJ Bitmap
);
283 // Set things up for a character cell surface
284 void CreateCellCharSurface()
289 CharCellSurfObj
= ExAllocatePool(NonPagedPool
, sizeof(SURFOBJ
));
290 surfgdi
= ExAllocatePool(NonPagedPool
, sizeof(SURFGDI
));
292 hCharCellBitmap
= W32kCreateBitmap(8, 8, 1, 8, NULL
); // 8x8, 1 plane, 8 bits per pel
294 pbo
= BITMAPOBJ_HandleToPtr(hCharCellBitmap
);
296 // VOID BitmapToSurf(HDC hdc, PSURFGDI SurfGDI, PSURFOBJ SurfObj, PBITMAPOBJ Bitmap)
297 BitmapToSurf(0, surfgdi
, CharCellSurfObj
, pbo
); // Make the bitmap a surface
298 BITMAPOBJ_ReleasePtr( hCharCellBitmap
);
301 void grWriteCellChar(SURFOBJ
*target
,
310 char *bigbit
, *mover
;
311 unsigned char thebyte
, thebit
, idxColor
;
312 int i
, j
, charcode8
, i8
;
314 if (charcode
< 0 || charcode
> 255)
319 DestRect
.right
= x
+8;
320 DestRect
.bottom
= y
+8;
325 bigbit
= ExAllocatePool(NonPagedPool
, 256);
327 // Explode the 1BPP character cell into an 8BPP one due to current GDI limitations.. major FIXME
328 charcode8
= charcode
* 8;
333 thebyte
= font_8x8
[charcode8
+ i
];
337 thebit
= thebyte
& (1 << j
);
338 if(thebit
>0) thebit
= 1;
344 W32kSetBitmapBits(hCharCellBitmap
, 256, bigbit
);
346 // Blt bitmap to screen
347 EngBitBlt(target
, CharCellSurfObj
, NULL
, NULL
, NULL
, &DestRect
, &SourcePoint
, NULL
, NULL
, NULL
, NULL
);
352 void grWriteCellString(SURFOBJ
*target
,
360 grWriteCellChar(target
, x
, y
, *string
++, color
);
365 static int gr_cursor_x
= 0;
366 static int gr_cursor_y
= 0;
367 static PBITMAPOBJ gr_text_bitmap
= 0;
368 static int gr_margin_right
= 0;
369 static int gr_margin_top
= 0;
371 void grGotobitmap(PBITMAPOBJ bitmap
)
373 gr_text_bitmap
= bitmap
;
376 void grSetMargin(int right
, int top
)
378 gr_margin_top
= top
<< 3;
379 gr_margin_right
= right
<< 3;
382 void grGotoxy(int x
, int y
)
388 void grWrite(const char* string
)
394 // color.value = 127;
395 grWriteCellString( gr_text_bitmap
,
396 gr_margin_right
+ (gr_cursor_x
<< 3),
397 gr_margin_top
+ (gr_cursor_y
<< 3),
401 gr_cursor_x
+= strlen(string
);
411 void grWriteln(const char* string
)