Go to the documentation of this file.
10 #define DECLARE_BLEND_FUNCTIONS(NAME) \
11 static int blend_ ## NAME ## _argb_sd(PARAMS_SD); \
12 static int blend_ ## NAME ## _argb_sda(PARAMS_SDA); \
13 static int blend_ ## NAME ## _argb_sdm(PARAMS_SDM); \
14 static int blend_ ## NAME ## _argb_sdma(PARAMS_SDMA); \
15 static int blend_ ## NAME ## _argb_cdm(PARAMS_CDM); \
16 static int blend_ ## NAME ## _argb_cd(PARAMS_CD);
23 #define DECLARE_ARGB_FUNCTION_SELECTOR(MODE) static blendf_argb_ ## MODE getBlendFunction_argb_ ## MODE(BlendMode mode);
30 #define DEFINE_BLEND_FUNCTIONS(NAME, BIGNAME) \
31 int Blender::blend_ ## NAME ## _argb_sd(PARAMS_SD) { \
32 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
33 INIT_ALPHAS_SD(s,d) BLEND_ARGB_##BIGNAME(s, sa, d, da, sac, ra), \
34 AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset) \
39 int Blender::blend_ ## NAME ## _argb_sda(PARAMS_SDA) { \
40 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
41 INIT_ALPHAS_SDA(s,d,alpha) BLEND_ARGB_ ## BIGNAME(s, sa, d, da, sac, ra), \
42 AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset) \
47 int Blender::blend_ ## NAME ## _argb_sdm(PARAMS_SDM) { \
48 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
49 INIT_ALPHAS_SDM(s,d,m) BLEND_ARGB_ ## BIGNAME(s, sa, d, da, sac, ra), \
50 AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset) \
55 int Blender::blend_ ## NAME ## _argb_sdma(PARAMS_SDMA) { \
56 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
57 INIT_ALPHAS_SDMA(s,d,m,alpha) BLEND_ARGB_ ## BIGNAME(s, sa, d, da, sac, ra), \
58 AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset) \
63 int Blender::blend_ ## NAME ## _argb_cdm(PARAMS_CDM) { \
64 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
65 INIT_ALPHAS_SDM(c,d,m) BLEND_ARGB_ ## BIGNAME ## _CDM(c, sa, d, da, sac, ra, clrbpp), \
66 AREA_INCREMENT_CDM(d, m, dstAreaRowEnd, dstByteWidth,dstByteOffset, mskByteOffset) \
71 int Blender::blend_ ## NAME ## _argb_cd(PARAMS_CD) { \
72 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
73 INIT_ALPHAS_SD(c,d) BLEND_ARGB_ ## BIGNAME ## _CDM(c, sa, d, da, sac, ra, clrbpp), \
74 AREA_INCREMENT_CD(d, dstAreaRowEnd, dstByteWidth,dstByteOffset) \
86 #define DEFINE_BLEND_FUNCTIONS_COMPLEX(NAME, BIGNAME) \
87 int Blender::blend_ ## NAME ## _argb_sd(PARAMS_SD) { \
88 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
89 BLEND_COMPLEX_##BIGNAME##_SD(s, d), \
90 AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset) \
95 int Blender::blend_ ## NAME ## _argb_sda(PARAMS_SDA) { \
96 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
97 BLEND_COMPLEX_##BIGNAME##_SDA(s, d, alpha), \
98 AREA_INCREMENT_SD(s, d, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset) \
103 int Blender::blend_ ## NAME ## _argb_sdm(PARAMS_SDM) { \
104 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
105 BLEND_COMPLEX_##BIGNAME##_SDM(s, d, m), \
106 AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset) \
111 int Blender::blend_ ## NAME ## _argb_sdma(PARAMS_SDMA) { \
112 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
113 BLEND_COMPLEX_##BIGNAME##_SDMA(s, d, m, alpha), \
114 AREA_INCREMENT_SDM(s, d, m, dstAreaRowEnd, dstByteWidth, srcByteOffset, dstByteOffset, mskByteOffset) \
119 int Blender::blend_ ## NAME ## _argb_cdm(PARAMS_CDM) { \
120 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
121 BLEND_COMPLEX_##BIGNAME##_CDM(c, d, m), \
122 AREA_INCREMENT_CDM(d, m, dstAreaRowEnd, dstByteWidth,dstByteOffset, mskByteOffset) \
127 int Blender::blend_ ## NAME ## _argb_cd(PARAMS_CD) { \
128 FOREACH(d, dstAreaEnd, dstAreaRowEnd, \
129 BLEND_COMPLEX_##BIGNAME##_CD(c, d), \
130 AREA_INCREMENT_CD(d, dstAreaRowEnd, dstByteWidth,dstByteOffset) \
139 #define DEFINE_ARGB_FUNCTION_SELECTOR(MODE) \
140 blendf_argb_ ## MODE Blender::getBlendFunction_argb_ ## MODE(BlendMode mode) { \
142 case BLEND_MODE_NORMAL: \
143 return Blender::blend_normal_argb_ ## MODE; \
145 case BLEND_MODE_DISSOLVE: \
146 return Blender::blend_normal_argb_ ## MODE; \
149 case BLEND_MODE_BEHIND: \
150 return Blender::blend_behind_argb_ ## MODE; \
152 case BLEND_MODE_CLEAR: \
153 return Blender::blend_clear_argb_ ## MODE; \
156 case BLEND_MODE_DARKEN: \
157 return Blender::blend_darken_argb_ ## MODE; \
159 case BLEND_MODE_MULTIPLY: \
160 return Blender::blend_multiply_argb_ ## MODE; \
162 case BLEND_MODE_COLOR_BURN: \
163 return Blender::blend_colorBurn_argb_ ## MODE; \
165 case BLEND_MODE_LINEAR_BURN: \
166 return Blender::blend_linearBurn_argb_ ## MODE; \
168 case BLEND_MODE_DARKER_COLOR: \
169 return Blender::blend_darkerColor_argb_ ## MODE; \
172 case BLEND_MODE_LIGHTEN: \
173 return Blender::blend_lighten_argb_ ## MODE; \
175 case BLEND_MODE_SCREEN: \
176 return Blender::blend_screen_argb_ ## MODE; \
178 case BLEND_MODE_COLOR_DODGE: \
179 return Blender::blend_colorDodge_argb_ ## MODE; \
181 case BLEND_MODE_LINEAR_DODGE_ADD: \
182 return Blender::blend_linearDodgeAdd_argb_ ## MODE; \
184 case BLEND_MODE_LIGHTER_COLOR: \
185 return Blender::blend_lighterColor_argb_ ## MODE; \
188 case BLEND_MODE_OVERLAY: \
189 return Blender::blend_overlay_argb_ ## MODE; \
191 case BLEND_MODE_SOFT_LIGHT: \
192 return Blender::blend_softLight_argb_ ## MODE; \
194 case BLEND_MODE_HARD_LIGHT: \
195 return Blender::blend_hardLight_argb_ ## MODE; \
197 case BLEND_MODE_VIVID_LIGHT: \
198 return Blender::blend_vividLight_argb_ ## MODE; \
200 case BLEND_MODE_LINEAR_LIGHT: \
201 return Blender::blend_linearLight_argb_ ## MODE; \
203 case BLEND_MODE_PIN_LIGHT: \
204 return Blender::blend_pinLight_argb_ ## MODE; \
206 case BLEND_MODE_HARD_MIX: \
207 return Blender::blend_hardMix_argb_ ## MODE; \
210 case BLEND_MODE_DIFFERENCE: \
211 return Blender::blend_difference_argb_ ## MODE; \
213 case BLEND_MODE_EXCLUSION: \
214 return Blender::blend_exclusion_argb_ ## MODE; \
216 case BLEND_MODE_SUBTRACT: \
217 return Blender::blend_subtract_argb_ ## MODE; \
219 case BLEND_MODE_DIVIDE: \
220 return Blender::blend_divide_argb_ ## MODE; \
223 case BLEND_MODE_HUE: \
224 return Blender::blend_hue_argb_ ## MODE; \
226 case BLEND_MODE_SATURATION: \
227 return Blender::blend_saturation_argb_ ## MODE; \
229 case BLEND_MODE_COLOR: \
230 return Blender::blend_color_argb_ ## MODE; \
232 case BLEND_MODE_LUMINOSITY: \
233 return Blender::blend_luminosity_argb_ ## MODE; \