convert line ends
[canaan.git] / prj / tech / libsrc / dev2d / fl8fl8.c
blobb61df33dff3b5bffe8c2650341cc66ee5ab2450f
1 // $Header: x:/prj/tech/libsrc/dev2d/RCS/fl8fl8.c 1.6 1997/02/07 11:21:45 KEVIN Exp $
2 // Routines for drawing flat8 bitmaps into a flat8 canvas.
4 #include <dbg.h>
5 #include <astring.h>
7 #include <grd.h>
8 #include <bitmap.h>
9 #include <context.h>
11 void flat8_flat8_opaque_ubitmap (grs_bitmap *bm, int x, int y)
13 uchar *src;
14 uchar *dst;
15 int w = bm->w;
16 int h = bm->h;
17 void (*memcpy_func)(void *dst, void *src, int count);
19 Assrt((w>0)&&(h>0));
21 src = bm->bits;
22 dst = grd_bm.bits + grd_bm.row*y + x;
24 if (bm->flags&BMF_DEVICE_VIDMEM) {
25 if ((grd_bm.flags&BMF_DEVICE_VIDMEM) &&
26 (((long )src)&3!=((long )dst)&3)) {
27 memcpy_func = memcpy_by_byte;
28 } else {
29 memcpy_func = memcpy_align_src;
31 } else {
32 if (grd_bm.flags&BMF_DEVICE_VIDMEM) {
33 memcpy_func = memcpy_align_dst;
34 } else {
35 memcpy_func = memcpy_cache_dst;
38 while (h--) {
39 memcpy_func (dst, src, w);
40 src += bm->row;
41 dst += grd_bm.row;
45 void flat8_flat8_trans_ubitmap (grs_bitmap *bm, int x, int y)
47 uchar *src;
48 uchar *dst;
49 int w = bm->w;
50 int h = bm->h;
51 int i;
53 src = bm->bits;
54 dst = grd_bm.bits + grd_bm.row*y + x;
56 while (h--) {
57 for (i=0; i<w; i++)
58 if (src[i]!=0) dst[i]=src[i];
59 src += bm->row;
60 dst += grd_bm.row;
64 void flat8_flat8_opaque_clut_ubitmap (grs_bitmap *bm, int x, int y)
66 uchar *src;
67 uchar *dst;
68 uchar *clut = (uchar *)gr_get_fill_parm();
69 int w = bm->w;
70 int h = bm->h;
72 src = bm->bits;
73 dst = grd_bm.bits + grd_bm.row*y + x;
75 while (h--) {
76 int i;
77 for (i=0; i<w; i++)
78 if (src[i]!=0) dst[i]=clut[src[i]];
79 src += bm->row;
80 dst += grd_bm.row;
84 void flat8_flat8_trans_clut_ubitmap (grs_bitmap *bm, int x, int y)
86 uchar *src;
87 uchar *dst;
88 uchar *clut = (uchar *)gr_get_fill_parm();
89 int w = bm->w;
90 int h = bm->h;
92 src = bm->bits;
93 dst = grd_bm.bits + grd_bm.row*y + x;
95 while (h--) {
96 int i;
97 for (i=0; i<w; i++)
98 if (src[i]!=0) dst[i]=clut[src[i]];
99 src += bm->row;
100 dst += grd_bm.row;
104 void flat8_flat8_trans_solid_ubitmap (grs_bitmap *bm, int x, int y)
106 uchar *src;
107 uchar *dst;
108 int w = bm->w;
109 int h = bm->h;
110 uchar c = (uchar )gr_get_fill_parm();
112 src = bm->bits;
113 dst = grd_bm.bits + grd_bm.row*y + x;
115 while (h--) {
116 int i;
117 for (i=0; i<w; i++)
118 if (src[i]!=0) dst[i]=c;
119 src += bm->row;
120 dst += grd_bm.row;