1 /* ______ ___ ___ 2 * /\ _ \ /\_ \ /\_ \ 3 * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ 4 * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ 5 * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ 6 * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ 7 * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ 8 * /\____/ 9 * \_/__/ 10 * 11 * Defines for 24 bit color graphics primitives. 12 * 13 * By Michael Bukin. 14 * 15 * See readme.txt for copyright information. 16 */ 17 18 #ifndef __bma_cdefs24_h 19 #define __bma_cdefs24_h 20 21 #define PP_DEPTH 24 22 23 #define PIXEL_PTR unsigned char* 24 #define PTR_PER_PIXEL 3 25 #define OFFSET_PIXEL_PTR(p,x) ((PIXEL_PTR) (p) + 3 * (x)) 26 #define INC_PIXEL_PTR(p) ((p) += 3) 27 #define INC_PIXEL_PTR_N(p,d) ((p) += 3 * d) 28 #define DEC_PIXEL_PTR(p) ((p) -= 3) 29 30 #define PUT_PIXEL(p,c) bmp_write24((uintptr_t) (p), (c)) 31 #define PUT_MEMORY_PIXEL(p,c) WRITE3BYTES((p), (c)) 32 #define PUT_RGB(p,r,g,b) bmp_write24((uintptr_t) (p), makecol24((r), (g), (b))) 33 #define GET_PIXEL(p) bmp_read24((uintptr_t) (p)) 34 #define GET_MEMORY_PIXEL(p) READ3BYTES((p)) 35 #define IS_MASK(c) ((unsigned long) (c) == MASK_COLOR_24) 36 #define IS_SPRITE_MASK(b,c) ((unsigned long) (c) == MASK_COLOR_24) 37 38 /* Blender for putpixel (DRAW_MODE_TRANS). */ 39 #define PP_BLENDER BLENDER_FUNC 40 #define MAKE_PP_BLENDER(c) _blender_func24 41 #define PP_BLEND(b,o,n) ((*(b))((n), (o), _blender_alpha)) 42 43 /* Blender for draw_trans_*_sprite. */ 44 #define DTS_BLENDER BLENDER_FUNC 45 #define MAKE_DTS_BLENDER() _blender_func24 46 #define DTS_BLEND(b,o,n) ((*(b))((n), (o), _blender_alpha)) 47 48 /* Blender for draw_lit_*_sprite. */ 49 #define DLS_BLENDER BLENDER_FUNC 50 #define MAKE_DLS_BLENDER(a) _blender_func24 51 #define DLS_BLEND(b,a,n) ((*(b))(_blender_col_24, (n), (a))) 52 #define DLSX_BLEND(b,n) ((*(b))(_blender_col_24, (n), _blender_alpha)) 53 54 /* Blender for RGBA sprites. */ 55 #define RGBA_BLENDER BLENDER_FUNC 56 #define MAKE_RGBA_BLENDER() _blender_func24x 57 #define RGBA_BLEND(b,o,n) ((*(b))((n), (o), _blender_alpha)) 58 59 /* Blender for poly_scanline_*_lit. */ 60 #define PS_BLENDER BLENDER_FUNC 61 #define MAKE_PS_BLENDER() _blender_func24 62 #define PS_BLEND(b,o,c) ((*(b))((c), _blender_col_24, (o))) 63 #define PS_ALPHA_BLEND(b,o,c) ((*(b))((o), (c), _blender_alpha)) 64 65 #define PATTERN_LINE(y) (PIXEL_PTR) (_drawing_pattern->line[((y) - _drawing_y_anchor) \ 66 & _drawing_y_mask]) 67 #define GET_PATTERN_PIXEL(x,y) GET_MEMORY_PIXEL(OFFSET_PIXEL_PTR(PATTERN_LINE(y), \ 68 ((x) - _drawing_x_anchor) & _drawing_x_mask)) 69 70 #define RLE_PTR int32_t* 71 #define RLE_IS_EOL(c) ((unsigned long) (c) == MASK_COLOR_24) 72 73 #define FUNC_LINEAR_CLEAR_TO_COLOR _linear_clear_to_color24 74 #define FUNC_LINEAR_BLIT _linear_blit24 75 #define FUNC_LINEAR_BLIT_BACKWARD _linear_blit_backward24 76 #define FUNC_LINEAR_MASKED_BLIT _linear_masked_blit24 77 78 #define FUNC_LINEAR_PUTPIXEL _linear_putpixel24 79 #define FUNC_LINEAR_GETPIXEL _linear_getpixel24 80 #define FUNC_LINEAR_HLINE _linear_hline24 81 #define FUNC_LINEAR_VLINE _linear_vline24 82 83 #define FUNC_LINEAR_DRAW_SPRITE _linear_draw_sprite24 84 #define FUNC_LINEAR_DRAW_SPRITE_EX _linear_draw_sprite_ex24 85 #define FUNC_LINEAR_DRAW_256_SPRITE _linear_draw_256_sprite24 86 #define FUNC_LINEAR_DRAW_SPRITE_V_FLIP _linear_draw_sprite_v_flip24 87 #define FUNC_LINEAR_DRAW_SPRITE_H_FLIP _linear_draw_sprite_h_flip24 88 #define FUNC_LINEAR_DRAW_SPRITE_VH_FLIP _linear_draw_sprite_vh_flip24 89 #define FUNC_LINEAR_DRAW_TRANS_SPRITE _linear_draw_trans_sprite24 90 #define FUNC_LINEAR_DRAW_TRANS_RGBA_SPRITE _linear_draw_trans_rgba_sprite24 91 #define FUNC_LINEAR_DRAW_LIT_SPRITE _linear_draw_lit_sprite24 92 #define FUNC_LINEAR_DRAW_CHARACTER _linear_draw_character24 93 #define FUNC_LINEAR_DRAW_RLE_SPRITE _linear_draw_rle_sprite24 94 #define FUNC_LINEAR_DRAW_TRANS_RLE_SPRITE _linear_draw_trans_rle_sprite24 95 #define FUNC_LINEAR_DRAW_TRANS_RGBA_RLE_SPRITE _linear_draw_trans_rgba_rle_sprite24 96 #define FUNC_LINEAR_DRAW_LIT_RLE_SPRITE _linear_draw_lit_rle_sprite24 97 98 #define FUNC_LINEAR_DRAW_SPRITE_END _linear_draw_sprite24_end 99 #define FUNC_LINEAR_BLIT_END _linear_blit24_end 100 101 #define FUNC_POLY_SCANLINE_GRGB _poly_scanline_grgb24 102 #define FUNC_POLY_SCANLINE_ATEX _poly_scanline_atex24 103 #define FUNC_POLY_SCANLINE_ATEX_MASK _poly_scanline_atex_mask24 104 #define FUNC_POLY_SCANLINE_ATEX_LIT _poly_scanline_atex_lit24 105 #define FUNC_POLY_SCANLINE_ATEX_MASK_LIT _poly_scanline_atex_mask_lit24 106 #define FUNC_POLY_SCANLINE_PTEX _poly_scanline_ptex24 107 #define FUNC_POLY_SCANLINE_PTEX_MASK _poly_scanline_ptex_mask24 108 #define FUNC_POLY_SCANLINE_PTEX_LIT _poly_scanline_ptex_lit24 109 #define FUNC_POLY_SCANLINE_PTEX_MASK_LIT _poly_scanline_ptex_mask_lit24 110 #define FUNC_POLY_SCANLINE_ATEX_TRANS _poly_scanline_atex_trans24 111 #define FUNC_POLY_SCANLINE_ATEX_MASK_TRANS _poly_scanline_atex_mask_trans24 112 #define FUNC_POLY_SCANLINE_PTEX_TRANS _poly_scanline_ptex_trans24 113 #define FUNC_POLY_SCANLINE_PTEX_MASK_TRANS _poly_scanline_ptex_mask_trans24 114 115 #endif /* !__bma_cdefs24_h */ 116 117