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