1 /*         ______   ___    ___
2  *        /\  _  \ /\_ \  /\_ \
3  *        \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___
4  *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\
5  *          \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \
6  *           \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
7  *            \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
8  *                                           /\____/
9  *                                           \_/__/
10  *
11  *      Defines for 256 color graphics primitives.
12  *
13  *      By Michael Bukin.
14  *
15  *      See readme.txt for copyright information.
16  */
17 
18 #ifndef __bma_cdefs8_h
19 #define __bma_cdefs8_h
20 
21 #define PP_DEPTH               8
22 
23 #define PIXEL_PTR              unsigned char*
24 #define PTR_PER_PIXEL          1
25 #define OFFSET_PIXEL_PTR(p,x)  ((PIXEL_PTR) (p) + (x))
26 #define INC_PIXEL_PTR(p)       ((p)++)
27 #define INC_PIXEL_PTR_N(p,d)   ((p) += d)
28 #define DEC_PIXEL_PTR(p)       ((p)--)
29 
30 #define PUT_PIXEL(p,c)         bmp_write8((uintptr_t) (p), (c))
31 #define PUT_MEMORY_PIXEL(p,c)  (*(p) = (c))
32 #define PUT_RGB(p,r,g,b)       bmp_write8((uintptr_t) (p), makecol8((r), (g), (b)))
33 #define GET_PIXEL(p)           bmp_read8((uintptr_t) (p))
34 #define GET_MEMORY_PIXEL(p)    (*(p))
35 
36 #define IS_MASK(c)             ((c) == 0)
37 #define IS_SPRITE_MASK(b,c)    ((c) == 0)
38 
39 /* Blender for putpixel (DRAW_MODE_TRANS).  */
40 #define PP_BLENDER             unsigned char*
41 #define MAKE_PP_BLENDER(c)     (color_map->data[(c) & 0xFF])
42 #define PP_BLEND(b,o,n)        ((b)[(o) & 0xFF])
43 
44 /* Blender for draw_trans_*_sprite.  */
45 #define DTS_BLENDER            COLOR_MAP*
46 #define MAKE_DTS_BLENDER()     color_map
47 #define DTS_BLEND(b,o,n)       ((b)->data[(n)& 0xFF][(o) & 0xFF])
48 
49 /* Blender for draw_lit_*_sprite.  */
50 #define DLS_BLENDER            unsigned char*
51 #define MAKE_DLS_BLENDER(a)    (color_map->data[(a) & 0xFF])
52 #define DLS_BLEND(b,a,c)       ((b)[(c) & 0xFF])
53 #define DLSX_BLEND(b,c)        ((b)[(c) & 0xFF])
54 
55 /* Blender for poly_scanline_*_lit.  */
56 #define PS_BLENDER             COLOR_MAP*
57 #define MAKE_PS_BLENDER()      color_map
58 #define PS_BLEND(b,o,c)        ((b)->data[(o) & 0xFF][(c) & 0xFF])
59 #define PS_ALPHA_BLEND(b,o,c)  ((b)->data[(o) & 0xFF][(c) & 0xFF])
60 
61 #define PATTERN_LINE(y)        _drawing_pattern->line[((y) - _drawing_y_anchor) & _drawing_y_mask]
62 #define GET_PATTERN_PIXEL(x,y) GET_MEMORY_PIXEL(OFFSET_PIXEL_PTR(PATTERN_LINE(y), \
63                                                 ((x) - _drawing_x_anchor) & _drawing_x_mask))
64 
65 #define RLE_PTR                signed char*
66 #define RLE_IS_EOL(c)          ((c) == 0)
67 
68 #define FUNC_LINEAR_CLEAR_TO_COLOR          _linear_clear_to_color8
69 #define FUNC_LINEAR_BLIT                    _linear_blit8
70 #define FUNC_LINEAR_BLIT_BACKWARD           _linear_blit_backward8
71 #define FUNC_LINEAR_MASKED_BLIT             _linear_masked_blit8
72 
73 #define FUNC_LINEAR_PUTPIXEL                _linear_putpixel8
74 #define FUNC_LINEAR_GETPIXEL                _linear_getpixel8
75 #define FUNC_LINEAR_HLINE                   _linear_hline8
76 #define FUNC_LINEAR_VLINE                   _linear_vline8
77 
78 #define FUNC_LINEAR_DRAW_SPRITE             _linear_draw_sprite8
79 #define FUNC_LINEAR_DRAW_SPRITE_EX          _linear_draw_sprite_ex8
80 #define FUNC_LINEAR_DRAW_256_SPRITE         _linear_draw_256_sprite8
81 #define FUNC_LINEAR_DRAW_SPRITE_V_FLIP      _linear_draw_sprite_v_flip8
82 #define FUNC_LINEAR_DRAW_SPRITE_H_FLIP      _linear_draw_sprite_h_flip8
83 #define FUNC_LINEAR_DRAW_SPRITE_VH_FLIP     _linear_draw_sprite_vh_flip8
84 #define FUNC_LINEAR_DRAW_TRANS_SPRITE       _linear_draw_trans_sprite8
85 #define FUNC_LINEAR_DRAW_TRANS_RGBA_SPRITE  _linear_draw_trans_rgba_sprite8
86 #define FUNC_LINEAR_DRAW_LIT_SPRITE         _linear_draw_lit_sprite8
87 #define FUNC_LINEAR_DRAW_CHARACTER          _linear_draw_character8
88 #define FUNC_LINEAR_DRAW_RLE_SPRITE         _linear_draw_rle_sprite8
89 #define FUNC_LINEAR_DRAW_TRANS_RLE_SPRITE   _linear_draw_trans_rle_sprite8
90 #define FUNC_LINEAR_DRAW_TRANS_RGBA_RLE_SPRITE _linear_draw_trans_rgba_rle_sprite8
91 #define FUNC_LINEAR_DRAW_LIT_RLE_SPRITE     _linear_draw_lit_rle_sprite8
92 
93 #define FUNC_LINEAR_DRAW_SPRITE_END         _linear_draw_sprite8_end
94 #define FUNC_LINEAR_BLIT_END                _linear_blit8_end
95 
96 #define FUNC_POLY_SCANLINE_GCOL             _poly_scanline_gcol8
97 #define FUNC_POLY_SCANLINE_GRGB             _poly_scanline_grgb8
98 #define FUNC_POLY_SCANLINE_ATEX             _poly_scanline_atex8
99 #define FUNC_POLY_SCANLINE_ATEX_MASK        _poly_scanline_atex_mask8
100 #define FUNC_POLY_SCANLINE_ATEX_LIT         _poly_scanline_atex_lit8
101 #define FUNC_POLY_SCANLINE_ATEX_MASK_LIT    _poly_scanline_atex_mask_lit8
102 #define FUNC_POLY_SCANLINE_PTEX             _poly_scanline_ptex8
103 #define FUNC_POLY_SCANLINE_PTEX_MASK        _poly_scanline_ptex_mask8
104 #define FUNC_POLY_SCANLINE_PTEX_LIT         _poly_scanline_ptex_lit8
105 #define FUNC_POLY_SCANLINE_PTEX_MASK_LIT    _poly_scanline_ptex_mask_lit8
106 #define FUNC_POLY_SCANLINE_ATEX_TRANS       _poly_scanline_atex_trans8
107 #define FUNC_POLY_SCANLINE_ATEX_MASK_TRANS  _poly_scanline_atex_mask_trans8
108 #define FUNC_POLY_SCANLINE_PTEX_TRANS       _poly_scanline_ptex_trans8
109 #define FUNC_POLY_SCANLINE_PTEX_MASK_TRANS  _poly_scanline_ptex_mask_trans8
110 
111 #endif /* !__bma_cdefs8_h */
112 
113