2 * FreeRDP: A Remote Desktop Protocol Client
5 * Copyright 2010 Marc-Andre Moreau <marcandre.moreau@gmail.com>
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
23 #include <freerdp/freerdp.h>
25 #include <freerdp/gdi/gdi.h>
27 #include <freerdp/gdi/dc.h>
28 #include <freerdp/gdi/pen.h>
29 #include <freerdp/gdi/line.h>
30 #include <freerdp/gdi/shape.h>
31 #include <freerdp/gdi/brush.h>
32 #include <freerdp/gdi/region.h>
33 #include <freerdp/gdi/bitmap.h>
34 #include <freerdp/gdi/palette.h>
35 #include <freerdp/gdi/drawing.h>
36 #include <freerdp/gdi/clipping.h>
37 #include <freerdp/gdi/32bpp.h>
39 #include "test_libgdi.h"
41 int init_libgdi_suite(void)
46 int clean_libgdi_suite(void)
51 int add_libgdi_suite(void)
53 add_test_suite(libgdi);
55 add_test_function(gdi_GetDC);
56 add_test_function(gdi_CreateCompatibleDC);
57 add_test_function(gdi_CreateBitmap);
58 add_test_function(gdi_CreateCompatibleBitmap);
59 add_test_function(gdi_CreatePen);
60 add_test_function(gdi_CreateSolidBrush);
61 add_test_function(gdi_CreatePatternBrush);
62 add_test_function(gdi_CreateRectRgn);
63 add_test_function(gdi_CreateRect);
64 add_test_function(gdi_GetPixel);
65 add_test_function(gdi_SetPixel);
66 add_test_function(gdi_SetROP2);
67 add_test_function(gdi_MoveToEx);
68 add_test_function(gdi_LineTo);
69 add_test_function(gdi_Ellipse);
70 add_test_function(gdi_PtInRect);
71 add_test_function(gdi_FillRect);
72 add_test_function(gdi_BitBlt_32bpp);
73 add_test_function(gdi_BitBlt_16bpp);
74 add_test_function(gdi_BitBlt_8bpp);
75 add_test_function(gdi_ClipCoords);
76 add_test_function(gdi_InvalidateRegion);
81 /* BitBlt() Test Data */
83 /* source bitmap (16x16) */
84 unsigned char bmp_SRC[256] =
86 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
87 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
88 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
89 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
90 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
91 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
92 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
93 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
94 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
95 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
96 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
97 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
98 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
99 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
100 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
101 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
104 /* destination bitmap (16x16) */
105 unsigned char bmp_DST[256] =
107 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
108 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
109 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
110 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
111 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
112 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
113 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
114 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
115 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
116 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
117 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
118 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
119 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
120 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
121 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
122 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
125 /* pattern bitmap (8x8) */
126 unsigned char bmp_PAT[64] =
128 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
129 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
130 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
131 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
132 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
133 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
134 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
135 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
138 /* SRCCOPY (0x00CC0020) */
139 unsigned char bmp_SRCCOPY[256] =
141 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
142 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
143 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
144 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
145 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
146 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
147 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
148 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
149 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
150 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
151 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
152 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
153 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
154 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
155 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
156 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
159 /* BLACKNESS (0x00000042) */
160 unsigned char bmp_BLACKNESS[256] =
162 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
163 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
164 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
165 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
166 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
167 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
168 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
169 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
170 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
171 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
172 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
173 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
174 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
175 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
176 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
177 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
180 /* WHITENESS (0x00FF0062) */
181 unsigned char bmp_WHITENESS[256] =
183 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
184 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
185 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
186 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
187 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
188 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
189 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
190 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
191 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
192 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
193 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
194 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
195 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
196 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
197 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
198 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
201 /* SRCAND (0x008800C6) */
202 unsigned char bmp_SRCAND[256] =
204 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
205 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
206 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
207 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
208 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
209 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
210 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
211 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
212 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
213 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
214 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
215 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
216 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
217 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
218 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
219 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
222 /* SRCPAINT (0x00EE0086) */
223 unsigned char bmp_SRCPAINT[256] =
225 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
226 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
227 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
228 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
229 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
230 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
231 "\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
232 "\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
233 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF"
234 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF"
235 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF"
236 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF"
237 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
238 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
239 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
240 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
243 /* SRCINVERT (0x00660046) */
244 unsigned char bmp_SRCINVERT[256] =
246 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
247 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
248 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00"
249 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00"
250 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
251 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
252 "\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
253 "\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
254 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF"
255 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF"
256 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF"
257 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF"
258 "\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
259 "\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
260 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
261 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
264 /* SRCERASE (0x00440328) */
265 unsigned char bmp_SRCERASE[256] =
267 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
268 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
269 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
270 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
271 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
272 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
273 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
274 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
275 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
276 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
277 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
278 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
279 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
280 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
281 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
282 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
285 /* NOTSRCCOPY (0x00330008) */
286 unsigned char bmp_NOTSRCCOPY[256] =
288 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
289 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
290 "\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00"
291 "\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00"
292 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
293 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
294 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
295 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
296 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
297 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
298 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
299 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
300 "\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00"
301 "\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00"
302 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
303 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
306 /* NOTSRCERASE (0x001100A6) */
307 unsigned char bmp_NOTSRCERASE[256] =
309 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
310 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
311 "\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
312 "\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
313 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
314 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
315 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
316 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
317 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
318 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
319 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
320 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
321 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00"
322 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00"
323 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
324 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
327 /* DSTINVERT (0x00550009) */
328 unsigned char bmp_DSTINVERT[256] =
330 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
331 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
332 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
333 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
334 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
335 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
336 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
337 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
338 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
339 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
340 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
341 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
342 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
343 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
344 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
345 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
348 /* SPna (0x000C0324) */
349 unsigned char bmp_SPna[256] =
351 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
352 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
353 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00"
354 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00"
355 "\x00\x00\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
356 "\x00\x00\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
357 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
358 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
359 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
360 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
361 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\x00"
362 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\x00"
363 "\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
364 "\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
365 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
366 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
369 /* MERGEPAINT (0x00BB0226) */
370 unsigned char bmp_MERGEPAINT[256] =
372 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
373 "\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
374 "\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
375 "\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
376 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
377 "\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
378 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
379 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
380 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
381 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
382 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
383 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"
384 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00"
385 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00"
386 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
387 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"
390 /* MERGECOPY (0x00C000CA) */
391 unsigned char bmp_MERGECOPY[256] =
393 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
394 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
395 "\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
396 "\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
397 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\x00"
398 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\x00"
399 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
400 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
401 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
402 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
403 "\x00\x00\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
404 "\x00\x00\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
405 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00"
406 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\x00\x00"
407 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
408 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
411 /* PATPAINT (0x00FB0A09) */
412 unsigned char bmp_PATPAINT[256] =
414 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
415 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
416 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
417 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
418 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
419 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
420 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
421 "\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
422 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
423 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
424 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
425 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
426 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00"
427 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
428 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
429 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
432 /* PATCOPY (0x00F00021) */
433 unsigned char bmp_PATCOPY[256] =
435 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
436 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
437 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
438 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
439 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
440 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
441 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
442 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
443 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
444 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
445 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
446 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
447 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
448 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
449 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
450 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
453 /* PATINVERT (0x005A0049) */
454 unsigned char bmp_PATINVERT[256] =
456 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
457 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
458 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
459 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
460 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
461 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
462 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
463 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
464 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
465 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
466 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
467 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
468 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
469 "\x00\x00\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\x00\x00"
470 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
471 "\xFF\xFF\x00\x00\xFF\xFF\x00\x00\x00\x00\xFF\xFF\x00\x00\xFF\xFF"
474 /* LineTo() Test Data */
476 unsigned char line_to_case_1[256] =
478 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
479 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
480 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
481 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
482 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
483 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
484 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
485 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
486 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
487 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
488 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
489 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
490 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
491 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
492 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
493 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
496 unsigned char line_to_case_2[256] =
498 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
499 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
500 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
501 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
502 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
503 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
504 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
505 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
506 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
507 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
508 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
509 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
510 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
511 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
512 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
513 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
516 unsigned char line_to_case_3[256] =
518 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
519 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
520 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
521 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
522 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
523 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
524 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
525 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
526 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
527 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
528 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
529 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
530 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
531 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
532 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
533 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
536 unsigned char line_to_case_4[256] =
538 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
539 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
540 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
541 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
542 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
543 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
544 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
545 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
546 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
547 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
548 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
549 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
550 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
551 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
552 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
553 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
556 unsigned char line_to_case_5[256] =
558 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
559 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
560 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
561 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
562 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
563 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
564 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
565 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
566 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
567 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
568 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
569 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
570 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
571 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
572 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
573 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
576 unsigned char line_to_case_6[256] =
578 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
579 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
580 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
581 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
582 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
583 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
584 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
585 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
586 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
587 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
588 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
589 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
590 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
591 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
592 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
593 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
596 unsigned char line_to_case_7[256] =
598 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
599 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
600 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
601 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
602 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
603 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
604 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
605 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
606 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
607 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
608 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
609 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
610 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
611 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
612 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
613 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
616 unsigned char line_to_case_8[256] =
618 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
619 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
620 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
621 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
622 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
623 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
624 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
625 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
626 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
627 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
628 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
629 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
630 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
631 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
632 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
633 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
636 unsigned char line_to_case_9[256] =
638 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
639 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
640 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
641 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
642 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
643 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
644 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
645 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
646 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
647 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
648 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
649 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
650 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
651 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
652 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
653 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
656 unsigned char line_to_case_10[256] =
658 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
659 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
660 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
661 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
662 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
663 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
664 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
665 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
666 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
667 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
668 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
669 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
670 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
671 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
672 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
673 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
676 unsigned char line_to_case_11[256] =
678 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
679 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
680 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
681 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
682 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
683 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
684 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
685 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
686 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
687 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
688 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
689 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
690 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
691 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
692 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
693 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
696 unsigned char line_to_R2_BLACK[256] =
698 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
699 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
700 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
701 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
702 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
703 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
704 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
705 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
706 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
707 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
708 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
709 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
710 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
711 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
712 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
713 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
716 unsigned char line_to_R2_NOTMERGEPEN[256] =
718 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
719 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
720 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
721 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
722 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
723 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
724 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
725 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
726 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
727 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
728 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
729 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
730 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
731 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
732 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
733 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
736 unsigned char line_to_R2_MASKNOTPEN[256] =
738 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
739 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
740 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
741 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
742 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
743 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
744 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
745 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
746 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
747 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
748 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
749 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
750 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
751 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
752 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
753 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
756 unsigned char line_to_R2_NOTCOPYPEN[256] =
758 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
759 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
760 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
761 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
762 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
763 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
764 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
765 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
766 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
767 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
768 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
769 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
770 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
771 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
772 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
773 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
776 unsigned char line_to_R2_MASKPENNOT[256] =
778 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
779 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
780 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
781 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
782 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
783 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
784 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
785 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
786 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
787 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
788 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
789 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
790 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
791 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
792 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
793 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
796 unsigned char line_to_R2_NOT[256] =
798 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
799 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
800 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
801 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
802 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
803 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
804 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
805 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
806 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
807 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
808 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
809 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
810 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
811 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
812 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
813 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
816 unsigned char line_to_R2_XORPEN[256] =
818 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
819 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
820 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
821 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
822 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
823 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
824 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
825 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
826 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
827 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
828 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
829 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
830 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
831 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
832 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
833 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
836 unsigned char line_to_R2_NOTMASKPEN[256] =
838 "\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
839 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
840 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
841 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
842 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
843 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
844 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
845 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
846 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
847 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
848 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
849 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
850 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
851 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
852 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
853 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
856 unsigned char line_to_R2_MASKPEN[256] =
858 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
859 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
860 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
861 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
862 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
863 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
864 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
865 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
866 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
867 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
868 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
869 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
870 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
871 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
872 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
873 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
876 unsigned char line_to_R2_NOTXORPEN[256] =
878 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
879 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
880 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
881 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
882 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
883 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
884 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
885 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
886 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
887 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
888 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
889 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
890 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
891 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
892 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
893 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
896 unsigned char line_to_R2_NOP[256] =
898 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
899 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
900 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
901 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
902 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
903 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
904 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
905 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
906 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
907 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
908 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
909 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
910 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
911 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
912 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
913 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
916 unsigned char line_to_R2_MERGENOTPEN[256] =
918 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
919 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
920 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
921 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
922 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
923 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
924 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
925 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
926 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
927 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
928 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
929 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
930 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
931 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
932 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
933 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
936 unsigned char line_to_R2_COPYPEN[256] =
938 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
939 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
940 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
941 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
942 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
943 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
944 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
945 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
946 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
947 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
948 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
949 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
950 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
951 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
952 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
953 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
956 unsigned char line_to_R2_MERGEPENNOT[256] =
958 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
959 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
960 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
961 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
962 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
963 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
964 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
965 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
966 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
967 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
968 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
969 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
970 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
971 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
972 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
973 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
976 unsigned char line_to_R2_MERGEPEN[256] =
978 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
979 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
980 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
981 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
982 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
983 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
984 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
985 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
986 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
987 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
988 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
989 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
990 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
991 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
992 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
993 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
996 unsigned char line_to_R2_WHITE[256] =
998 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
999 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1000 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1001 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1002 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1003 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1004 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1005 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1006 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1007 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1008 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1009 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1010 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1011 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1012 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1013 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1016 /* PolylineTo() Test Data */
1018 unsigned char polyline_to_case_1[256] =
1020 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1021 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1022 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1023 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1024 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
1025 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF"
1026 "\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
1027 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF"
1028 "\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
1029 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF"
1030 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1031 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1032 "\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
1033 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF"
1034 "\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00"
1035 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1038 unsigned char polyline_to_case_2[256] =
1040 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1041 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1042 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1043 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1044 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1045 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1046 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1047 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1048 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1049 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1050 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1051 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1052 "\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF"
1053 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1054 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1055 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1058 /* Ellipse() Test Data */
1060 unsigned char ellipse_case_1[256] =
1062 "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
1063 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1064 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1065 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1066 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
1067 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1068 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1069 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1070 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1071 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1072 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1073 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
1074 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1075 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1076 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1077 "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
1080 unsigned char ellipse_case_2[256] =
1082 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1083 "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
1084 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1085 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1086 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1087 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1088 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
1089 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
1090 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
1091 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
1092 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1093 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1094 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1095 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1096 "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
1097 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1100 unsigned char ellipse_case_3[256] =
1102 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1103 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1104 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1105 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1106 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1107 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
1108 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1109 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1110 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1111 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1112 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
1113 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1114 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1115 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1116 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1117 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1120 /* Polygon() Test Data */
1122 unsigned char polygon_case_1[256] =
1124 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1125 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1126 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1127 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF"
1128 "\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
1129 "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF"
1130 "\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1131 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF"
1132 "\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
1133 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF"
1134 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1135 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1136 "\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
1137 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF"
1138 "\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1139 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
1142 unsigned char polygon_case_2[256] =
1144 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1145 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1146 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1147 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1148 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1149 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1150 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1151 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1152 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1153 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1154 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1155 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1156 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1157 "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF"
1158 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1159 "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
1162 int CompareBitmaps(HGDI_BITMAP hBmp1, HGDI_BITMAP hBmp2)
1167 int minw = (hBmp1->width < hBmp2->width) ? hBmp1->width : hBmp2->width;
1168 int minh = (hBmp1->height < hBmp2->height) ? hBmp1->height : hBmp2->height;
1170 if (hBmp1->bitsPerPixel == hBmp2->bitsPerPixel)
1174 int bpp = hBmp1->bitsPerPixel;
1178 for (y = 0; y < minh; y++)
1180 for (x = 0; x < minw; x++)
1201 for (y = 0; y < minh; y++)
1203 for (x = 0; x < minw; x++)
1219 for (y = 0; y < minh; y++)
1221 for (x = 0; x < minw; x++)
1239 void dump_bitmap(HGDI_BITMAP hBmp, char* name)
1241 dump_data(hBmp->data, hBmp->width * hBmp->height * hBmp->bytesPerPixel, hBmp->width * hBmp->bytesPerPixel, name);
1244 void assertBitmapsEqual(HGDI_BITMAP hBmpActual, HGDI_BITMAP hBmpExpected, char *name)
1246 int bitmapsEqual = CompareBitmaps(hBmpActual, hBmpExpected);
1248 if (bitmapsEqual != 1)
1250 printf("\n%s\n", name);
1251 dump_bitmap(hBmpActual, "Actual");
1252 dump_bitmap(hBmpExpected, "Expected");
1255 CU_ASSERT(bitmapsEqual == 1);
1258 void test_gdi_GetDC(void)
1260 HGDI_DC hdc = gdi_GetDC();
1261 CU_ASSERT(hdc->bytesPerPixel == 4);
1262 CU_ASSERT(hdc->bitsPerPixel == 32);
1263 CU_ASSERT(hdc->drawMode == GDI_R2_BLACK);
1266 void test_gdi_CreateCompatibleDC(void)
1272 hdc->bytesPerPixel = 2;
1273 hdc->bitsPerPixel = 16;
1274 hdc->drawMode = GDI_R2_XORPEN;
1276 chdc = gdi_CreateCompatibleDC(hdc);
1278 CU_ASSERT(chdc->bytesPerPixel == hdc->bytesPerPixel);
1279 CU_ASSERT(chdc->bitsPerPixel == hdc->bitsPerPixel);
1280 CU_ASSERT(chdc->drawMode == hdc->drawMode);
1283 void test_gdi_CreateBitmap(void)
1289 HGDI_BITMAP hBitmap;
1294 data = (uint8*) malloc(width * height * 4);
1295 hBitmap = gdi_CreateBitmap(width, height, bpp, data);
1297 CU_ASSERT(hBitmap->objectType == GDIOBJECT_BITMAP);
1298 CU_ASSERT(hBitmap->bitsPerPixel == bpp);
1299 CU_ASSERT(hBitmap->width == width);
1300 CU_ASSERT(hBitmap->height == height);
1301 CU_ASSERT(hBitmap->data == data);
1303 gdi_DeleteObject((HGDIOBJECT) hBitmap);
1306 void test_gdi_CreateCompatibleBitmap(void)
1311 HGDI_BITMAP hBitmap;
1314 hdc->bytesPerPixel = 4;
1315 hdc->bitsPerPixel = 32;
1319 hBitmap = gdi_CreateCompatibleBitmap(hdc, width, height);
1321 CU_ASSERT(hBitmap->objectType == GDIOBJECT_BITMAP);
1322 CU_ASSERT(hBitmap->bytesPerPixel == hdc->bytesPerPixel);
1323 CU_ASSERT(hBitmap->bitsPerPixel == hdc->bitsPerPixel);
1324 CU_ASSERT(hBitmap->width == width);
1325 CU_ASSERT(hBitmap->height == height);
1326 CU_ASSERT(hBitmap->data != NULL);
1328 gdi_DeleteObject((HGDIOBJECT) hBitmap);
1331 void test_gdi_CreatePen(void)
1333 HGDI_PEN hPen = gdi_CreatePen(GDI_PS_SOLID, 8, 0xAABBCCDD);
1334 CU_ASSERT(hPen->style == GDI_PS_SOLID);
1335 CU_ASSERT(hPen->width == 8);
1336 CU_ASSERT(hPen->color == 0xAABBCCDD);
1337 gdi_DeleteObject((HGDIOBJECT) hPen);
1340 void test_gdi_CreateSolidBrush(void)
1342 HGDI_BRUSH hBrush = gdi_CreateSolidBrush(0xAABBCCDD);
1343 CU_ASSERT(hBrush->objectType == GDIOBJECT_BRUSH);
1344 CU_ASSERT(hBrush->style == GDI_BS_SOLID);
1345 CU_ASSERT(hBrush->color == 0xAABBCCDD);
1346 gdi_DeleteObject((HGDIOBJECT) hBrush);
1349 void test_gdi_CreatePatternBrush(void)
1352 HGDI_BITMAP hBitmap;
1354 hBitmap = gdi_CreateBitmap(64, 64, 32, NULL);
1355 hBrush = gdi_CreatePatternBrush(hBitmap);
1357 CU_ASSERT(hBrush->objectType == GDIOBJECT_BRUSH);
1358 CU_ASSERT(hBrush->style == GDI_BS_PATTERN);
1359 CU_ASSERT(hBrush->pattern == hBitmap);
1361 gdi_DeleteObject((HGDIOBJECT) hBitmap);
1364 void test_gdi_CreateRectRgn(void)
1371 HGDI_RGN hRegion = gdi_CreateRectRgn(x1, y1, x2, y2);
1373 CU_ASSERT(hRegion->objectType == GDIOBJECT_REGION);
1374 CU_ASSERT(hRegion->x == x1);
1375 CU_ASSERT(hRegion->y == y1);
1376 CU_ASSERT(hRegion->w == x2 - x1 + 1);
1377 CU_ASSERT(hRegion->h == y2 - y1 + 1);
1378 CU_ASSERT(hRegion->null == 0);
1380 gdi_DeleteObject((HGDIOBJECT) hRegion);
1383 void test_gdi_CreateRect(void)
1390 HGDI_RECT hRect = gdi_CreateRect(x1, y1, x2, y2);
1392 CU_ASSERT(hRect->objectType == GDIOBJECT_RECT);
1393 CU_ASSERT(hRect->left == x1);
1394 CU_ASSERT(hRect->top == y1);
1395 CU_ASSERT(hRect->right == x2);
1396 CU_ASSERT(hRect->bottom == y2);
1398 gdi_DeleteObject((HGDIOBJECT) hRect);
1401 void test_gdi_GetPixel(void)
1406 HGDI_BITMAP hBitmap;
1409 hdc->bytesPerPixel = 4;
1410 hdc->bitsPerPixel = 32;
1412 hBitmap = gdi_CreateCompatibleBitmap(hdc, width, height);
1413 gdi_SelectObject(hdc, (HGDIOBJECT) hBitmap);
1415 hBitmap->data[(64 * width * 4) + 32 * 4 + 0] = 0xDD;
1416 hBitmap->data[(64 * width * 4) + 32 * 4 + 1] = 0xCC;
1417 hBitmap->data[(64 * width * 4) + 32 * 4 + 2] = 0xBB;
1418 hBitmap->data[(64 * width * 4) + 32 * 4 + 3] = 0xAA;
1420 CU_ASSERT(gdi_GetPixel(hdc, 32, 64) == 0xAABBCCDD);
1422 gdi_DeleteObject((HGDIOBJECT) hBitmap);
1425 void test_gdi_SetPixel(void)
1430 HGDI_BITMAP hBitmap;
1433 hdc->bytesPerPixel = 4;
1434 hdc->bitsPerPixel = 32;
1436 hBitmap = gdi_CreateCompatibleBitmap(hdc, width, height);
1437 gdi_SelectObject(hdc, (HGDIOBJECT) hBitmap);
1439 gdi_SetPixel(hdc, 32, 64, 0xAABBCCDD);
1440 CU_ASSERT(gdi_GetPixel(hdc, 32, 64) == 0xAABBCCDD);
1442 gdi_SetPixel(hdc, width - 1, height - 1, 0xAABBCCDD);
1443 CU_ASSERT(gdi_GetPixel(hdc, width - 1, height - 1) == 0xAABBCCDD);
1445 gdi_DeleteObject((HGDIOBJECT) hBitmap);
1448 void test_gdi_SetROP2(void)
1450 HGDI_DC hdc = gdi_GetDC();
1451 gdi_SetROP2(hdc, GDI_R2_BLACK);
1452 CU_ASSERT(hdc->drawMode == GDI_R2_BLACK);
1455 void test_gdi_MoveToEx(void)
1459 HGDI_POINT prevPoint;
1462 hPen = gdi_CreatePen(GDI_PS_SOLID, 8, 0xAABBCCDD);
1463 gdi_SelectObject(hdc, (HGDIOBJECT) hPen);
1464 gdi_MoveToEx(hdc, 128, 256, NULL);
1466 CU_ASSERT(hdc->pen->posX == 128);
1467 CU_ASSERT(hdc->pen->posY == 256);
1469 prevPoint = (HGDI_POINT) malloc(sizeof(GDI_POINT));
1470 memset(prevPoint, '\0', sizeof(GDI_POINT));
1472 gdi_MoveToEx(hdc, 64, 128, prevPoint);
1474 CU_ASSERT(prevPoint->x == 128);
1475 CU_ASSERT(prevPoint->y == 256);
1476 CU_ASSERT(hdc->pen->posX == 64);
1477 CU_ASSERT(hdc->pen->posY == 128);
1480 void test_gdi_LineTo(void)
1486 HGDI_BITMAP hBmp_LineTo_1;
1487 HGDI_BITMAP hBmp_LineTo_2;
1488 HGDI_BITMAP hBmp_LineTo_3;
1489 HGDI_BITMAP hBmp_LineTo_4;
1490 HGDI_BITMAP hBmp_LineTo_5;
1491 HGDI_BITMAP hBmp_LineTo_6;
1492 HGDI_BITMAP hBmp_LineTo_7;
1493 HGDI_BITMAP hBmp_LineTo_8;
1494 HGDI_BITMAP hBmp_LineTo_9;
1495 HGDI_BITMAP hBmp_LineTo_10;
1496 HGDI_BITMAP hBmp_LineTo_11;
1497 HGDI_BITMAP hBmp_LineTo_R2_BLACK;
1498 HGDI_BITMAP hBmp_LineTo_R2_NOTMERGEPEN;
1499 HGDI_BITMAP hBmp_LineTo_R2_MASKNOTPEN;
1500 HGDI_BITMAP hBmp_LineTo_R2_NOTCOPYPEN;
1501 HGDI_BITMAP hBmp_LineTo_R2_MASKPENNOT;
1502 HGDI_BITMAP hBmp_LineTo_R2_NOT;
1503 HGDI_BITMAP hBmp_LineTo_R2_XORPEN;
1504 HGDI_BITMAP hBmp_LineTo_R2_NOTMASKPEN;
1505 HGDI_BITMAP hBmp_LineTo_R2_MASKPEN;
1506 HGDI_BITMAP hBmp_LineTo_R2_NOTXORPEN;
1507 HGDI_BITMAP hBmp_LineTo_R2_NOP;
1508 HGDI_BITMAP hBmp_LineTo_R2_MERGENOTPEN;
1509 HGDI_BITMAP hBmp_LineTo_R2_COPYPEN;
1510 HGDI_BITMAP hBmp_LineTo_R2_MERGEPENNOT;
1511 HGDI_BITMAP hBmp_LineTo_R2_MERGEPEN;
1512 HGDI_BITMAP hBmp_LineTo_R2_WHITE;
1513 rdpPalette* hPalette;
1515 int bitsPerPixel = 8;
1516 int bytesPerPixel = 1;
1519 hdc->bitsPerPixel = bitsPerPixel;
1520 hdc->bytesPerPixel = bytesPerPixel;
1521 gdi_SetNullClipRgn(hdc);
1523 pen = gdi_CreatePen(1, 1, 0);
1524 gdi_SelectObject(hdc, (HGDIOBJECT) pen);
1526 hBmp = gdi_CreateCompatibleBitmap(hdc, 16, 16);
1527 gdi_SelectObject(hdc, (HGDIOBJECT) hBmp);
1529 hPalette = (rdpPalette*) gdi_GetSystemPalette();
1531 clrconv = (HCLRCONV) malloc(sizeof(CLRCONV));
1533 clrconv->invert = 0;
1534 clrconv->palette = hPalette;
1536 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_1, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1537 hBmp_LineTo_1 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1539 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_2, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1540 hBmp_LineTo_2 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1542 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_3, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1543 hBmp_LineTo_3 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1545 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_4, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1546 hBmp_LineTo_4 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1548 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_5, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1549 hBmp_LineTo_5 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1551 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_5, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1552 hBmp_LineTo_5 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1554 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_6, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1555 hBmp_LineTo_6 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1557 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_7, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1558 hBmp_LineTo_7 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1560 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_8, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1561 hBmp_LineTo_8 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1563 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_9, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1564 hBmp_LineTo_9 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1566 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_10, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1567 hBmp_LineTo_10 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1569 data = (uint8*) freerdp_image_convert((uint8*) line_to_case_11, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1570 hBmp_LineTo_11 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1572 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_BLACK, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1573 hBmp_LineTo_R2_BLACK = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1575 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_NOTMERGEPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1576 hBmp_LineTo_R2_NOTMERGEPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1578 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_MASKNOTPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1579 hBmp_LineTo_R2_MASKNOTPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1581 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_NOTCOPYPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1582 hBmp_LineTo_R2_NOTCOPYPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1584 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_MASKPENNOT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1585 hBmp_LineTo_R2_MASKPENNOT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1587 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_NOT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1588 hBmp_LineTo_R2_NOT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1590 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_XORPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1591 hBmp_LineTo_R2_XORPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1593 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_NOTMASKPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1594 hBmp_LineTo_R2_NOTMASKPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1596 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_MASKPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1597 hBmp_LineTo_R2_MASKPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1599 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_NOTXORPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1600 hBmp_LineTo_R2_NOTXORPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1602 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_NOP, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1603 hBmp_LineTo_R2_NOP = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1605 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_MERGENOTPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1606 hBmp_LineTo_R2_MERGENOTPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1608 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_COPYPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1609 hBmp_LineTo_R2_COPYPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1611 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_MERGEPENNOT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1612 hBmp_LineTo_R2_MERGEPENNOT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1614 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_MERGEPEN, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1615 hBmp_LineTo_R2_MERGEPEN = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1617 data = (uint8*) freerdp_image_convert((uint8*) line_to_R2_WHITE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1618 hBmp_LineTo_R2_WHITE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1620 /* Test Case 1: (0,0) -> (15, 15) */
1621 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1622 gdi_MoveToEx(hdc, 0, 0, NULL);
1623 gdi_LineTo(hdc, 15, 15);
1624 assertBitmapsEqual(hBmp, hBmp_LineTo_1, "Case 1");
1626 /* Test Case 2: (15,15) -> (0,0) */
1627 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1628 gdi_MoveToEx(hdc, 15, 15, NULL);
1629 gdi_LineTo(hdc, 0, 0);
1630 assertBitmapsEqual(hBmp, hBmp_LineTo_2, "Case 2");
1632 /* Test Case 3: (15,0) -> (0,15) */
1633 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1634 gdi_MoveToEx(hdc, 15, 0, NULL);
1635 gdi_LineTo(hdc, 0, 15);
1636 assertBitmapsEqual(hBmp, hBmp_LineTo_3, "Case 3");
1638 /* Test Case 4: (0,15) -> (15,0) */
1639 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1640 gdi_MoveToEx(hdc, 0, 15, NULL);
1641 gdi_LineTo(hdc, 15, 0);
1642 assertBitmapsEqual(hBmp, hBmp_LineTo_4, "Case 4");
1644 /* Test Case 4: (0,15) -> (15,0) */
1645 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1646 gdi_MoveToEx(hdc, 0, 15, NULL);
1647 gdi_LineTo(hdc, 15, 0);
1648 assertBitmapsEqual(hBmp, hBmp_LineTo_4, "Case 4");
1650 /* Test Case 5: (0,8) -> (15,8) */
1651 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1652 gdi_MoveToEx(hdc, 0, 8, NULL);
1653 gdi_LineTo(hdc, 15, 8);
1654 assertBitmapsEqual(hBmp, hBmp_LineTo_5, "Case 5");
1656 /* Test Case 6: (15,8) -> (0,8) */
1657 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1658 gdi_MoveToEx(hdc, 15, 8, NULL);
1659 gdi_LineTo(hdc, 0, 8);
1660 assertBitmapsEqual(hBmp, hBmp_LineTo_6, "Case 6");
1662 /* Test Case 7: (8,0) -> (8,15) */
1663 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1664 gdi_MoveToEx(hdc, 8, 0, NULL);
1665 gdi_LineTo(hdc, 8, 15);
1666 assertBitmapsEqual(hBmp, hBmp_LineTo_7, "Case 7");
1668 /* Test Case 8: (8,15) -> (8,0) */
1669 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1670 gdi_MoveToEx(hdc, 8, 15, NULL);
1671 gdi_LineTo(hdc, 8, 0);
1672 assertBitmapsEqual(hBmp, hBmp_LineTo_8, "Case 8");
1674 /* Test Case 9: (4,4) -> (12,12) */
1675 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1676 gdi_MoveToEx(hdc, 4, 4, NULL);
1677 gdi_LineTo(hdc, 12, 12);
1678 assertBitmapsEqual(hBmp, hBmp_LineTo_9, "Case 9");
1680 /* Test Case 10: (12,12) -> (4,4) */
1681 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1682 gdi_MoveToEx(hdc, 12, 12, NULL);
1683 gdi_LineTo(hdc, 4, 4);
1684 assertBitmapsEqual(hBmp, hBmp_LineTo_10, "Case 10");
1686 /* Test Case 11: (0,0) -> (+10,+10) */
1687 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1688 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1689 gdi_MoveToEx(hdc, 0, 0, NULL);
1690 gdi_LineTo(hdc, 16 + 10, 16 + 10);
1691 assertBitmapsEqual(hBmp, hBmp_LineTo_11, "Case 11");
1693 /* Test Case 12: (0,0) -> (16,16), R2_BLACK */
1694 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1695 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1696 gdi_MoveToEx(hdc, 0, 0, NULL);
1697 gdi_SetROP2(hdc, GDI_R2_BLACK);
1698 gdi_LineTo(hdc, 16, 16);
1699 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_BLACK, "Case 12");
1701 /* Test Case 13: (0,0) -> (16,16), R2_NOTMERGEPEN */
1702 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1703 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1704 gdi_MoveToEx(hdc, 0, 0, NULL);
1705 gdi_SetROP2(hdc, GDI_R2_NOTMERGEPEN);
1706 gdi_LineTo(hdc, 16, 16);
1707 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_NOTMERGEPEN, "Case 13");
1709 /* Test Case 14: (0,0) -> (16,16), R2_MASKNOTPEN */
1710 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1711 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1712 gdi_MoveToEx(hdc, 0, 0, NULL);
1713 gdi_SetROP2(hdc, GDI_R2_MASKNOTPEN);
1714 gdi_LineTo(hdc, 16, 16);
1715 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_MASKNOTPEN, "Case 14");
1717 /* Test Case 15: (0,0) -> (16,16), R2_NOTCOPYPEN */
1718 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1719 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1720 gdi_MoveToEx(hdc, 0, 0, NULL);
1721 gdi_SetROP2(hdc, GDI_R2_NOTCOPYPEN);
1722 gdi_LineTo(hdc, 16, 16);
1723 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_NOTCOPYPEN, "Case 15");
1725 /* Test Case 16: (0,0) -> (16,16), R2_MASKPENNOT */
1726 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1727 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1728 gdi_MoveToEx(hdc, 0, 0, NULL);
1729 gdi_SetROP2(hdc, GDI_R2_MASKPENNOT);
1730 gdi_LineTo(hdc, 16, 16);
1731 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_MASKPENNOT, "Case 16");
1733 /* Test Case 17: (0,0) -> (16,16), R2_NOT */
1734 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1735 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1736 gdi_MoveToEx(hdc, 0, 0, NULL);
1737 gdi_SetROP2(hdc, GDI_R2_NOT);
1738 gdi_LineTo(hdc, 16, 16);
1739 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_NOT, "Case 17");
1741 /* Test Case 18: (0,0) -> (16,16), R2_XORPEN */
1742 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1743 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1744 gdi_MoveToEx(hdc, 0, 0, NULL);
1745 gdi_SetROP2(hdc, GDI_R2_XORPEN);
1746 gdi_LineTo(hdc, 16, 16);
1747 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_XORPEN, "Case 18");
1749 /* Test Case 19: (0,0) -> (16,16), R2_NOTMASKPEN */
1750 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1751 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1752 gdi_MoveToEx(hdc, 0, 0, NULL);
1753 gdi_SetROP2(hdc, GDI_R2_NOTMASKPEN);
1754 gdi_LineTo(hdc, 16, 16);
1755 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_NOTMASKPEN, "Case 19");
1757 /* Test Case 20: (0,0) -> (16,16), R2_MASKPEN */
1758 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1759 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1760 gdi_MoveToEx(hdc, 0, 0, NULL);
1761 gdi_SetROP2(hdc, GDI_R2_MASKPEN);
1762 gdi_LineTo(hdc, 16, 16);
1763 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_MASKPEN, "Case 20");
1765 /* Test Case 21: (0,0) -> (16,16), R2_NOTXORPEN */
1766 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1767 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1768 gdi_MoveToEx(hdc, 0, 0, NULL);
1769 gdi_SetROP2(hdc, GDI_R2_NOTXORPEN);
1770 gdi_LineTo(hdc, 16, 16);
1771 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_NOTXORPEN, "Case 21");
1773 /* Test Case 22: (0,0) -> (16,16), R2_NOP */
1774 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1775 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1776 gdi_MoveToEx(hdc, 0, 0, NULL);
1777 gdi_SetROP2(hdc, GDI_R2_NOP);
1778 gdi_LineTo(hdc, 16, 16);
1779 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_NOP, "Case 22");
1781 /* Test Case 23: (0,0) -> (16,16), R2_MERGENOTPEN */
1782 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1783 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1784 gdi_MoveToEx(hdc, 0, 0, NULL);
1785 gdi_SetROP2(hdc, GDI_R2_MERGENOTPEN);
1786 gdi_LineTo(hdc, 16, 16);
1787 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_MERGENOTPEN, "Case 23");
1789 /* Test Case 24: (0,0) -> (16,16), R2_COPYPEN */
1790 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1791 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1792 gdi_MoveToEx(hdc, 0, 0, NULL);
1793 gdi_SetROP2(hdc, GDI_R2_COPYPEN);
1794 gdi_LineTo(hdc, 16, 16);
1795 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_COPYPEN, "Case 24");
1797 /* Test Case 25: (0,0) -> (16,16), R2_MERGEPENNOT */
1798 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1799 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1800 gdi_MoveToEx(hdc, 0, 0, NULL);
1801 gdi_SetROP2(hdc, GDI_R2_MERGEPENNOT);
1802 gdi_LineTo(hdc, 16, 16);
1803 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_MERGEPENNOT, "Case 25");
1805 /* Test Case 26: (0,0) -> (16,16), R2_MERGEPEN */
1806 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1807 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1808 gdi_MoveToEx(hdc, 0, 0, NULL);
1809 gdi_SetROP2(hdc, GDI_R2_MERGEPEN);
1810 gdi_LineTo(hdc, 16, 16);
1811 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_MERGEPEN, "Case 26");
1813 /* Test Case 27: (0,0) -> (16,16), R2_WHITE */
1814 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1815 gdi_SetClipRgn(hdc, 0, 0, 16, 16);
1816 gdi_MoveToEx(hdc, 0, 0, NULL);
1817 gdi_SetROP2(hdc, GDI_R2_WHITE);
1818 gdi_LineTo(hdc, 16, 16);
1819 assertBitmapsEqual(hBmp, hBmp_LineTo_R2_WHITE, "Case 27");
1822 void test_gdi_Ellipse(void)
1828 HGDI_BITMAP hBmp_Ellipse_1;
1829 HGDI_BITMAP hBmp_Ellipse_2;
1830 HGDI_BITMAP hBmp_Ellipse_3;
1831 rdpPalette* hPalette;
1833 int bitsPerPixel = 8;
1834 int bytesPerPixel = 1;
1837 hdc->bitsPerPixel = bitsPerPixel;
1838 hdc->bytesPerPixel = bytesPerPixel;
1839 gdi_SetNullClipRgn(hdc);
1841 pen = gdi_CreatePen(1, 1, 0);
1842 gdi_SelectObject(hdc, (HGDIOBJECT) pen);
1844 hBmp = gdi_CreateCompatibleBitmap(hdc, 16, 16);
1845 gdi_SelectObject(hdc, (HGDIOBJECT) hBmp);
1847 hPalette = (rdpPalette*) gdi_GetSystemPalette();
1849 clrconv = (HCLRCONV) malloc(sizeof(CLRCONV));
1851 clrconv->invert = 0;
1852 clrconv->palette = hPalette;
1854 data = (uint8*) freerdp_image_convert((uint8*) ellipse_case_1, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1855 hBmp_Ellipse_1 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1857 data = (uint8*) freerdp_image_convert((uint8*) ellipse_case_2, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1858 hBmp_Ellipse_2 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1860 data = (uint8*) freerdp_image_convert((uint8*) ellipse_case_3, NULL, 16, 16, 8, bitsPerPixel, clrconv);
1861 hBmp_Ellipse_3 = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
1863 /* Test Case 1: (0,0) -> (16, 16) */
1864 gdi_BitBlt(hdc, 0, 0, 16, 16, hdc, 0, 0, GDI_WHITENESS);
1865 gdi_Ellipse(hdc, 0, 0, 16, 16);
1866 //assertBitmapsEqual(hBmp, hBmp_Ellipse_1, "Case 1");
1869 void test_gdi_PtInRect(void)
1877 hRect = gdi_CreateRect(left, top, right, bottom);
1879 CU_ASSERT(gdi_PtInRect(hRect, 0, 0) == 0);
1880 CU_ASSERT(gdi_PtInRect(hRect, 500, 500) == 0);
1881 CU_ASSERT(gdi_PtInRect(hRect, 40, 100) == 0);
1882 CU_ASSERT(gdi_PtInRect(hRect, 10, 40) == 0);
1883 CU_ASSERT(gdi_PtInRect(hRect, 30, 50) == 1);
1884 CU_ASSERT(gdi_PtInRect(hRect, left, top) == 1);
1885 CU_ASSERT(gdi_PtInRect(hRect, right, bottom) == 1);
1886 CU_ASSERT(gdi_PtInRect(hRect, right, 60) == 1);
1887 CU_ASSERT(gdi_PtInRect(hRect, 40, bottom) == 1);
1890 void test_gdi_FillRect(void)
1895 HGDI_BITMAP hBitmap;
1912 hdc->bytesPerPixel = 4;
1913 hdc->bitsPerPixel = 32;
1915 hRect = gdi_CreateRect(left, top, right, bottom);
1917 hBitmap = gdi_CreateCompatibleBitmap(hdc, width, height);
1918 memset(hBitmap->data, 0, width * height * hdc->bytesPerPixel);
1919 gdi_SelectObject(hdc, (HGDIOBJECT) hBitmap);
1921 color = (GDI_COLOR) ARGB32(0xFF, 0xAA, 0xBB, 0xCC);
1922 hBrush = gdi_CreateSolidBrush(color);
1924 gdi_FillRect(hdc, hRect, hBrush);
1929 for (x = 0; x < width; x++)
1931 for (y = 0; y < height; y++)
1933 rawPixel = gdi_GetPixel(hdc, x, y);
1934 pixel = gdi_get_color_32bpp(hdc, rawPixel);
1936 if (gdi_PtInRect(hRect, x, y))
1938 if (pixel == color) {
1942 printf("actual:%04X expected:%04X\n", gdi_GetPixel(hdc, x, y), color);
1948 if (pixel == color) {
1958 CU_ASSERT(goodPixels == width * height);
1959 CU_ASSERT(badPixels == 0);
1961 gdi_DeleteObject((HGDIOBJECT) hBrush);
1962 gdi_DeleteObject((HGDIOBJECT) hBitmap);
1965 void test_gdi_BitBlt_32bpp(void)
1971 HGDI_BITMAP hBmpSrc;
1972 HGDI_BITMAP hBmpDst;
1973 HGDI_BITMAP hBmpPat;
1974 HGDI_BITMAP hBmp_SPna;
1975 HGDI_BITMAP hBmp_BLACKNESS;
1976 HGDI_BITMAP hBmp_WHITENESS;
1977 HGDI_BITMAP hBmp_SRCCOPY;
1978 HGDI_BITMAP hBmp_SRCAND;
1979 HGDI_BITMAP hBmp_SRCPAINT;
1980 HGDI_BITMAP hBmp_SRCINVERT;
1981 HGDI_BITMAP hBmp_SRCERASE;
1982 HGDI_BITMAP hBmp_NOTSRCCOPY;
1983 HGDI_BITMAP hBmp_NOTSRCERASE;
1984 HGDI_BITMAP hBmp_DSTINVERT;
1985 HGDI_BITMAP hBmp_MERGECOPY;
1986 HGDI_BITMAP hBmp_MERGEPAINT;
1987 HGDI_BITMAP hBmp_PATCOPY;
1988 HGDI_BITMAP hBmp_PATPAINT;
1989 HGDI_BITMAP hBmp_PATINVERT;
1990 HGDI_BITMAP hBmpDstOriginal;
1991 rdpPalette* hPalette;
1994 int bytesPerPixel = 4;
1995 int bitsPerPixel = 32;
1997 hdcSrc = gdi_GetDC();
1998 hdcSrc->bytesPerPixel = bytesPerPixel;
1999 hdcSrc->bitsPerPixel = bitsPerPixel;
2001 hdcDst = gdi_GetDC();
2002 hdcDst->bytesPerPixel = bytesPerPixel;
2003 hdcDst->bitsPerPixel = bitsPerPixel;
2005 hPalette = (rdpPalette*) gdi_GetSystemPalette();
2007 clrconv = (HCLRCONV) malloc(sizeof(CLRCONV));
2009 clrconv->invert = 0;
2010 clrconv->palette = hPalette;
2012 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRC, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2013 hBmpSrc = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2015 data = (uint8*) freerdp_image_convert((uint8*) bmp_DST, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2016 hBmpDst = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2018 data = (uint8*) freerdp_image_convert((uint8*) bmp_DST, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2019 hBmpDstOriginal = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2021 data = (uint8*) freerdp_image_convert((uint8*) bmp_PAT, NULL, 8, 8, 8, bitsPerPixel, clrconv);
2022 hBmpPat = gdi_CreateBitmap(8, 8, bitsPerPixel, data);
2024 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2025 hBmp_SRCCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2027 data = (uint8*) freerdp_image_convert((uint8*) bmp_SPna, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2028 hBmp_SPna = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2030 data = (uint8*) freerdp_image_convert((uint8*) bmp_BLACKNESS, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2031 hBmp_BLACKNESS = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2033 data = (uint8*) freerdp_image_convert((uint8*) bmp_WHITENESS, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2034 hBmp_WHITENESS = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2036 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCAND, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2037 hBmp_SRCAND = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2039 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2040 hBmp_SRCPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2042 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2043 hBmp_SRCINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2045 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCERASE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2046 hBmp_SRCERASE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2048 data = (uint8*) freerdp_image_convert((uint8*) bmp_NOTSRCCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2049 hBmp_NOTSRCCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2051 data = (uint8*) freerdp_image_convert((uint8*) bmp_NOTSRCERASE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2052 hBmp_NOTSRCERASE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2054 data = (uint8*) freerdp_image_convert((uint8*) bmp_DSTINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2055 hBmp_DSTINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2057 data = (uint8*) freerdp_image_convert((uint8*) bmp_MERGECOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2058 hBmp_MERGECOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2060 data = (uint8*) freerdp_image_convert((uint8*) bmp_MERGEPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2061 hBmp_MERGEPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2063 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2064 hBmp_PATCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2066 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2067 hBmp_PATPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2069 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2070 hBmp_PATINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2072 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2073 gdi_SelectObject(hdcDst, (HGDIOBJECT) hBmpDst);
2076 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2077 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCCOPY) == 1)
2079 /* restore original destination bitmap */
2080 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2081 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2082 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2085 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_BLACKNESS);
2086 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_BLACKNESS) == 1);
2088 /* restore original destination bitmap */
2089 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2090 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2091 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2094 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_WHITENESS);
2095 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_WHITENESS) == 1);
2097 /* restore original destination bitmap */
2098 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2099 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2100 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2103 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCAND);
2104 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCAND) == 1);
2106 /* restore original destination bitmap */
2107 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2108 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2109 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2112 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCPAINT);
2113 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCPAINT) == 1);
2115 /* restore original destination bitmap */
2116 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2117 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2118 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2121 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCINVERT);
2122 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCINVERT) == 1);
2124 /* restore original destination bitmap */
2125 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2126 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2127 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2130 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCERASE);
2131 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCERASE) == 1);
2133 /* restore original destination bitmap */
2134 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2135 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2136 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2139 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_NOTSRCCOPY);
2140 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_NOTSRCCOPY) == 1);
2142 /* restore original destination bitmap */
2143 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2144 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2145 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2148 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_NOTSRCERASE);
2149 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_NOTSRCERASE) == 1);
2151 /* restore original destination bitmap */
2152 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2153 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2154 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2157 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_DSTINVERT);
2158 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_DSTINVERT) == 1);
2160 /* select a brush for operations using a pattern */
2161 hBrush = gdi_CreatePatternBrush(hBmpPat);
2162 gdi_SelectObject(hdcDst, (HGDIOBJECT) hBrush);
2164 /* restore original destination bitmap */
2165 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2166 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2167 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2170 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_MERGECOPY);
2171 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_MERGECOPY) == 1);
2173 /* restore original destination bitmap */
2174 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2175 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2176 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2179 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_MERGEPAINT);
2180 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_MERGEPAINT) == 1);
2182 /* restore original destination bitmap */
2183 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2184 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2185 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2188 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATCOPY);
2189 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATCOPY) == 1);
2191 /* restore original destination bitmap */
2192 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2193 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2194 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2197 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATINVERT);
2198 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATINVERT) == 1);
2200 /* restore original destination bitmap */
2201 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2202 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2203 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2206 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATPAINT);
2207 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATPAINT) == 1);
2209 /* restore original destination bitmap */
2210 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2211 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2212 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2215 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SPna);
2216 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SPna) == 1)
2219 void test_gdi_BitBlt_16bpp(void)
2225 HGDI_BITMAP hBmpSrc;
2226 HGDI_BITMAP hBmpDst;
2227 HGDI_BITMAP hBmpPat;
2228 HGDI_BITMAP hBmp_SPna;
2229 HGDI_BITMAP hBmp_BLACKNESS;
2230 HGDI_BITMAP hBmp_WHITENESS;
2231 HGDI_BITMAP hBmp_SRCCOPY;
2232 HGDI_BITMAP hBmp_SRCAND;
2233 HGDI_BITMAP hBmp_SRCPAINT;
2234 HGDI_BITMAP hBmp_SRCINVERT;
2235 HGDI_BITMAP hBmp_SRCERASE;
2236 HGDI_BITMAP hBmp_NOTSRCCOPY;
2237 HGDI_BITMAP hBmp_NOTSRCERASE;
2238 HGDI_BITMAP hBmp_DSTINVERT;
2239 HGDI_BITMAP hBmp_MERGECOPY;
2240 HGDI_BITMAP hBmp_MERGEPAINT;
2241 HGDI_BITMAP hBmp_PATCOPY;
2242 HGDI_BITMAP hBmp_PATPAINT;
2243 HGDI_BITMAP hBmp_PATINVERT;
2244 HGDI_BITMAP hBmpDstOriginal;
2245 rdpPalette* hPalette;
2248 int bytesPerPixel = 2;
2249 int bitsPerPixel = 16;
2251 hdcSrc = gdi_GetDC();
2252 hdcSrc->bytesPerPixel = bytesPerPixel;
2253 hdcSrc->bitsPerPixel = bitsPerPixel;
2255 hdcDst = gdi_GetDC();
2256 hdcDst->bytesPerPixel = bytesPerPixel;
2257 hdcDst->bitsPerPixel = bitsPerPixel;
2259 hPalette = (rdpPalette*) gdi_GetSystemPalette();
2261 clrconv = (HCLRCONV) malloc(sizeof(CLRCONV));
2263 clrconv->invert = 0;
2264 clrconv->palette = hPalette;
2266 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRC, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2267 hBmpSrc = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2269 data = (uint8*) freerdp_image_convert((uint8*) bmp_DST, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2270 hBmpDst = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2272 data = (uint8*) freerdp_image_convert((uint8*) bmp_DST, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2273 hBmpDstOriginal = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2275 data = (uint8*) freerdp_image_convert((uint8*) bmp_PAT, NULL, 8, 8, 8, bitsPerPixel, clrconv);
2276 hBmpPat = gdi_CreateBitmap(8, 8, bitsPerPixel, data);
2278 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2279 hBmp_SRCCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2281 data = (uint8*) freerdp_image_convert((uint8*) bmp_SPna, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2282 hBmp_SPna = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2284 data = (uint8*) freerdp_image_convert((uint8*) bmp_BLACKNESS, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2285 hBmp_BLACKNESS = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2287 data = (uint8*) freerdp_image_convert((uint8*) bmp_WHITENESS, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2288 hBmp_WHITENESS = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2290 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCAND, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2291 hBmp_SRCAND = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2293 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2294 hBmp_SRCPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2296 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2297 hBmp_SRCINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2299 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCERASE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2300 hBmp_SRCERASE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2302 data = (uint8*) freerdp_image_convert((uint8*) bmp_NOTSRCCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2303 hBmp_NOTSRCCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2305 data = (uint8*) freerdp_image_convert((uint8*) bmp_NOTSRCERASE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2306 hBmp_NOTSRCERASE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2308 data = (uint8*) freerdp_image_convert((uint8*) bmp_DSTINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2309 hBmp_DSTINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2311 data = (uint8*) freerdp_image_convert((uint8*) bmp_MERGECOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2312 hBmp_MERGECOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2314 data = (uint8*) freerdp_image_convert((uint8*) bmp_MERGEPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2315 hBmp_MERGEPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2317 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2318 hBmp_PATCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2320 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2321 hBmp_PATPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2323 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2324 hBmp_PATINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2326 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2327 gdi_SelectObject(hdcDst, (HGDIOBJECT) hBmpDst);
2330 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2331 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCCOPY) == 1)
2333 /* restore original destination bitmap */
2334 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2335 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2336 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2339 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_BLACKNESS);
2340 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_BLACKNESS) == 1);
2342 /* restore original destination bitmap */
2343 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2344 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2345 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2348 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_WHITENESS);
2349 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_WHITENESS) == 1);
2351 /* restore original destination bitmap */
2352 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2353 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2354 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2357 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCAND);
2358 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCAND) == 1);
2360 /* restore original destination bitmap */
2361 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2362 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2363 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2366 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCPAINT);
2367 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCPAINT) == 1);
2369 /* restore original destination bitmap */
2370 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2371 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2372 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2375 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCINVERT);
2376 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCINVERT) == 1);
2378 /* restore original destination bitmap */
2379 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2380 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2381 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2384 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCERASE);
2385 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCERASE) == 1);
2387 /* restore original destination bitmap */
2388 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2389 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2390 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2393 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_NOTSRCCOPY);
2394 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_NOTSRCCOPY) == 1);
2396 /* restore original destination bitmap */
2397 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2398 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2399 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2402 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_NOTSRCERASE);
2403 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_NOTSRCERASE) == 1);
2405 /* restore original destination bitmap */
2406 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2407 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2408 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2411 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_DSTINVERT);
2412 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_DSTINVERT) == 1);
2414 /* select a brush for operations using a pattern */
2415 hBrush = gdi_CreatePatternBrush(hBmpPat);
2416 gdi_SelectObject(hdcDst, (HGDIOBJECT) hBrush);
2418 /* restore original destination bitmap */
2419 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2420 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2421 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2424 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_MERGECOPY);
2425 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_MERGECOPY) == 1);
2427 /* restore original destination bitmap */
2428 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2429 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2430 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2433 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_MERGEPAINT);
2434 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_MERGEPAINT) == 1);
2436 /* restore original destination bitmap */
2437 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2438 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2439 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2442 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATCOPY);
2443 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATCOPY) == 1);
2445 /* restore original destination bitmap */
2446 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2447 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2448 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2451 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATINVERT);
2452 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATINVERT) == 1);
2454 /* restore original destination bitmap */
2455 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2456 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2457 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2460 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATPAINT);
2461 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATPAINT) == 1);
2463 /* restore original destination bitmap */
2464 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2465 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2466 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2469 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SPna);
2470 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SPna) == 1)
2473 void test_gdi_BitBlt_8bpp(void)
2479 HGDI_BITMAP hBmpSrc;
2480 HGDI_BITMAP hBmpDst;
2481 HGDI_BITMAP hBmpPat;
2482 HGDI_BITMAP hBmp_SPna;
2483 HGDI_BITMAP hBmp_BLACKNESS;
2484 HGDI_BITMAP hBmp_WHITENESS;
2485 HGDI_BITMAP hBmp_SRCCOPY;
2486 HGDI_BITMAP hBmp_SRCAND;
2487 HGDI_BITMAP hBmp_SRCPAINT;
2488 HGDI_BITMAP hBmp_SRCINVERT;
2489 HGDI_BITMAP hBmp_SRCERASE;
2490 HGDI_BITMAP hBmp_NOTSRCCOPY;
2491 HGDI_BITMAP hBmp_NOTSRCERASE;
2492 HGDI_BITMAP hBmp_DSTINVERT;
2493 HGDI_BITMAP hBmp_MERGECOPY;
2494 HGDI_BITMAP hBmp_MERGEPAINT;
2495 HGDI_BITMAP hBmp_PATCOPY;
2496 HGDI_BITMAP hBmp_PATPAINT;
2497 HGDI_BITMAP hBmp_PATINVERT;
2498 HGDI_BITMAP hBmpDstOriginal;
2499 rdpPalette* hPalette;
2502 int bytesPerPixel = 1;
2503 int bitsPerPixel = 8;
2505 hdcSrc = gdi_GetDC();
2506 hdcSrc->bytesPerPixel = bytesPerPixel;
2507 hdcSrc->bitsPerPixel = bitsPerPixel;
2509 hdcDst = gdi_GetDC();
2510 hdcDst->bytesPerPixel = bytesPerPixel;
2511 hdcDst->bitsPerPixel = bitsPerPixel;
2513 hPalette = (rdpPalette*) gdi_GetSystemPalette();
2515 clrconv = (HCLRCONV) malloc(sizeof(CLRCONV));
2517 clrconv->invert = 0;
2518 clrconv->palette = hPalette;
2520 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRC, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2521 hBmpSrc = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2523 data = (uint8*) freerdp_image_convert((uint8*) bmp_DST, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2524 hBmpDst = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2526 data = (uint8*) freerdp_image_convert((uint8*) bmp_DST, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2527 hBmpDstOriginal = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2529 data = (uint8*) freerdp_image_convert((uint8*) bmp_PAT, NULL, 8, 8, 8, bitsPerPixel, clrconv);
2530 hBmpPat = gdi_CreateBitmap(8, 8, bitsPerPixel, data);
2532 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2533 hBmp_SRCCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2535 data = (uint8*) freerdp_image_convert((uint8*) bmp_SPna, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2536 hBmp_SPna = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2538 data = (uint8*) freerdp_image_convert((uint8*) bmp_BLACKNESS, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2539 hBmp_BLACKNESS = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2541 data = (uint8*) freerdp_image_convert((uint8*) bmp_WHITENESS, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2542 hBmp_WHITENESS = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2544 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCAND, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2545 hBmp_SRCAND = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2547 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2548 hBmp_SRCPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2550 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2551 hBmp_SRCINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2553 data = (uint8*) freerdp_image_convert((uint8*) bmp_SRCERASE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2554 hBmp_SRCERASE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2556 data = (uint8*) freerdp_image_convert((uint8*) bmp_NOTSRCCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2557 hBmp_NOTSRCCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2559 data = (uint8*) freerdp_image_convert((uint8*) bmp_NOTSRCERASE, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2560 hBmp_NOTSRCERASE = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2562 data = (uint8*) freerdp_image_convert((uint8*) bmp_DSTINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2563 hBmp_DSTINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2565 data = (uint8*) freerdp_image_convert((uint8*) bmp_MERGECOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2566 hBmp_MERGECOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2568 data = (uint8*) freerdp_image_convert((uint8*) bmp_MERGEPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2569 hBmp_MERGEPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2571 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATCOPY, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2572 hBmp_PATCOPY = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2574 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATPAINT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2575 hBmp_PATPAINT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2577 data = (uint8*) freerdp_image_convert((uint8*) bmp_PATINVERT, NULL, 16, 16, 8, bitsPerPixel, clrconv);
2578 hBmp_PATINVERT = gdi_CreateBitmap(16, 16, bitsPerPixel, data);
2580 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2581 gdi_SelectObject(hdcDst, (HGDIOBJECT) hBmpDst);
2584 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2585 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCCOPY) == 1)
2587 /* restore original destination bitmap */
2588 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2589 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2590 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2593 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_BLACKNESS);
2594 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_BLACKNESS) == 1);
2596 /* restore original destination bitmap */
2597 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2598 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2599 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2602 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_WHITENESS);
2603 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_WHITENESS) == 1);
2605 /* restore original destination bitmap */
2606 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2607 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2608 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2611 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCAND);
2612 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCAND) == 1);
2614 /* restore original destination bitmap */
2615 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2616 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2617 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2620 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCPAINT);
2621 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCPAINT) == 1);
2623 /* restore original destination bitmap */
2624 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2625 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2626 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2629 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCINVERT);
2630 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCINVERT) == 1);
2632 /* restore original destination bitmap */
2633 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2634 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2635 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2638 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCERASE);
2639 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SRCERASE) == 1);
2641 /* restore original destination bitmap */
2642 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2643 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2644 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2647 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_NOTSRCCOPY);
2648 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_NOTSRCCOPY) == 1);
2650 /* restore original destination bitmap */
2651 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2652 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2653 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2656 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_NOTSRCERASE);
2657 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_NOTSRCERASE) == 1);
2659 /* restore original destination bitmap */
2660 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2661 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2662 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2665 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_DSTINVERT);
2666 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_DSTINVERT) == 1);
2668 /* select a brush for operations using a pattern */
2669 hBrush = gdi_CreatePatternBrush(hBmpPat);
2670 gdi_SelectObject(hdcDst, (HGDIOBJECT) hBrush);
2672 /* restore original destination bitmap */
2673 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2674 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2675 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2678 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_MERGECOPY);
2679 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_MERGECOPY) == 1);
2681 /* restore original destination bitmap */
2682 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2683 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2684 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2687 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_MERGEPAINT);
2688 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_MERGEPAINT) == 1);
2690 /* restore original destination bitmap */
2691 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2692 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2693 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2696 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATCOPY);
2697 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATCOPY) == 1);
2699 /* restore original destination bitmap */
2700 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2701 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2702 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2705 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATINVERT);
2706 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATINVERT) == 1);
2708 /* restore original destination bitmap */
2709 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2710 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2711 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2714 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_PATPAINT);
2715 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_PATPAINT) == 1);
2717 /* restore original destination bitmap */
2718 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpDstOriginal);
2719 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SRCCOPY);
2720 gdi_SelectObject(hdcSrc, (HGDIOBJECT) hBmpSrc);
2723 gdi_BitBlt(hdcDst, 0, 0, 16, 16, hdcSrc, 0, 0, GDI_SPna);
2724 CU_ASSERT(CompareBitmaps(hBmpDst, hBmp_SPna) == 1)
2727 void test_gdi_ClipCoords(void)
2736 hdc->bytesPerPixel = 4;
2737 hdc->bitsPerPixel = 32;
2738 bmp = gdi_CreateBitmap(1024, 768, 4, NULL);
2739 gdi_SelectObject(hdc, (HGDIOBJECT) bmp);
2740 gdi_SetNullClipRgn(hdc);
2742 rgn1 = gdi_CreateRectRgn(0, 0, 0, 0);
2743 rgn2 = gdi_CreateRectRgn(0, 0, 0, 0);
2747 /* null clipping region */
2748 gdi_SetNullClipRgn(hdc);
2749 gdi_SetRgn(rgn1, 20, 20, 100, 100);
2750 gdi_SetRgn(rgn2, 20, 20, 100, 100);
2752 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2753 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2755 /* region all inside clipping region */
2756 gdi_SetClipRgn(hdc, 0, 0, 1024, 768);
2757 gdi_SetRgn(rgn1, 20, 20, 100, 100);
2758 gdi_SetRgn(rgn2, 20, 20, 100, 100);
2760 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2761 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2763 /* region all outside clipping region, on the left */
2764 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2765 gdi_SetRgn(rgn1, 20, 20, 100, 100);
2766 gdi_SetRgn(rgn2, 0, 0, 0, 0);
2768 draw = gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2769 CU_ASSERT(draw == 0);
2771 /* region all outside clipping region, on the right */
2772 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2773 gdi_SetRgn(rgn1, 420, 420, 100, 100);
2774 gdi_SetRgn(rgn2, 0, 0, 0, 0);
2776 draw = gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2777 CU_ASSERT(draw == 0);
2779 /* region all outside clipping region, on top */
2780 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2781 gdi_SetRgn(rgn1, 300, 20, 100, 100);
2782 gdi_SetRgn(rgn2, 0, 0, 0, 0);
2784 draw = gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2785 CU_ASSERT(draw == 0);
2787 /* region all outside clipping region, at the bottom */
2788 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2789 gdi_SetRgn(rgn1, 300, 420, 100, 100);
2790 gdi_SetRgn(rgn2, 0, 0, 0, 0);
2792 draw = gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2793 CU_ASSERT(draw == 0);
2795 /* left outside, right = clip, top = clip, bottom = clip */
2796 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2797 gdi_SetRgn(rgn1, 100, 300, 300, 100);
2798 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2800 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2801 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2803 /* left outside, right inside, top = clip, bottom = clip */
2804 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2805 gdi_SetRgn(rgn1, 100, 300, 250, 100);
2806 gdi_SetRgn(rgn2, 300, 300, 50, 100);
2808 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2809 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2811 /* left = clip, right outside, top = clip, bottom = clip */
2812 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2813 gdi_SetRgn(rgn1, 300, 300, 300, 100);
2814 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2816 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2817 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2819 /* left inside, right outside, top = clip, bottom = clip */
2820 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2821 gdi_SetRgn(rgn1, 350, 300, 200, 100);
2822 gdi_SetRgn(rgn2, 350, 300, 50, 100);
2824 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2825 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2827 /* top outside, bottom = clip, left = clip, right = clip */
2828 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2829 gdi_SetRgn(rgn1, 300, 100, 300, 300);
2830 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2832 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2833 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2835 /* top = clip, bottom outside, left = clip, right = clip */
2836 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2837 gdi_SetRgn(rgn1, 300, 300, 100, 200);
2838 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2840 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2841 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2843 /* top = clip, bottom = clip, top = clip, bottom = clip */
2844 gdi_SetClipRgn(hdc, 300, 300, 100, 100);
2845 gdi_SetRgn(rgn1, 300, 300, 100, 100);
2846 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2848 gdi_ClipCoords(hdc, &(rgn1->x), &(rgn1->y), &(rgn1->w), &(rgn1->h), NULL, NULL);
2849 CU_ASSERT(gdi_EqualRgn(rgn1, rgn2) == 1);
2852 void test_gdi_InvalidateRegion(void)
2861 hdc->bytesPerPixel = 4;
2862 hdc->bitsPerPixel = 32;
2863 bmp = gdi_CreateBitmap(1024, 768, 4, NULL);
2864 gdi_SelectObject(hdc, (HGDIOBJECT) bmp);
2865 gdi_SetNullClipRgn(hdc);
2867 hdc->hwnd = (HGDI_WND) malloc(sizeof(GDI_WND));
2868 hdc->hwnd->invalid = gdi_CreateRectRgn(0, 0, 0, 0);
2869 hdc->hwnd->invalid->null = 1;
2870 invalid = hdc->hwnd->invalid;
2872 hdc->hwnd->count = 16;
2873 hdc->hwnd->cinvalid = (HGDI_RGN) malloc(sizeof(GDI_RGN) * hdc->hwnd->count);
2875 rgn1 = gdi_CreateRectRgn(0, 0, 0, 0);
2876 rgn2 = gdi_CreateRectRgn(0, 0, 0, 0);
2880 /* no previous invalid region */
2882 gdi_SetRgn(rgn1, 300, 300, 100, 100);
2883 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2885 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2886 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2888 /* region same as invalid region */
2889 gdi_SetRgn(invalid, 300, 300, 100, 100);
2890 gdi_SetRgn(rgn1, 300, 300, 100, 100);
2891 gdi_SetRgn(rgn2, 300, 300, 100, 100);
2893 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2894 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2897 gdi_SetRgn(invalid, 300, 300, 100, 100);
2898 gdi_SetRgn(rgn1, 100, 300, 300, 100);
2899 gdi_SetRgn(rgn2, 100, 300, 300, 100);
2901 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2902 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2905 gdi_SetRgn(invalid, 300, 300, 100, 100);
2906 gdi_SetRgn(rgn1, 300, 300, 300, 100);
2907 gdi_SetRgn(rgn2, 300, 300, 300, 100);
2909 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2910 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2913 gdi_SetRgn(invalid, 300, 300, 100, 100);
2914 gdi_SetRgn(rgn1, 300, 100, 100, 300);
2915 gdi_SetRgn(rgn2, 300, 100, 100, 300);
2917 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2918 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2920 /* bottom outside */
2921 gdi_SetRgn(invalid, 300, 300, 100, 100);
2922 gdi_SetRgn(rgn1, 300, 300, 100, 300);
2923 gdi_SetRgn(rgn2, 300, 300, 100, 300);
2925 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2926 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2928 /* left outside, right outside */
2929 gdi_SetRgn(invalid, 300, 300, 100, 100);
2930 gdi_SetRgn(rgn1, 100, 300, 600, 300);
2931 gdi_SetRgn(rgn2, 100, 300, 600, 300);
2933 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2934 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2936 /* top outside, bottom outside */
2937 gdi_SetRgn(invalid, 300, 300, 100, 100);
2938 gdi_SetRgn(rgn1, 300, 100, 100, 500);
2939 gdi_SetRgn(rgn2, 300, 100, 100, 500);
2941 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2942 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2944 /* all outside, left */
2945 gdi_SetRgn(invalid, 300, 300, 100, 100);
2946 gdi_SetRgn(rgn1, 100, 300, 100, 100);
2947 gdi_SetRgn(rgn2, 100, 300, 300, 100);
2949 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2950 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2952 /* all outside, right */
2953 gdi_SetRgn(invalid, 300, 300, 100, 100);
2954 gdi_SetRgn(rgn1, 700, 300, 100, 100);
2955 gdi_SetRgn(rgn2, 300, 300, 500, 100);
2957 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2958 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2960 /* all outside, top */
2961 gdi_SetRgn(invalid, 300, 300, 100, 100);
2962 gdi_SetRgn(rgn1, 300, 100, 100, 100);
2963 gdi_SetRgn(rgn2, 300, 100, 100, 300);
2965 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2966 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2968 /* all outside, bottom */
2969 gdi_SetRgn(invalid, 300, 300, 100, 100);
2970 gdi_SetRgn(rgn1, 300, 500, 100, 100);
2971 gdi_SetRgn(rgn2, 300, 300, 100, 300);
2973 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2974 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2977 gdi_SetRgn(invalid, 300, 300, 100, 100);
2978 gdi_SetRgn(rgn1, 100, 100, 600, 600);
2979 gdi_SetRgn(rgn2, 100, 100, 600, 600);
2981 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2982 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);
2985 gdi_SetRgn(invalid, 300, 300, 100, 100);
2986 gdi_SetRgn(rgn1, 0, 0, 1024, 768);
2987 gdi_SetRgn(rgn2, 0, 0, 1024, 768);
2989 gdi_InvalidateRegion(hdc, rgn1->x, rgn1->y, rgn1->w, rgn1->h);
2990 CU_ASSERT(gdi_EqualRgn(invalid, rgn2) == 1);