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/fl8tf.h $ 21 * $Revision: 1.14 $ 22 * $Author: kevin $ 23 * $Date: 1994/10/25 16:51:42 $ 24 * 25 * Table functions. 26 * Flat8 canvas. 27 * 28 * This file is part of the 2d library. 29 * 30 */ 31 32 #include "pertyp.h" 33 #include "tmapint.h" 34 35 /* pixel primitives */ 36 extern void flat8_set_upixel(long color, short x, short y); 37 extern void flat8_clut_set_upixel(long color, short x, short y); 38 extern void flat8_xor_set_upixel(long color, short x, short y); 39 extern void flat8_blend_set_upixel(long color, short x, short y); 40 extern void flat8_solid_set_upixel(long color, short x, short y); 41 42 /* blit primitives */ 43 extern void flat8_flat8_ubitmap(grs_bitmap *bm, short x, short y); 44 45 extern void flat8_tluc8_ubitmap(grs_bitmap *bm, short x, short y); 46 extern int gri_flat8_mask_bitmap(grs_bitmap *bm, short x, short y, grs_stencil *sten); 47 extern void gri_flat8_clut_ubitmap(grs_bitmap *bm, short x, short y, uchar *cl); 48 extern int gri_flat8_mask_fill_clut_bitmap(grs_bitmap *bm, short x, short y, grs_stencil *sten); 49 extern void gri_flat8_fill_clut_ubitmap(grs_bitmap *bm, short x, short y); 50 extern void gri_flat8_rsd8_ubitmap(grs_bitmap *bm, short x, short y); 51 extern int gri_flat8_rsd8_bitmap(grs_bitmap *bm, short x_left, short y_top); 52 53 /* inner loop initializers */ 54 /* normal fill: */ 55 extern void gri_trans_blend_clut_lin_umap_init(grs_tmap_loop_info *ti); 56 extern void gri_opaque_true_lin_umap_init(); 57 extern void gri_opaque_clut_true_lin_umap_init(); 58 59 extern void gri_opaque_lin_umap_init(grs_tmap_loop_info *tli); 60 extern void gri_trans_lin_umap_init(grs_tmap_loop_info *tli); 61 extern void gri_opaque_lit_lin_umap_init(grs_tmap_loop_info *tli); 62 extern void gri_trans_lit_lin_umap_init(grs_tmap_loop_info *tli); 63 extern void gri_opaque_clut_lin_umap_init(grs_tmap_loop_info *tli); 64 extern void gri_trans_clut_lin_umap_init(grs_tmap_loop_info *tli); 65 66 extern void gri_opaque_floor_umap_init(grs_tmap_loop_info *tli); 67 extern void gri_trans_floor_umap_init(grs_tmap_loop_info *tli); 68 extern void gri_opaque_lit_floor_umap_init(grs_tmap_loop_info *tli); 69 extern void gri_trans_lit_floor_umap_init(grs_tmap_loop_info *tli); 70 extern void gri_opaque_clut_floor_umap_init(grs_tmap_loop_info *tli); 71 extern void gri_trans_clut_floor_umap_init(grs_tmap_loop_info *tli); 72 73 extern void gri_opaque_wall_umap_init(grs_tmap_loop_info *tli); 74 extern void gri_trans_wall_umap_init(grs_tmap_loop_info *tli); 75 extern void gri_opaque_lit_wall_umap_init(grs_tmap_loop_info *tli); 76 extern void gri_trans_lit_wall_umap_init(grs_tmap_loop_info *tli); 77 extern void gri_opaque_clut_wall_umap_init(grs_tmap_loop_info *tli); 78 extern void gri_trans_clut_wall_umap_init(grs_tmap_loop_info *tli); 79 80 extern void gri_opaque_wall1d_umap_init(grs_tmap_loop_info *tli); 81 extern void gri_trans_wall1d_umap_init(grs_tmap_loop_info *tli); 82 extern void gri_opaque_clut_wall1d_umap_init(grs_tmap_loop_info *tli); 83 extern void gri_trans_lit_wall1d_umap_init(grs_tmap_loop_info *tli); 84 extern void gri_opaque_lit_wall1d_umap_init(grs_tmap_loop_info *tli); 85 extern void gri_trans_clut_wall1d_umap_init(grs_tmap_loop_info *tli); 86 87 extern void gri_opaque_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 88 extern void gri_trans_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 89 extern void gri_opaque_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 90 extern void gri_trans_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 91 extern void gri_opaque_lit_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 92 extern void gri_trans_lit_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 93 94 extern void gri_opaque_lit_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 95 extern void gri_trans_lit_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 96 extern void gri_opaque_clut_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 97 extern void gri_trans_clut_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 98 extern void gri_opaque_clut_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 99 extern void gri_trans_clut_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 100 101 extern int gri_opaque_scale_umap_init(grs_tmap_loop_info *tli); 102 extern int gri_trans_scale_umap_init(grs_tmap_loop_info *tli, grs_vertex **vert); 103 extern int gri_opaque_clut_scale_umap_init(grs_tmap_loop_info *tli); 104 extern int gri_trans_clut_scale_umap_init(grs_tmap_loop_info *tli); 105 106 extern void gri_poly_init(grs_tmap_loop_info *ti); 107 extern void gri_spoly_init(grs_tmap_loop_info *ti); 108 extern void gri_cpoly_init(grs_tmap_loop_info *ti); 109 extern void gri_tpoly_init(grs_tmap_loop_info *ti); 110 extern void gri_stpoly_init(grs_tmap_loop_info *ti); 111 112 /* clut fill: */ 113 extern void gri_clut_poly_init(grs_tmap_loop_info *ti); 114 extern void gri_clut_spoly_init(grs_tmap_loop_info *ti); 115 extern void gri_clut_cpoly_init(grs_tmap_loop_info *ti); 116 extern void gri_clut_tpoly_init(grs_tmap_loop_info *ti); 117 extern void gri_clut_stpoly_init(grs_tmap_loop_info *ti); 118 119 /* solid fill: */ 120 extern void gri_solid_poly_init(grs_tmap_loop_info *ti); 121 extern void gri_trans_solid_lin_umap_init(grs_tmap_loop_info *ti); 122 extern void gri_trans_solid_floor_umap_init(grs_tmap_loop_info *ti); 123 extern void gri_trans_solid_wall_umap_init(grs_tmap_loop_info *ti); 124 extern void gri_trans_solid_per_umap_hscan_init(grs_bitmap *bm, grs_per_setup *ps); 125 extern void gri_trans_solid_per_umap_vscan_init(grs_bitmap *bm, grs_per_setup *ps); 126 extern int gri_opaque_solid_scale_umap_init(grs_tmap_loop_info *info, grs_vertex **vert); 127 extern int gri_trans_solid_scale_umap_init(grs_tmap_loop_info *tli, grs_vertex **vert); 128 129 /* translucent bitmaps */ 130 extern void gri_tluc8_opaque_lin_umap_init(grs_tmap_loop_info *tli); 131 extern void gri_tluc8_trans_lin_umap_init(grs_tmap_loop_info *tli); 132 extern void gri_tluc8_opaque_lit_lin_umap_init(); 133 extern void gri_tluc8_trans_lit_lin_umap_init(); 134 extern void gri_tluc8_opaque_clut_lin_umap_init(grs_tmap_loop_info *tli); 135 extern void gri_tluc8_trans_clut_lin_umap_init(grs_tmap_loop_info *tli); 136 137 extern void gri_tluc8_opaque_scale_umap_init(grs_tmap_loop_info *tli); 138 extern void gri_tluc8_trans_scale_umap_init(grs_tmap_loop_info *tli); 139 extern void gri_tluc8_opaque_clut_scale_umap_init(grs_tmap_loop_info *tli); 140 extern void gri_tluc8_trans_clut_scale_umap_init(grs_tmap_loop_info *tli); 141