2 * $Source: x:/prj/tech/libsrc/g2/RCS/genlil.c $
5 * $Date: 1996/12/20 11:01:04 $
7 * This file is part of the g2 library.
14 void gen_flat8_lit_il(int x
, int xf
, fix u
, fix v
)
16 g2s_tmap_info
*ti
=&g2d_tmap_info
;
18 fix i
, du
, dv
, di
, err
, err_mask
;
21 gdupix_func
*pix_func
;
22 gdlpix_func
*lpix8_func
;
31 offset_max
= ti
->bm
->h
* row
- 1;
37 err_mask
= (g2d_error_dither
) ? (FIX_UNIT
-1) : 0;
38 pix_func
= ti
->pix_func
;
39 lpix8_func
= ti
->lpix_func
;
41 if (ti
->bm
->flags
&BMF_TRANS
) {
43 uint offset
= fix_int(v
)*row
+ fix_int(u
);
45 if (offset
>offset_max
) offset
= 0;
48 pix_func(lpix8_func(i
+err
, c
), x
, y
);
52 err
= (err
+i
)&err_mask
;
57 uint offset
= fix_int(v
)*row
+ fix_int(u
);
59 if (offset
>offset_max
) offset
= 0;
61 pix_func(lpix8_func(i
+err
, c
), x
, y
);
65 err
= (err
+i
)&err_mask
;
71 void gen_flat8_lit_il_wrap(int x
, int xf
, fix u
, fix v
)
73 g2s_tmap_info
*ti
=&g2d_tmap_info
;
75 fix i
, du
, dv
, di
, err
, err_mask
;
79 gdupix_func
*pix_func
;
80 gdlpix_func
*lpix8_func
;
91 u_mask
= fix_make(bm
->w
-1,0);
92 v_mask
= fix_make(bm
->h
-1,0)<<bm
->wlog
;
95 dv
= ti
->dvx
<<bm
->wlog
;
98 pix_func
= ti
->pix_func
;
99 lpix8_func
= ti
->lpix_func
;
101 err_mask
= (g2d_error_dither
) ? (FIX_UNIT
-1) : 0;
103 if (ti
->bm
->flags
&BMF_TRANS
) {
105 uint offset
= ((ulong
)((v
&v_mask
) + (u
&u_mask
)))>>16;
106 uchar c
= bits
[offset
];
108 pix_func(lpix8_func(i
+err
, c
), x
, y
);
112 err
= (err
+i
)&err_mask
;
117 uint offset
= ((ulong
)((v
&v_mask
) + (u
&u_mask
)))>>16;
118 pix_func(lpix8_func(i
+err
, bits
[offset
]), x
, y
);
122 err
= (err
+i
)&err_mask
;
128 void gen_flat16_lit_il(int x
, int xf
, fix u
, fix v
)
130 g2s_tmap_info
*ti
=&g2d_tmap_info
;
132 fix i
, du
, dv
, di
, err
, err_mask
;
135 gdupix_func
*pix_func
;
136 gdlpix_func
*lpix16_func
;
143 bits
= (ushort
*)ti
->bm
->bits
;
145 offset_max
= ti
->bm
->h
* row
- 1;
150 pix_func
= ti
->pix_func
;
151 lpix16_func
= ti
->lpix_func
;
153 err_mask
= (g2d_error_dither
) ? (FIX_UNIT
-1) : 0;
155 if (ti
->bm
->flags
&BMF_TRANS
) {
157 uint offset
= fix_int(v
)*row
+ fix_int(u
);
159 if (offset
>offset_max
) offset
= 0;
162 pix_func(lpix16_func(i
+err
, c
), x
, y
);
166 err
= (err
+i
)&err_mask
;
171 uint offset
= fix_int(v
)*row
+ fix_int(u
);
173 if (offset
>offset_max
) offset
= 0;
175 pix_func(lpix16_func(i
+err
, c
), x
, y
);
179 err
= (err
+i
)&err_mask
;
185 void gen_flat16_lit_il_wrap(int x
, int xf
, fix u
, fix v
)
187 g2s_tmap_info
*ti
=&g2d_tmap_info
;
189 fix i
, du
, dv
, di
, err
, err_mask
;
193 gdupix_func
*pix_func
;
194 gdlpix_func
*lpix16_func
;
203 bits
= (ushort
*)bm
->bits
;
205 u_mask
= fix_make(bm
->w
-1,0);
206 v_mask
= fix_make(bm
->h
-1,0)<<bm
->wlog
;
209 dv
= ti
->dvx
<<bm
->wlog
;
212 pix_func
= ti
->pix_func
;
213 lpix16_func
= ti
->lpix_func
;
215 err_mask
= (g2d_error_dither
) ? (FIX_UNIT
-1) : 0;
217 if (ti
->bm
->flags
&BMF_TRANS
) {
219 uint offset
= ((ulong
)((v
&v_mask
) + (u
&u_mask
)))>>16;
220 ushort c
= bits
[offset
];
222 pix_func(lpix16_func(i
+err
, c
), x
, y
);
226 err
= (err
+i
)&err_mask
;
231 uint offset
= ((ulong
)((v
&v_mask
) + (u
&u_mask
)))>>16;
232 pix_func(lpix16_func(i
+err
, bits
[offset
]), x
, y
);
236 err
= (err
+i
)&err_mask
;