1 /*
2 
3 Copyright (C) 2015-2018 Night Dive Studios, LLC.
4 
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9 
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 
18 */
19 /*
20  * $Source: r:/prj/lib/src/2d/RCS/general.h $
21  * $Revision: 1.51 $
22  * $Author: kevin $
23  * $Date: 1994/11/12 02:19:47 $
24  *
25  * Prototypes for general purpose 2d functions.
26  *
27  * This file is part of the 2d library.
28  *
29  * $Log: general.h $
30  * Revision 1.51  1994/11/12  02:19:47  kevin
31  * Added interrupt crunchy pixel setting declarations.
32  *
33  * Revision 1.50  1994/10/25  15:11:36  kevin
34  * Added rsd blitters.
35  *
36  * Revision 1.49  1994/08/16  15:30:55  kevin
37  * Added more temp functions.
38  *
39  * Revision 1.48  1994/07/29  12:02:15  kevin
40  * added per_map function.
41  *
42  * Revision 1.47  1994/07/18  17:05:49  kevin
43  * Moved temp_ functions from flat8.h to general.h.
44  *
45  * Revision 1.46  1994/07/04  01:35:59  kevin
46  * Added per_umap declaration.
47  *
48  *
49  * Revision 1.45  1994/06/20  22:19:31  kevin
50  * Added temp_wall_umap.
51  *
52  * Revision 1.44  1994/05/24  23:53:22  kevin
53  * gen_tluc8_clut_lin_umap yay!
54  *
55  * Revision 1.43  1994/04/09  07:22:30  lmfeeney
56  * added routines for scaled strings
57  *
58  * Revision 1.42  1994/03/15  06:08:10  kevin
59  * Added clut_bitmap procedures.
60  *
61  * Revision 1.41  1994/02/14  20:38:37  baf
62  * Added dummy parameter to cpoly and spoly routines, for uniformity needed by 3D.
63  *
64  * Revision 1.40  1994/01/17  22:13:18  baf
65  * Redid tluc8 spolys (again).
66  *
67  * Revision 1.39  1993/12/30  11:04:29  baf
68  * non/span solid filled polygons
69  *
70  * Revision 1.38  1993/12/28  22:04:37  baf
71  * Added solid RSD stuff
72  *
73  * Revision 1.37  1993/12/28  19:33:26  kevin
74  * Added unpack and chain versions of rsd bitmap functions.
75  *
76  * Revision 1.36  1993/12/06  13:08:48  kevin
77  * Added declarations for rsd8 versions of texture mappers.
78  *
79  * Revision 1.35  1993/12/04  17:31:23  kevin
80  * Added gen_clut_per_[u]map declarations;
81  * Fixed gen_lit_per_map declaration;
82  *
83  * Revision 1.34  1993/12/02  14:35:26  baf
84  * Added generic tluc8 scaled bitmaps
85  *
86  * Revision 1.33  1993/12/01  21:18:36  baf
87  * Added some tluc8 stuff.
88  *
89  * Revision 1.32  1993/11/24  01:50:13  kevin
90  * Added declarations for wall and floor texture mapping primitives.
91  *
92  * Revision 1.31  1993/10/26  02:10:15  kevin
93  * Added prototypes for rsd bitmap scaling and clut-scaling primitives.
94  *
95  * Revision 1.30  1993/10/20  15:20:43  kaboom
96  * Updated prototypes for spoly routines.
97  *
98  * Revision 1.29  1993/10/19  09:56:05  kaboom
99  * Updated names of polygon routines.
100  *
101  * Revision 1.28  1993/10/06  13:30:28  kevin
102  * added clut versions of horizontal flip and linear mapping routines.
103  *
104  * Revision 1.27  1993/10/02  01:18:21  kaboom
105  * Updated names and arguments of linear and perspective mappers.
106  *
107  * Revision 1.26  1993/09/02  20:05:23  kaboom
108  * Added prototypes for flat 24 pixel, bitmap and linmap routines.
109  *
110  * Revision 1.25  1993/08/19  21:51:09  jaemz
111  * Added bitmap scale clut and voxel functions
112  *
113  * Revision 1.24  1993/08/10  19:07:11  kaboom
114  * Added prototypes for gen_lit_{u}tmap().
115  *
116  * Revision 1.23  1993/07/20  16:24:52  jaemz
117  * Added interp2 and filterw2
118  *
119  * Revision 1.22  1993/06/22  19:58:41  spaz
120  * Added prototypes for goroud-shaded lines:
121  * gen_fix_usline, sline, ucline, and cline.
122  *
123  * Revision 1.21  1993/06/14  14:09:55  kaboom
124  * Added prototypes for new lin_{u}map and lin_lit_lin_{u}map routines.
125  *
126  * Revision 1.20  1993/06/06  15:12:21  kaboom
127  * Added prototypes for gen_hflip_flat8_{u}bitmap.
128  *
129  * Revision 1.19  1993/06/03  15:12:20  kaboom
130  * Moved prototypes for span functions to another file.
131  *
132  * Revision 1.18  1993/06/01  13:49:32  kaboom
133  * Added prototypes for lighting perspective tmappers.
134  *
135  * Revision 1.17  1993/05/03  13:50:48  kaboom
136  * Removed the declarations for obsolete span rendering routines.
137  *
138  * Revision 1.16  1993/04/08  18:56:04  kaboom
139  * Added prototypes for gen_uchar() and gen_char().
140  *
141  * Revision 1.15  1993/04/01  21:51:42  kaboom
142  * Added full arguments to polygon shader & tmap prototypes.
143  *
144  * Revision 1.14  1993/03/29  18:30:59  kaboom
145  * Removed prototypes for concave polygons.
146  *
147  * Revision 1.13  1993/02/24  11:04:09  kaboom
148  * Added prototypes for new span routines.
149  *
150  * Revision 1.12  1993/02/04  17:30:23  kaboom
151  * Added prototypes for gen_xxx_cpoly() functions.
152  *
153  * Revision 1.11  1993/01/22  19:51:17  kaboom
154  * Filled in args to gen_int_tmap() macro.
155  *
156  * Revision 1.10  1993/01/15  21:44:43  kaboom
157  * Added prototypes for stencilled lr drawing routines.
158  *
159  * Revision 1.9  1992/12/30  15:14:50  kaboom
160  * Added parameters for polygon and span rendering functions.
161  *
162  * Revision 1.8  1992/12/14  18:15:58  kaboom
163  * Added prototype for gen_clear().
164  *
165  * Revision 1.7  1992/12/11  14:13:47  kaboom
166  * Added prototypes for gen_get_flat8_[u]bitmap.
167  *
168  * Revision 1.6  1992/12/10  11:21:22  kaboom
169  * Added prototypes for unclipped versions of span functions.
170  *
171  * Revision 1.5  1992/11/19  02:37:06  kaboom
172  * Added prototypes for unclipped versions of gen_scale_bitmap as well as
173  * gen_roll_bitmap.
174  *
175  * Revision 1.4  1992/11/12  13:50:11  kaboom
176  * Inserted arguments into prototypes for completed functions.  Added prototypes
177  * for monochrome and rsd8 bitmap routines.
178  *
179  * Revision 1.3  1992/10/21  16:04:32  kaboom
180  * Changed protoypes to match new naming for integer & fixed point functions.
181  *
182  * Revision 1.2  1992/10/13  12:18:20  kaboom
183  * Added prototypes for fixed-point and integer versions of most 2d
184  * functions.
185  *
186  * Revision 1.1  1992/10/10  12:00:00  kaboom
187  * Initial revision.
188  */
189 
190 #ifndef __GENERAL_H
191 #define __GENERAL_H
192 #include "plytyp.h" /* must fix */
193 
194 /* the general-purpose driver has no entries for the following standard
195    functions: set_pixel, set_upixel, get_pixel, and get_upixel.  These
196    functions must be defined; they are the minimal components of a driver. */
197 
198 extern int gen_set_pixel(long color, short x, short y);
199 extern int gen_set_pixel_interrupt(long color, short x, short y);
200 extern void gen_fill_upixel(long color, short x, short y);
201 extern int gen_fill_pixel(long color, short x, short y);
202 
203 extern void gen_clear (long color);
204 
205 extern void gen_upoint (short x, short y);
206 extern int gen_point (short x, short y);
207 extern void gen_uhline (short x0, short y0, short x1);
208 extern int gen_hline (short x0, short y0, short x1);
209 extern void gen_uvline (short x0, short y0, short y1);
210 extern int gen_vline (short x0, short y0, short y1);
211 extern void gen_urect (short left, short top, short right, short bot);
212 extern int gen_rect (short left, short top, short right, short bot);
213 extern void gen_ubox (short left, short top, short right, short bot);
214 extern int gen_box (short left, short top, short right, short bot);
215 
216 extern void gen_fix_uline (fix x0, fix y0, fix x1, fix y1);
217 extern int gen_fix_line (fix x0, fix y0, fix x1, fix y1);
218 extern void gen_fix_usline(fix x0, fix y0, fix i0, fix x1, fix y1, fix i1);
219 extern int gen_fix_sline(fix x0, fix y0, fix i0, fix x1, fix y1, fix i1);
220 extern void gen_fix_ucline(fix x0, fix y0, grs_rgb c0, fix x1, fix y1, grs_rgb c1);
221 extern int gen_fix_cline(fix x0, fix y0, grs_rgb c0, fix x1, fix y1, grs_rgb c1);
222 extern void gen_upoly (long c, int n, grs_vertex **vpl);
223 extern int gen_poly (long c, int n, grs_vertex **vpl);
224 extern void gen_uspoly(long c, int n, grs_vertex **vpl);
225 extern int gen_spoly(long c, int n, grs_vertex **vpl);
226 extern void gen_tluc8_upoly (long c, int n, grs_vertex **vpl);
227 extern int gen_tluc8_poly (long c, int n, grs_vertex **vpl);
228 extern void gen_tluc8_uspoly (long c, int n, grs_vertex **vpl);
229 extern int gen_tluc8_spoly (long c, int n, grs_vertex **vpl);
230 
231 extern void gen_ucpoly(long c, int n, grs_vertex **vpl);
232 extern int gen_cpoly(long c, int n, grs_vertex **vpl);
233 
234 extern int gen_fix_cpoly (int n, fix *vlist, grs_rgb *c);
235 extern void gen_vox_rect(fix x[4],fix y[4],fix dz[3],int near_ver,grs_bitmap *col,grs_bitmap *ht,int dotw,int doth);
236 extern void gen_vox_poly(fix x[4],fix y[4],fix dz[3],int near_ver,grs_bitmap *col,grs_bitmap *ht);
237 extern void gen_vox_cpoly(fix x[4],fix y[4],fix dz[3],int near_ver,grs_bitmap *col,grs_bitmap *ht);
238 extern void gen_interp2_ubitmap(grs_bitmap *bm);
239 extern void gen_filter2_ubitmap(grs_bitmap *bm);
240 extern void gen_scale_ubitmap
241    (grs_bitmap *bm, short x, short y, short w, short h);
242 extern int gen_scale_bitmap
243    (grs_bitmap *bm, short x, short y, short w, short h);
244 extern void gen_rsd8_scale_ubitmap
245    (grs_bitmap *bm, short x, short y, short w, short h);
246 extern int gen_rsd8_scale_bitmap
247    (grs_bitmap *bm, short x, short y, short w, short h);
248 extern void unpack_rsd8_scale_ubitmap
249    (grs_bitmap *bm, short x, short y, short w, short h);
250 extern int unpack_rsd8_scale_bitmap
251    (grs_bitmap *bm, short x, short y, short w, short h);
252 extern void gen_tluc8_scale_ubitmap
253    (grs_bitmap *bm, short x, short y, short w, short h);
254 // extern gen_tluc8_scale_bitmap
255 //    (grs_bitmap *bm, short x, short y, short w, short h);
256 
257 extern void gen_rsd8_clut_scale_ubitmap
258    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
259 extern int gen_rsd8_clut_scale_bitmap
260    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
261 extern void gen_rsd8_scale_solid_ubitmap
262    (grs_bitmap *bm, short x, short y, short w, short h, int c);
263 extern int gen_rsd8_scale_solid_bitmap
264    (grs_bitmap *bm, short x, short y, short w, short h, int c);
265 extern void unpack_rsd8_clut_scale_ubitmap
266    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
267 extern int unpack_rsd8_clut_scale_bitmap
268    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
269 extern void gen_clut_scale_ubitmap
270    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
271 extern void gen_clut_scale_bitmap
272    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
273 
274 extern void gen_roll_ubitmap
275    (grs_bitmap *bm, fix angle, short x, short y);
276 extern void gen_roll_bitmap ();
277 
278 extern void gen_flat8_wall_umap
279    (grs_bitmap *bm, int n, fix **vpl);
280 extern void gen_flat8_lit_wall_umap
281    (grs_bitmap *bm, int n, fix **vpl);
282 
283 extern void gen_flat8_floor_umap
284    (grs_bitmap *bm, int n, fix **vpl);
285 extern void gen_flat8_lit_floor_umap
286    (grs_bitmap *bm, int n, fix **vpl);
287 
288 extern void temp_point(short x, short y);
289 extern void temp_upoint(short x, short y);
290 
291 extern void temp_flat8_ubitmap (grs_bitmap *bm, int x, int y);
292 extern void temp_flat8_bitmap (grs_bitmap *bm, int x, int y);
293 
294 extern void temp_flat8_mask_bitmap (grs_bitmap *bm, int x, int y, grs_stencil *sten);
295 extern void temp_flat8_clut_ubitmap (grs_bitmap *bm, int x, int y, uchar *cl);
296 extern void temp_rsd8_bitmap (grs_bitmap *bm, int x, int y);
297 extern void temp_rsd8_ubitmap (grs_bitmap *bm, int x, int y);
298 
299 extern void temp_tluc8_ubitmap (grs_bitmap *bm, int x, int y);
300 
301 extern int temp_poly (long c, int n, grs_vertex **vpl);
302 extern void temp_upoly (long c, int n, grs_vertex **vpl);
303 extern int temp_spoly (long c, int n, grs_vertex **vpl);
304 extern void temp_uspoly (long c, int n, grs_vertex **vpl);
305 extern int temp_cpoly (long c, int n, grs_vertex **vpl);
306 extern void temp_ucpoly (long c, int n, grs_vertex **vpl);
307 extern int temp_tpoly (long c, int n, grs_vertex **vpl);
308 extern void temp_utpoly (long c, int n, grs_vertex **vpl);
309 extern int temp_stpoly (long c, int n, grs_vertex **vpl);
310 extern void temp_ustpoly (long c, int n, grs_vertex **vpl);
311 
312 
313 extern void temp_lin_umap
314    (grs_bitmap *bm, int n, grs_vertex **vpl);
315 extern void temp_lin_map
316    (grs_bitmap *bm, int n, grs_vertex **vpl);
317 extern void temp_lit_lin_umap
318    (grs_bitmap *bm, int n, grs_vertex **vpl);
319 extern void temp_lit_lin_map
320    (grs_bitmap *bm, int n, grs_vertex **vpl);
321 extern void temp_clut_lin_umap
322    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
323 extern void temp_clut_lin_map
324    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
325 
326 extern void temp_wall_umap
327    (grs_bitmap *bm, int n, grs_vertex **vpl);
328 extern void temp_lit_wall_umap
329    (grs_bitmap *bm, int n, grs_vertex **vpl);
330 extern void temp_clut_wall_umap
331    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
332 
333 extern void temp_floor_umap
334    (grs_bitmap *bm, int n, grs_vertex **vpl);
335 extern void temp_lit_floor_umap
336    (grs_bitmap *bm, int n, grs_vertex **vpl);
337 extern void temp_clut_floor_umap
338    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
339 
340 extern void temp_per_umap
341    (grs_bitmap *bm, int n, grs_vertex **vpl);
342 extern void temp_per_map
343    (grs_bitmap *bm, int n, grs_vertex **vpl);
344 extern void temp_lit_per_umap
345    (grs_bitmap *bm, int n, grs_vertex **vpl);
346 extern void temp_clut_per_umap
347    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
348 extern void temp_clut_per_map
349    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
350 
351 extern void temp_scale_umap
352    (grs_bitmap *bm, short x, short y, short w, short h);
353 extern int temp_scale_map
354    (grs_bitmap *bm, short x, short y, short w, short h);
355 extern void temp_clut_scale_umap
356    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
357 extern int temp_clut_scale_map
358    (grs_bitmap *bm, short x, short y, short w, short h, uchar *cl);
359 
360 extern void gen_per_umap
361    (grs_bitmap *bm, int n, grs_vertex **vpl);
362 extern int gen_per_map
363    (grs_bitmap *bm, int n, grs_vertex **vpl);
364 extern void gen_lit_per_umap
365    (grs_bitmap *bm, int n, grs_vertex **vpl);
366 extern int gen_lit_per_map
367    (grs_bitmap *bm, int n, grs_vertex **vpl);
368 extern void gen_clut_per_umap
369    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
370 extern int gen_clut_per_map
371    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
372 extern void gen_solid_per_umap
373    (grs_bitmap *bm, int n, grs_vertex **vpl, int c);
374 extern int gen_solid_per_map
375    (grs_bitmap *bm, int n, grs_vertex **vpl, int c);
376 
377 extern void gen_rsd8_per_umap
378    (grs_bitmap *bm, int n, grs_vertex **vpl);
379 extern int gen_rsd8_per_map
380    (grs_bitmap *bm, int n, grs_vertex **vpl);
381 extern void gen_rsd8_lit_per_umap
382    (grs_bitmap *bm, int n, grs_vertex **vpl);
383 extern int gen_rsd8_lit_per_map
384    (grs_bitmap *bm, int n, grs_vertex **vpl);
385 extern void gen_rsd8_clut_per_umap
386    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
387 extern int gen_rsd8_clut_per_map
388    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
389 
390 extern void gen_lin_lit_utmap
391    (int n, fix *vlist, grs_bitmap *bm, fix *m, fix *l);
392 extern int gen_lin_lit_tmap
393    (int n, fix *vlist, grs_bitmap *bm, fix *m, fix *l);
394 extern void gen_bilin_lit_utmap
395    (int n, fix *vlist, grs_bitmap *bm, fix *m, fix *l);
396 extern int gen_bilin_lit_tmap
397    (int n, fix *vlist, grs_bitmap *bm, fix *m, fix *l);
398 
399 extern void gen_flat8_lin_umap
400    (grs_bitmap *bm, int n, grs_vertex **vpl);
401 extern int gen_flat8_lin_map
402    (grs_bitmap *bm, int n, grs_vertex **vpl);
403 extern void gen_flat24_lin_umap
404    (grs_bitmap *bm, int n, grs_vertex **vpl);
405 extern int gen_flat24_lin_map
406    (grs_bitmap *bm, int n, grs_vertex **vpl);
407 extern void gen_rsd8_lin_umap
408    (grs_bitmap *bm, int n, grs_vertex **vpl);
409 extern int gen_rsd8_lin_map
410    (grs_bitmap *bm, int n, grs_vertex **vpl);
411 extern void gen_tluc8_lin_umap
412    (grs_bitmap *bm, int n, grs_vertex **vpl);
413 extern int gen_tluc8_lin_map
414    (grs_bitmap *bm, int n, grs_vertex **vpl);
415 
416 extern void gen_lit_lin_umap
417    (int n, grs_bitmap *bm, grs_vertex **vpl);
418 extern int gen_lit_lin_map
419    (int n, grs_bitmap *bm, grs_vertex **vpl);
420 
421 extern void gen_clut_lin_umap
422    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
423 extern int gen_clut_lin_map
424    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
425 extern void gen_tluc8_clut_lin_umap
426    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
427 extern void gen_flat8_solid_lin_umap
428    (grs_bitmap *bm, int n, grs_vertex **vpl, int c);
429 extern int gen_flat8_solid_lin_map
430    (grs_bitmap *bm, int n, grs_vertex **vpl, int c);
431 
432 extern void gen_rsd8_lit_lin_umap
433    (int n, grs_bitmap *bm, grs_vertex **vpl);
434 extern int gen_rsd8_lit_lin_map
435    (int n, grs_bitmap *bm, grs_vertex **vpl);
436 
437 extern void gen_rsd8_clut_lin_umap
438    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
439 extern int gen_rsd8_clut_lin_map
440    (grs_bitmap *bm, int n, grs_vertex **vpl, uchar *cl);
441 
442 extern void gen_int_ucircle (short x, short y, short r);
443 extern int gen_int_circle (short x0, short y0, short r);
444 extern void gen_fix_ucircle (void);
445 extern void gen_fix_circle (void);
446 extern void gen_int_udisk (short x0, short y0, short r);
447 extern void gen_int_disk (short x0, short y0, short r);
448 extern void gen_fix_udisk (void);
449 extern void gen_fix_disk (void);
450 extern void gen_int_urod (void);
451 extern void gen_int_rod (void);
452 extern void gen_fix_urod (void);
453 extern void gen_fix_rod (void);
454 
455 extern void gen_rsd8_solid_ubitmap (grs_bitmap *bm, short x, short y, int c);
456 extern int gen_rsd8_solid_bitmap (grs_bitmap *bm, short x, short y, int c);
457 
458 /* bitmap drawing functions. */
459 extern void gen_mono_ubitmap (grs_bitmap *bm, short x, short y);
460 extern int gen_mono_bitmap (grs_bitmap *bm, short x, short y);
461 extern void gen_flat8_ubitmap (grs_bitmap *bm, short x, short y);
462 extern int gen_flat8_bitmap (grs_bitmap *bm, short x, short y);
463 extern void gen_flat24_ubitmap (grs_bitmap *bm, short x0, short y0);
464 extern int gen_flat24_bitmap (grs_bitmap *bm, short x0, short y0);
465 extern void gri_gen_rsd8_ubitmap (grs_bitmap *bm, short x, short y);
466 extern int gri_gen_rsd8_bitmap (grs_bitmap *bm, short x, short y);
467 extern void unpack_rsd8_ubitmap (grs_bitmap *bm, short x, short y);
468 extern int unpack_rsd8_bitmap (grs_bitmap *bm, short x, short y);
469 extern void gen_tluc8_ubitmap (grs_bitmap *bm, short x, short y);
470 extern int gen_tluc8_bitmap (grs_bitmap *bm, short x, short y);
471 
472 /* clut bitmap drawing functions. */
473 extern void gen_flat8_clut_ubitmap (grs_bitmap *bm, short x, short y, uchar *clut);
474 extern int gen_flat8_clut_bitmap (grs_bitmap *bm, short x, short y, uchar *clut);
475 extern void unpack_rsd8_clut_ubitmap (grs_bitmap *bm, short x, short y, uchar *clut);
476 extern int unpack_rsd8_clut_bitmap (grs_bitmap *bm, short x, short y, uchar *clut);
477 
478 /* bitmap get functions. */
479 extern void gen_get_flat8_ubitmap (grs_bitmap *bm, short x, short y);
480 extern int gen_get_flat8_bitmap (grs_bitmap *bm, short x, short y);
481 
482 /* bitmap horizontal flip routines. */
483 extern void gen_hflip_flat8_ubitmap (grs_bitmap *bm, short x, short y);
484 extern int gen_hflip_flat8_bitmap (grs_bitmap *bm, short x, short y);
485 
486 /* bitmap color lookup table horizontal flip routines. */
487 extern void gen_clut_hflip_flat8_ubitmap (grs_bitmap *bm, short x, short y, uchar *cl);
488 extern int gen_clut_hflip_flat8_bitmap (grs_bitmap *bm, short x, short y, uchar *cl);
489 
490 extern void gen_font_ustring (grs_font *f, char *s, short x, short y);
491 extern int gen_font_string (grs_font *f, char *s, short x, short y);
492 
493 extern void gen_font_scale_ustring (grs_font *f, char *s, short x, short y, short w, short h);
494 extern int gen_font_scale_string (grs_font *f, char *s, short x, short y, short w, short h);
495 
496 extern void gen_font_uchar (grs_font *f, char c, short x, short y);
497 extern int gen_font_char (grs_font *f,  char c, short x, short y);
498 
499 //extern void gen_opaque_ubitmap (grs_bitmap *bm, short x, short y);
500 
501 #endif /* !__GENERAL_H */
502