source: trunk/src/ddraw/bltFunc.cpp@ 6666

Last change on this file since 6666 was 5472, checked in by sandervl, 24 years ago

compile fix

File size: 19.5 KB
Line 
1/* $Id: bltFunc.cpp,v 1.4 2001-04-04 09:02:14 sandervl Exp $ */
2
3/*
4 * Blitting functions
5 *
6 * Copyright 1999 Markus Montkowski
7 *
8 * Project Odin Software License can be found in LICENSE.TXT
9 *
10 */
11
12#define INCL_BASE
13#include <os2wrap.h>
14#include <win32type.h>
15#include <memory.h>
16#include <misc.h>
17#include "bltFunc.h"
18
19//
20// Blt Functions
21//
22
23#ifndef USE_ASM
24void __cdecl BltSolid8( char* pDst,
25 char* pSrc,
26 DWORD dwWidth,
27 DWORD dwHeight,
28 DWORD dwPitchDst,
29 DWORD dwPitchSrc)
30{
31 dprintf(("DDRAW:BltSolid8\n"));
32 while(dwHeight)
33 {
34 memcpy(pDst,pSrc,dwWidth);
35 pDst += dwPitchDst;
36 pSrc += dwPitchSrc;
37 dwHeight--;
38 }
39}
40void __cdecl BltSolid16(char* pDst,
41 char* pSrc,
42 DWORD dwWidth,
43 DWORD dwHeight,
44 DWORD dwPitchDst,
45 DWORD dwPitchSrc)
46{
47 dprintf(("DDRAW:BltSolid16\n"));
48 dwWidth *=2;
49 while(dwHeight)
50 {
51 memcpy(pDst,pSrc,dwWidth);
52 pDst += dwPitchDst;
53 pSrc += dwPitchSrc;
54 dwHeight--;
55 }
56}
57void __cdecl BltSolid24(char* pDst,
58 char* pSrc,
59 DWORD dwWidth,
60 DWORD dwHeight,
61 DWORD dwPitchDst,
62 DWORD dwPitchSrc)
63{
64 dprintf(("DDRAW:BltSolid24\n"));
65 dwWidth *=3;
66 while(dwHeight)
67 {
68 memcpy(pDst,pSrc,dwWidth);
69 pDst += dwPitchDst;
70 pSrc += dwPitchSrc;
71 dwHeight--;
72 }
73}
74void __cdecl BltSolid32(char* pDst,
75 char* pSrc,
76 DWORD dwWidth,
77 DWORD dwHeight,
78 DWORD dwPitchDst,
79 DWORD dwPitchSrc)
80{
81 dprintf(("DDRAW:BltSolid32\n"));
82 dwWidth *=4;
83 while(dwHeight)
84 {
85 memcpy(pDst,pSrc,dwWidth);
86 pDst += dwPitchDst;
87 pSrc += dwPitchSrc;
88 dwHeight--;
89 }
90}
91#else
92 #define BltSolid8 BltSolid8ASM
93 #define BltSolid16 BltSolid16ASM
94 #define BltSolid24 BltSolid24ASM
95 #define BltSolid32 BltSolid32ASM
96#endif
97
98// without ColorConversion
99void __cdecl BltSolid8to8( char *pDBDst,
100 char *pFBDst,
101 DWORD dwDstTop,
102 DWORD dwDstLeft,
103 DWORD dwPitchDBDst,
104 DWORD dwPitchFBDst,
105 char *pDBSrc,
106 char *pFBSrc,
107 DWORD dwSrcTop,
108 DWORD dwSrcLeft,
109 DWORD dwWidth,
110 DWORD dwHeight,
111 DWORD dwPitchDBSrc,
112 DWORD dwPitchFBSrc
113 )
114{
115 dprintf(("DDRAW:BltSolid8to8\n"));
116 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
117 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
118 dwWidth,
119 dwHeight,
120 dwPitchDBDst,
121 dwPitchDBSrc);
122}
123void __cdecl BltSolid16to16( char *pDBDst,
124 char *pFBDst,
125 DWORD dwDstTop,
126 DWORD dwDstLeft,
127 DWORD dwPitchDBDst,
128 DWORD dwPitchFBDst,
129 char *pDBSrc,
130 char *pFBSrc,
131 DWORD dwSrcTop,
132 DWORD dwSrcLeft,
133 DWORD dwWidth,
134 DWORD dwHeight,
135 DWORD dwPitchDBSrc,
136 DWORD dwPitchFBSrc
137 )
138{
139 dprintf(("DDRAW:BltSolid16to16\n"));
140 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
141 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
142 dwWidth,
143 dwHeight,
144 dwPitchDBDst,
145 dwPitchDBSrc);
146}
147void __cdecl BltSolid24to24( char *pDBDst,
148 char *pFBDst,
149 DWORD dwDstTop,
150 DWORD dwDstLeft,
151 DWORD dwPitchDBDst,
152 DWORD dwPitchFBDst,
153 char *pDBSrc,
154 char *pFBSrc,
155 DWORD dwSrcTop,
156 DWORD dwSrcLeft,
157 DWORD dwWidth,
158 DWORD dwHeight,
159 DWORD dwPitchDBSrc,
160 DWORD dwPitchFBSrc
161 )
162{
163 dprintf(("DDRAW:BltSolid24to24\n"));
164 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
165 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
166 dwWidth,
167 dwHeight,
168 dwPitchDBDst,
169 dwPitchDBSrc);
170}
171void __cdecl BltSolid32to32( char *pDBDst,
172 char *pFBDst,
173 DWORD dwDstTop,
174 DWORD dwDstLeft,
175 DWORD dwPitchDBDst,
176 DWORD dwPitchFBDst,
177 char *pDBSrc,
178 char *pFBSrc,
179 DWORD dwSrcTop,
180 DWORD dwSrcLeft,
181 DWORD dwWidth,
182 DWORD dwHeight,
183 DWORD dwPitchDBSrc,
184 DWORD dwPitchFBSrc
185 )
186{
187 dprintf(("DDRAW:BltSolid32to32\n"));
188 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
189 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
190 dwWidth,
191 dwHeight,
192 dwPitchDBDst,
193 dwPitchDBSrc);
194}
195
196// With ColorConversion
197
198// 8 to X bit
199void __cdecl BltSolid8to16( char *pDBDst,
200 char *pFBDst,
201 DWORD dwDstTop,
202 DWORD dwDstLeft,
203 DWORD dwPitchDBDst,
204 DWORD dwPitchFBDst,
205 char *pDBSrc,
206 char *pFBSrc,
207 DWORD dwSrcTop,
208 DWORD dwSrcLeft,
209 DWORD dwWidth,
210 DWORD dwHeight,
211 DWORD dwPitchDBSrc,
212 DWORD dwPitchFBSrc
213 )
214{
215 dprintf(("DDRAW:BltSolid8to16\n"));
216
217 BltSolid8( pFBDst + dwDstLeft + (dwDstTop*dwPitchFBDst),
218 pFBSrc + dwSrcLeft + (dwSrcTop*dwPitchFBSrc),
219 dwWidth,
220 dwHeight,
221 dwPitchFBDst,
222 dwPitchFBSrc);
223 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
224 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
225 dwWidth,
226 dwHeight,
227 dwPitchDBDst,
228 dwPitchDBSrc);
229
230}
231
232void __cdecl BltSolid8to24( char *pDBDst,
233 char *pFBDst,
234 DWORD dwDstTop,
235 DWORD dwDstLeft,
236 DWORD dwPitchDBDst,
237 DWORD dwPitchFBDst,
238 char *pDBSrc,
239 char *pFBSrc,
240 DWORD dwSrcTop,
241 DWORD dwSrcLeft,
242 DWORD dwWidth,
243 DWORD dwHeight,
244 DWORD dwPitchDBSrc,
245 DWORD dwPitchFBSrc
246 )
247{
248 dprintf(("DDRAW:BltSolid8to24\n"));
249 BltSolid8( pFBDst + dwDstLeft + (dwDstTop*dwPitchFBDst),
250 pFBSrc + dwSrcLeft + (dwSrcTop*dwPitchFBSrc),
251 dwWidth,
252 dwHeight,
253 dwPitchFBDst,
254 dwPitchFBSrc);
255 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
256 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
257 dwWidth,
258 dwHeight,
259 dwPitchDBDst,
260 dwPitchDBSrc);
261}
262void __cdecl BltSolid8to32( char *pDBDst,
263 char *pFBDst,
264 DWORD dwDstTop,
265 DWORD dwDstLeft,
266 DWORD dwPitchDBDst,
267 DWORD dwPitchFBDst,
268 char *pDBSrc,
269 char *pFBSrc,
270 DWORD dwSrcTop,
271 DWORD dwSrcLeft,
272 DWORD dwWidth,
273 DWORD dwHeight,
274 DWORD dwPitchDBSrc,
275 DWORD dwPitchFBSrc
276 )
277{
278 dprintf(("DDRAW:BltSolid8to32\n"));
279 BltSolid8( pFBDst + dwDstLeft + (dwDstTop*dwPitchFBDst),
280 pFBSrc + dwSrcLeft + (dwSrcTop*dwPitchFBSrc),
281 dwWidth,
282 dwHeight,
283 dwPitchFBDst,
284 dwPitchFBSrc);
285 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
286 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
287 dwWidth,
288 dwHeight,
289 dwPitchDBDst,
290 dwPitchDBSrc);
291}
292
293// 16 to X bit
294void __cdecl BltSolid16to8( char *pDBDst,
295 char *pFBDst,
296 DWORD dwDstTop,
297 DWORD dwDstLeft,
298 DWORD dwPitchDBDst,
299 DWORD dwPitchFBDst,
300 char *pDBSrc,
301 char *pFBSrc,
302 DWORD dwSrcTop,
303 DWORD dwSrcLeft,
304 DWORD dwWidth,
305 DWORD dwHeight,
306 DWORD dwPitchDBSrc,
307 DWORD dwPitchFBSrc
308 )
309{
310 dprintf(("DDRAW:BltSolid16to8\n"));
311 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
312 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
313 dwWidth,
314 dwHeight,
315 dwPitchDBDst,
316 dwPitchDBSrc);
317 BltSolid16( pFBDst + (dwDstLeft*2) + (dwDstTop*dwPitchFBDst),
318 pFBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchFBSrc),
319 dwWidth,
320 dwHeight,
321 dwPitchFBDst,
322 dwPitchFBSrc);
323}
324
325void __cdecl BltSolid16to24( char *pDBDst,
326 char *pFBDst,
327 DWORD dwDstTop,
328 DWORD dwDstLeft,
329 DWORD dwPitchDBDst,
330 DWORD dwPitchFBDst,
331 char *pDBSrc,
332 char *pFBSrc,
333 DWORD dwSrcTop,
334 DWORD dwSrcLeft,
335 DWORD dwWidth,
336 DWORD dwHeight,
337 DWORD dwPitchDBSrc,
338 DWORD dwPitchFBSrc
339 )
340{
341 dprintf(("DDRAW:BltSolid16to24\n"));
342 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
343 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
344 dwWidth,
345 dwHeight,
346 dwPitchDBDst,
347 dwPitchDBSrc);
348 BltSolid16( pFBDst + (dwDstLeft*2) + (dwDstTop*dwPitchFBDst),
349 pFBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchFBSrc),
350 dwWidth,
351 dwHeight,
352 dwPitchFBDst,
353 dwPitchFBSrc);
354}
355void __cdecl BltSolid16to32( char *pDBDst,
356 char *pFBDst,
357 DWORD dwDstTop,
358 DWORD dwDstLeft,
359 DWORD dwPitchDBDst,
360 DWORD dwPitchFBDst,
361 char *pDBSrc,
362 char *pFBSrc,
363 DWORD dwSrcTop,
364 DWORD dwSrcLeft,
365 DWORD dwWidth,
366 DWORD dwHeight,
367 DWORD dwPitchDBSrc,
368 DWORD dwPitchFBSrc
369 )
370{
371 dprintf(("DDRAW:BltSolid16to32\n"));
372 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
373 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
374 dwWidth,
375 dwHeight,
376 dwPitchDBDst,
377 dwPitchDBSrc);
378 BltSolid16( pFBDst + (dwDstLeft*2) + (dwDstTop*dwPitchFBDst),
379 pFBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchFBSrc),
380 dwWidth,
381 dwHeight,
382 dwPitchFBDst,
383 dwPitchFBSrc);
384}
385
386// 24 to X bit
387void __cdecl BltSolid24to8( char *pDBDst,
388 char *pFBDst,
389 DWORD dwDstTop,
390 DWORD dwDstLeft,
391 DWORD dwPitchDBDst,
392 DWORD dwPitchFBDst,
393 char *pDBSrc,
394 char *pFBSrc,
395 DWORD dwSrcTop,
396 DWORD dwSrcLeft,
397 DWORD dwWidth,
398 DWORD dwHeight,
399 DWORD dwPitchDBSrc,
400 DWORD dwPitchFBSrc
401 )
402{
403 dprintf(("DDRAW:BltSolid24to8\n"));
404 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
405 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
406 dwWidth,
407 dwHeight,
408 dwPitchDBDst,
409 dwPitchDBSrc);
410 BltSolid24( pFBDst + (dwDstLeft*3) + (dwDstTop*dwPitchFBDst),
411 pFBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchFBSrc),
412 dwWidth,
413 dwHeight,
414 dwPitchFBDst,
415 dwPitchFBSrc);
416}
417void __cdecl BltSolid24to16( char *pDBDst,
418 char *pFBDst,
419 DWORD dwDstTop,
420 DWORD dwDstLeft,
421 DWORD dwPitchDBDst,
422 DWORD dwPitchFBDst,
423 char *pDBSrc,
424 char *pFBSrc,
425 DWORD dwSrcTop,
426 DWORD dwSrcLeft,
427 DWORD dwWidth,
428 DWORD dwHeight,
429 DWORD dwPitchDBSrc,
430 DWORD dwPitchFBSrc
431 )
432{
433 dprintf(("DDRAW:BltSolid24to16\n"));
434 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
435 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
436 dwWidth,
437 dwHeight,
438 dwPitchDBDst,
439 dwPitchDBSrc);
440 BltSolid24( pFBDst + (dwDstLeft*3) + (dwDstTop*dwPitchFBDst),
441 pFBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchFBSrc),
442 dwWidth,
443 dwHeight,
444 dwPitchFBDst,
445 dwPitchFBSrc);
446}
447void __cdecl BltSolid24to32( char *pDBDst,
448 char *pFBDst,
449 DWORD dwDstTop,
450 DWORD dwDstLeft,
451 DWORD dwPitchDBDst,
452 DWORD dwPitchFBDst,
453 char *pDBSrc,
454 char *pFBSrc,
455 DWORD dwSrcTop,
456 DWORD dwSrcLeft,
457 DWORD dwWidth,
458 DWORD dwHeight,
459 DWORD dwPitchDBSrc,
460 DWORD dwPitchFBSrc
461 )
462{
463 dprintf(("DDRAW:BltSolid24to32\n"));
464 BltSolid32( pDBDst + (dwDstLeft*4) + (dwDstTop*dwPitchDBDst),
465 pDBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchDBSrc),
466 dwWidth,
467 dwHeight,
468 dwPitchDBDst,
469 dwPitchDBSrc);
470 BltSolid24( pFBDst + (dwDstLeft*3) + (dwDstTop*dwPitchFBDst),
471 pFBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchFBSrc),
472 dwWidth,
473 dwHeight,
474 dwPitchFBDst,
475 dwPitchFBSrc);
476}
477
478// 32 to X bit
479void __cdecl BltSolid32to8( char *pDBDst,
480 char *pFBDst,
481 DWORD dwDstTop,
482 DWORD dwDstLeft,
483 DWORD dwPitchDBDst,
484 DWORD dwPitchFBDst,
485 char *pDBSrc,
486 char *pFBSrc,
487 DWORD dwSrcTop,
488 DWORD dwSrcLeft,
489 DWORD dwWidth,
490 DWORD dwHeight,
491 DWORD dwPitchDBSrc,
492 DWORD dwPitchFBSrc
493 )
494{
495 dprintf(("DDRAW:BltSolid32to8\n"));
496 BltSolid8( pDBDst + dwDstLeft + (dwDstTop*dwPitchDBDst),
497 pDBSrc + dwSrcLeft + (dwSrcTop*dwPitchDBSrc),
498 dwWidth,
499 dwHeight,
500 dwPitchDBDst,
501 dwPitchDBSrc);
502 BltSolid32( pFBDst + (dwDstLeft*4) + (dwDstTop*dwPitchFBDst),
503 pFBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchFBSrc),
504 dwWidth,
505 dwHeight,
506 dwPitchFBDst,
507 dwPitchFBSrc);
508}
509void __cdecl BltSolid32to16( char *pDBDst,
510 char *pFBDst,
511 DWORD dwDstTop,
512 DWORD dwDstLeft,
513 DWORD dwPitchDBDst,
514 DWORD dwPitchFBDst,
515 char *pDBSrc,
516 char *pFBSrc,
517 DWORD dwSrcTop,
518 DWORD dwSrcLeft,
519 DWORD dwWidth,
520 DWORD dwHeight,
521 DWORD dwPitchDBSrc,
522 DWORD dwPitchFBSrc
523 )
524{
525 dprintf(("DDRAW:BltSolid32to16\n"));
526 BltSolid16( pDBDst + (dwDstLeft*2) + (dwDstTop*dwPitchDBDst),
527 pDBSrc + (dwSrcLeft*2) + (dwSrcTop*dwPitchDBSrc),
528 dwWidth,
529 dwHeight,
530 dwPitchDBDst,
531 dwPitchDBSrc);
532 BltSolid32( pFBDst + (dwDstLeft*4) + (dwDstTop*dwPitchFBDst),
533 pFBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchFBSrc),
534 dwWidth,
535 dwHeight,
536 dwPitchFBDst,
537 dwPitchFBSrc);
538}
539
540void __cdecl BltSolid32to24( char *pDBDst,
541 char *pFBDst,
542 DWORD dwDstTop,
543 DWORD dwDstLeft,
544 DWORD dwPitchDBDst,
545 DWORD dwPitchFBDst,
546 char *pDBSrc,
547 char *pFBSrc,
548 DWORD dwSrcTop,
549 DWORD dwSrcLeft,
550 DWORD dwWidth,
551 DWORD dwHeight,
552 DWORD dwPitchDBSrc,
553 DWORD dwPitchFBSrc
554 )
555{
556 dprintf(("DDRAW:BltSolid32to24\n"));
557 BltSolid24( pDBDst + (dwDstLeft*3) + (dwDstTop*dwPitchDBDst),
558 pDBSrc + (dwSrcLeft*3) + (dwSrcTop*dwPitchDBSrc),
559 dwWidth,
560 dwHeight,
561 dwPitchDBDst,
562 dwPitchDBSrc);
563 BltSolid32( pFBDst + (dwDstLeft*4) + (dwDstTop*dwPitchFBDst),
564 pFBSrc + (dwSrcLeft*4) + (dwSrcTop*dwPitchFBSrc),
565 dwWidth,
566 dwHeight,
567 dwPitchFBDst,
568 dwPitchFBSrc);
569}
570
Note: See TracBrowser for help on using the repository browser.