convert line ends
[canaan.git] / prj / tech / libsrc / dev2d / bk8fl8.c
blob413fea1f060bf415beeacb7d06386a5cae86e3c4
1 /*
2 * $Source: s:/prj/tech/libsrc/dev2d/RCS/bk8fl8.c $
3 * $Revision: 1.1 $
4 * $Author: KEVIN $
5 * $Date: 1996/04/10 15:48:12 $
7 * Routines for drawing flat8 bitmaps into a flat8 canvas.
9 * This file is part of the dev2d library.
13 #include <string.h>
14 #include <bank.h>
16 void bank8_flat8_opaque_ubitmap (grs_bitmap *bm, int x, int y)
18 uchar *src;
19 long p;
20 int w = bm->w;
21 int h = bm->h;
22 int srow = bm->row;
23 int drow = grd_bm.row;
24 uchar *base=gd_bank_p(0);
25 int save_bank = gdd_save_bank;
27 src = bm->bits;
28 p = ((long )grd_bm.bits) + drow*y + x;
30 gd_set_bank(p>>16);
32 p &= 0xffff;
33 while (h--) {
34 int delta;
36 if (p>=0x10000) {
37 gd_inc_bank();
38 p -= 0x10000;
40 delta = 0x10000-p;
41 if (delta >= w) {
42 memcpy (base+p, src, w);
43 } else {
44 memcpy (base+p, src, delta);
45 gd_inc_bank();
46 p -= 0x10000;
47 memcpy (base, src+delta, w-delta);
49 src += srow;
50 p += drow;
52 /* synchronize gdd_bank */
53 gd_restore_bank(save_bank);
56 void bank8_flat8_trans_ubitmap (grs_bitmap *bm, int x, int y)
58 uchar *src;
59 long p;
60 int w = bm->w;
61 int h = bm->h;
62 int srow = bm->row;
63 int drow = grd_bm.row;
64 uchar *base=gd_bank_p(0);
65 int save_bank = gdd_save_bank;
67 src = bm->bits;
68 p = ((long )grd_bm.bits) + drow*y + x;
70 gd_set_bank(p>>16);
72 p &= 0xffff;
73 while (h--) {
74 int i, delta;
76 if (p>=0x10000) {
77 gd_inc_bank();
78 p -= 0x10000;
80 delta = 0x10000-p;
81 if (delta >= w) {
82 for (i=0; i<w; i++) {
83 uchar c=src[i];
84 if (c) base[p+i]=c;
86 } else {
87 for (i=0; i<delta; i++) {
88 uchar c=src[i];
89 if (c) base[p+i]=c;
91 gd_inc_bank();
92 p -= 0x10000;
93 for (i=delta; i<w; i++) {
94 uchar c=src[i];
95 if (c) base[i-delta]=c;
98 src += srow;
99 p += drow;
101 /* synchronize gdd_bank */
102 gd_restore_bank(save_bank);