1 2 // dest, src, transbg, fillcolor, blendfunc 3 4 5 #define wp_8_8_0_0_0() *cur_dest=*cur_src; 6 #define wp_8_8_0_0_1() *cur_dest=pfp(table,*cur_src,*cur_dest); 7 #define wp_8_8_0_1_0() *cur_dest=fillcolor; 8 #define wp_8_8_0_1_1() *cur_dest=pfp(table,fillcolor,*cur_dest); 9 #define wp_8_8_1_0_0() if(*cur_src)*cur_dest=*cur_src; 10 #define wp_8_8_1_0_1() if(*cur_src)*cur_dest=pfp(table,*cur_src,*cur_dest); 11 #define wp_8_8_1_1_0() if(*cur_src)*cur_dest=fillcolor; 12 #define wp_8_8_1_1_1() if(*cur_src)*cur_dest=pfp(table,fillcolor,*cur_dest); 13 14 #define dest16 ((unsigned short*)cur_dest) 15 #define table16 ((unsigned short*)table) 16 #define wp_16_x8_0_0_0() *dest16=table16[*cur_src]; 17 #define wp_16_x8_0_0_1() *dest16=pfp16(table16[*cur_src],*dest16); 18 #define wp_16_x8_0_1_0() *dest16=fillcolor; 19 #define wp_16_x8_0_1_1() *dest16=pfp16(fillcolor,*dest16); 20 #define wp_16_x8_1_0_0() if(*cur_src)*dest16=table16[*cur_src]; 21 #define wp_16_x8_1_0_1() if(*cur_src)*dest16=pfp16(table16[*cur_src],*dest16); 22 #define wp_16_x8_1_1_0() if(*cur_src)*dest16=fillcolor; 23 #define wp_16_x8_1_1_1() if(*cur_src)*dest16=pfp16(fillcolor,*dest16); 24 25 #define src16 ((unsigned short*)cur_src) 26 #define wp_16_16_0_0_0() *dest16=*src16; 27 #define wp_16_16_0_0_1() *dest16=pfp16(*src16,*dest16); 28 #define wp_16_16_0_1_0() *dest16=fillcolor; 29 #define wp_16_16_0_1_1() *dest16=pfp16(fillcolor,*dest16); 30 #define wp_16_16_1_0_0() if(*src16)*dest16=*src16; 31 #define wp_16_16_1_0_1() if(*src16)*dest16=pfp16(*src16,*dest16); 32 #define wp_16_16_1_1_0() if(*src16)*dest16=fillcolor; 33 #define wp_16_16_1_1_1() if(*src16)*dest16=pfp16(fillcolor,*dest16); 34 35 #define dest32 ((unsigned*)cur_dest) 36 #define table32 ((unsigned*)table) 37 #define wp_32_x8_0_0_0() *dest32=table32[*cur_src]; 38 #define wp_32_x8_0_0_1() *dest32=pfp32(table32[*cur_src],*dest32); 39 #define wp_32_x8_0_1_0() *dest32=fillcolor; 40 #define wp_32_x8_0_1_1() *dest32=pfp32(fillcolor,*dest32); 41 #define wp_32_x8_1_0_0() if(*cur_src)*dest32=table32[*cur_src]; 42 #define wp_32_x8_1_0_1() if(*cur_src)*dest32=pfp32(table32[*cur_src],*dest32); 43 #define wp_32_x8_1_1_0() if(*cur_src)*dest32=fillcolor; 44 #define wp_32_x8_1_1_1() if(*cur_src)*dest32=pfp32(fillcolor,*dest32); 45 46 #define src32 ((unsigned*)cur_src) 47 #define wp_32_32_0_0_0() *dest32=*src32; 48 #define wp_32_32_0_0_1() *dest32=pfp32(*src32,*dest32); 49 #define wp_32_32_0_1_0() *dest32=fillcolor; 50 #define wp_32_32_0_1_1() *dest32=pfp32(fillcolor,*dest32); 51 #define wp_32_32_1_0_0() if(*src32)*dest32=*src32; 52 #define wp_32_32_1_0_1() if(*src32)*dest32=pfp32(*src32,*dest32); 53 #define wp_32_32_1_1_0() if(*src32)*dest32=fillcolor; 54 #define wp_32_32_1_1_1() if(*src32)*dest32=pfp32(fillcolor,*dest32); 55 56 57 #define writepixelswitch(x,y) \ 58 switch(wpcond) \ 59 { \ 60 case 0: x wp_8_8_0_0_0() y break; \ 61 case 1: x wp_8_8_0_0_1() y break; \ 62 case 2: x wp_8_8_0_1_0() y break; \ 63 case 3: x wp_8_8_0_1_1() y break; \ 64 case 4: x wp_8_8_1_0_0() y break; \ 65 case 5: x wp_8_8_1_0_1() y break; \ 66 case 6: x wp_8_8_1_1_0() y break; \ 67 case 7: x wp_8_8_1_1_1() y break; \ 68 \ 69 case 8: x wp_16_x8_0_0_0() y break; \ 70 case 9: x wp_16_x8_0_0_1() y break; \ 71 case 10: x wp_16_x8_0_1_0() y break; \ 72 case 11: x wp_16_x8_0_1_1() y break; \ 73 case 12: x wp_16_x8_1_0_0() y break; \ 74 case 13: x wp_16_x8_1_0_1() y break; \ 75 case 14: x wp_16_x8_1_1_0() y break; \ 76 case 15: x wp_16_x8_1_1_1() y break; \ 77 \ 78 case 16: x wp_16_16_0_0_0() y break; \ 79 case 17: x wp_16_16_0_0_1() y break; \ 80 case 18: x wp_16_16_0_1_0() y break; \ 81 case 19: x wp_16_16_0_1_1() y break; \ 82 case 20: x wp_16_16_1_0_0() y break; \ 83 case 21: x wp_16_16_1_0_1() y break; \ 84 case 22: x wp_16_16_1_1_0() y break; \ 85 case 23: x wp_16_16_1_1_1() y break; \ 86 \ 87 case 24: x wp_32_x8_0_0_0() y break; \ 88 case 25: x wp_32_x8_0_0_1() y break; \ 89 case 26: x wp_32_x8_0_1_0() y break; \ 90 case 27: x wp_32_x8_0_1_1() y break; \ 91 case 28: x wp_32_x8_1_0_0() y break; \ 92 case 29: x wp_32_x8_1_0_1() y break; \ 93 case 30: x wp_32_x8_1_1_0() y break; \ 94 case 31: x wp_32_x8_1_1_1() y break; \ 95 \ 96 case 32: x wp_32_32_0_0_0() y break; \ 97 case 33: x wp_32_32_0_0_1() y break; \ 98 case 34: x wp_32_32_0_1_0() y break; \ 99 case 35: x wp_32_32_0_1_1() y break; \ 100 case 36: x wp_32_32_1_0_0() y break; \ 101 case 37: x wp_32_32_1_0_1() y break; \ 102 case 38: x wp_32_32_1_1_0() y break; \ 103 case 39: x wp_32_32_1_1_1() y break; \ 104 } 105 106 107