#ifdef BUILD_C
static void
_op_blend_c_dp(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l, a = 256 - (c >> 24);
- while (d < e)
- {
- *d = c + MUL_256(a, *d);
- d++;
- }
+ DATA32 *e, a = 256 - (c >> 24);
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = c + MUL_256(a, *d);
+ d++;
+ });
}
#define _op_blend_caa_dp _op_blend_c_dp
#ifdef BUILD_C
static void
_op_blend_pt_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- s = 256 - (c >> 24);
- *d = c + MUL_256(s, *d);
+ s = 256 - (c >> 24);
+ *d = c + MUL_256(s, *d);
}
#define _op_blend_pt_caa_dp _op_blend_pt_c_dp
#ifdef BUILD_C
static void
_op_blend_rel_c_dp(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- l = 256 - (c >> 24);
- while (d < e)
- {
- *d = MUL_SYM(*d >> 24, c) + MUL_256(l, *d);
- d++;
- }
+ DATA32 *e;
+ int alpha = 256 - (c >> 24);
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d);
+ d++;
+ });
}
#define _op_blend_rel_caa_dp _op_blend_rel_c_dp
#ifdef BUILD_C
static void
_op_blend_rel_pt_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- s = *d >> 24;
- *d = MUL_SYM(s, c) + MUL_256(256 - (c >> 24), *d);
+ s = *d >> 24;
+ *d = MUL_SYM(s, c) + MUL_256(256 - (c >> 24), *d);
}
#define _op_blend_rel_pt_caa_dp _op_blend_rel_pt_c_dp
#ifdef BUILD_C
static void
_op_blend_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- l = 256 - (c >> 24);
- while (d < e) {
- DATA32 a = *m;
- switch(a)
- {
- case 0:
- break;
- case 255:
- *d = c + MUL_256(l, *d);
- break;
- default:
- {
- DATA32 mc = MUL_SYM(a, c);
- a = 256 - (mc >> 24);
- *d = mc + MUL_256(a, *d);
- }
- break;
- }
- m++; d++;
- }
+ DATA32 *e;
+ int alpha = 256 - (c >> 24);
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ DATA32 a = *m;
+ switch(a)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = c + MUL_256(alpha, *d);
+ break;
+ default:
+ {
+ DATA32 mc = MUL_SYM(a, c);
+ a = 256 - (mc >> 24);
+ *d = mc + MUL_256(a, *d);
+ }
+ break;
+ }
+ m++; d++;
+ });
}
static void
_op_blend_mas_can_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- *d = c;
- break;
- default:
- l++;
- *d = INTERP_256(l, c, *d);
- break;
- }
- m++; d++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = *m;
+ switch(alpha)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = c;
+ break;
+ default:
+ alpha++;
+ *d = INTERP_256(alpha, c, *d);
+ break;
+ }
+ m++; d++;
+ });
}
#define _op_blend_mas_cn_dp _op_blend_mas_can_dp
#ifdef BUILD_C
static void
_op_blend_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
- s = MUL_SYM(m, c);
- m = 256 - (s >> 24);
- *d = s + MUL_256(m, *d);
+ s = MUL_SYM(m, c);
+ m = 256 - (s >> 24);
+ *d = s + MUL_256(m, *d);
}
static void
_op_blend_pt_mas_can_dp(DATA32 s __UNUSED__, DATA8 m, DATA32 c, DATA32 *d) {
- *d = INTERP_256(m + 1, c, *d);
+ *d = INTERP_256(m + 1, c, *d);
}
#define _op_blend_pt_mas_cn_dp _op_blend_pt_mas_can_dp
#ifdef BUILD_C
static void
_op_blend_rel_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- DATA32 mc = MUL_SYM(*m, c);
- l = 256 - (mc >> 24);
- *d = MUL_SYM(*d >> 24, mc) + MUL_256(l, *d);
- d++;
- m++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ DATA32 mc = MUL_SYM(*m, c);
+ alpha = 256 - (mc >> 24);
+ *d = MUL_SYM(*d >> 24, mc) + MUL_256(alpha, *d);
+ d++;
+ m++;
+ });
}
#define _op_blend_rel_mas_cn_dp _op_blend_rel_mas_c_dp
#ifdef BUILD_C
static void
_op_blend_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
- s = MUL_SYM(m, c);
- c = 256 - (s >> 24);
- *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+ s = MUL_SYM(m, c);
+ c = 256 - (s >> 24);
+ *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
}
#define _op_blend_rel_pt_mas_cn_dp _op_blend_rel_pt_mas_c_dp
#ifdef BUILD_C
static void
_op_blend_p_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = 256 - (*s >> 24);
- *d = *s++ + MUL_256(l, *d);
- d++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = 256 - (*s >> 24);
+ *d = *s++ + MUL_256(alpha, *d);
+ d++;
+ });
}
static void
_op_blend_pas_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e)
- {
- switch (*s & 0xff000000)
- {
- case 0:
- break;
- case 0xff000000:
- *d = *s;
- break;
- default :
- l = 256 - (*s >> 24);
- *d = *s + MUL_256(l, *d);
- break;
- }
- s++; d++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ switch (*s & 0xff000000)
+ {
+ case 0:
+ break;
+ case 0xff000000:
+ *d = *s;
+ break;
+ default:
+ alpha = 256 - (*s >> 24);
+ *d = *s + MUL_256(alpha, *d);
+ break;
+ }
+ s++; d++;
+ });
}
#define _op_blend_pan_dp NULL
#ifdef BUILD_C
static void
_op_blend_pt_p_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- c = 256 - (s >> 24);
- *d = s + MUL_256(c, *d);
+ c = 256 - (s >> 24);
+ *d = s + MUL_256(c, *d);
}
#define _op_blend_pt_pas_dp _op_blend_pt_p_dp
#ifdef BUILD_C
static void
_op_blend_rel_p_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = 256 - (*s >> 24);
- c = 1 + (*d >> 24);
- *d = MUL_256(c, *s) + MUL_256(l, *d);
- d++;
- s++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = 256 - (*s >> 24);
+ c = 1 + (*d >> 24);
+ *d = MUL_256(c, *s) + MUL_256(alpha, *d);
+ d++;
+ s++;
+ });
}
static void
_op_blend_rel_pan_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- c = 1 + (*d >> 24);
- *d++ = MUL_256(c, *s);
- s++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ c = 1 + (*d >> 24);
+ *d++ = MUL_256(c, *s);
+ s++;
+ });
}
#define _op_blend_rel_pas_dp _op_blend_rel_p_dp
#ifdef BUILD_C
static void
_op_blend_rel_pt_p_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- c = 256 - (s >> 24);
- *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+ c = 256 - (s >> 24);
+ *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
}
static void
_op_blend_rel_pt_pan_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) {
- *d = MUL_SYM(*d >> 24, s);
+ *d = MUL_SYM(*d >> 24, s);
}
#define _op_blend_rel_pt_pas_dp _op_blend_rel_pt_p_dp
#ifdef BUILD_C
static void
_op_blend_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- DATA32 sc = MUL4_SYM(c, *s);
- l = 256 - (sc >> 24);
- *d = sc + MUL_256(l, *d);
- d++;
- s++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ DATA32 sc = MUL4_SYM(c, *s);
+ alpha = 256 - (sc >> 24);
+ *d = sc + MUL_256(alpha, *d);
+ d++;
+ s++;
+ });
}
static void
_op_blend_pan_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- l = 256 - (c >> 24);
- while (d < e) {
- *d = ((c & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(l, *d);
- d++;
- s++;
- }
+ DATA32 *e;
+ int alpha = 256 - (c >> 24);
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = ((c & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(alpha, *d);
+ d++;
+ s++;
+ });
}
static void
_op_blend_p_can_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = 256 - (*s >> 24);
- *d = ((*s & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(l, *d);
- d++;
- s++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = 256 - (*s >> 24);
+ *d = ((*s & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(alpha, *d);
+ d++;
+ s++;
+ });
}
static void
_op_blend_pan_can_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- *d++ = 0xff000000 + MUL3_SYM(c, *s);
- s++;
- }
+ DATA32 *e;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d++ = 0xff000000 + MUL3_SYM(c, *s);
+ s++;
+ });
}
static void
_op_blend_p_caa_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
+ DATA32 *e;
+ int alpha;
c = 1 + (c & 0xff);
- while (d < e) {
- DATA32 sc = MUL_256(c, *s);
- l = 256 - (sc >> 24);
- *d = sc + MUL_256(l, *d);
- d++;
- s++;
- }
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ DATA32 sc = MUL_256(c, *s);
+ alpha = 256 - (sc >> 24);
+ *d = sc + MUL_256(alpha, *d);
+ d++;
+ s++;
+ });
}
static void
_op_blend_pan_caa_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
+ DATA32 *e;
c = 1 + (c & 0xff);
- while (d < e) {
- *d = INTERP_256(c, *s, *d);
- d++;
- s++;
- }
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = INTERP_256(c, *s, *d);
+ d++;
+ s++;
+ });
}
#define _op_blend_pas_c_dp _op_blend_p_c_dp
#ifdef BUILD_C
static void
_op_blend_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- s = MUL4_SYM(c, s);
- c = 256 - (s >> 24);
- *d = s + MUL_256(c, *d);
+ s = MUL4_SYM(c, s);
+ c = 256 - (s >> 24);
+ *d = s + MUL_256(c, *d);
}
#define _op_blend_pt_pas_c_dp _op_blend_pt_p_c_dp
#ifdef BUILD_C
static void
_op_blend_rel_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- DATA32 sc = MUL4_SYM(c, *s);
- l = 256 - (sc >> 24);
- *d = MUL_SYM(*d >> 24, sc) + MUL_256(l, *d);
- d++;
- s++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ DATA32 sc = MUL4_SYM(c, *s);
+ alpha = 256 - (sc >> 24);
+ *d = MUL_SYM(*d >> 24, sc) + MUL_256(alpha, *d);
+ d++;
+ s++;
+ });
}
#define _op_blend_rel_pas_c_dp _op_blend_rel_p_c_dp
#ifdef BUILD_C
static void
_op_blend_rel_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- s = MUL4_SYM(c, s);
- c = 256 - (s >> 24);
- *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+ s = MUL4_SYM(c, s);
+ c = 256 - (s >> 24);
+ *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
}
#define _op_blend_rel_pt_pas_c_dp _op_blend_rel_pt_p_c_dp
#ifdef BUILD_C
static void
_op_blend_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- l = 256 - (*s >> 24);
- *d = *s + MUL_256(l, *d);
- break;
- default:
- c = MUL_SYM(l, *s);
- l = 256 - (c >> 24);
- *d = c + MUL_256(l, *d);
- break;
- }
- m++; s++; d++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = *m;
+ switch(alpha)
+ {
+ case 0:
+ break;
+ case 255:
+ alpha = 256 - (*s >> 24);
+ *d = *s + MUL_256(alpha, *d);
+ break;
+ default:
+ c = MUL_SYM(alpha, *s);
+ alpha = 256 - (c >> 24);
+ *d = c + MUL_256(alpha, *d);
+ break;
+ }
+ m++; s++; d++;
+ });
}
static void
_op_blend_pas_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = (*s >> 24);
- switch(*m & l)
- {
- case 0:
- break;
- case 255:
- *d = *s;
- break;
- default:
- c = MUL_SYM(l, *s);
- l = 256 - (c >> 24);
- *d = c + MUL_256(l, *d);
- break;
- }
- m++; s++; d++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = (*s >> 24);
+ switch(alpha)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = *s;
+ break;
+ default:
+ c = MUL_SYM(alpha, *s);
+ alpha = 256 - (c >> 24);
+ *d = c + MUL_256(alpha, *d);
+ break;
+ }
+ });
}
static void
_op_blend_pan_mas_dp(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- *d = *s;
- break;
- default:
- l++;
- *d = INTERP_256(l, *s, *d);
- break;
- }
- m++; s++; d++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ alpha = *m;
+ switch(alpha)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = *s;
+ break;
+ default:
+ alpha++;
+ *d = INTERP_256(alpha, *s, *d);
+ break;
+ }
+ m++; s++; d++;
+ });
}
#ifdef BUILD_C
static void
_op_blend_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
- s = MUL_SYM(m, s);
- c = 256 - (s >> 24);
- *d = s + MUL_256(c, *d);
+ s = MUL_SYM(m, s);
+ c = 256 - (s >> 24);
+ *d = s + MUL_256(c, *d);
}
static void
_op_blend_pt_pan_mas_dp(DATA32 s, DATA8 m, DATA32 c __UNUSED__, DATA32 *d) {
- *d = INTERP_256(m + 1, s, *d);
+ *d = INTERP_256(m + 1, s, *d);
}
#define _op_blend_pt_pas_mas_dp _op_blend_pt_p_mas_dp
#ifdef BUILD_C
static void
_op_blend_rel_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- c = MUL_SYM(*m, *s);
- l = 256 - (c >> 24);
- *d = MUL_SYM(*d >> 24, c) + MUL_256(l, *d);
- d++;
- m++;
- s++;
- }
+ DATA32 *e;
+ int alpha;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ c = MUL_SYM(*m, *s);
+ alpha = 256 - (c >> 24);
+ *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d);
+ d++; m++; s++;
+ });
}
#define _op_blend_rel_pas_mas_dp _op_blend_rel_p_mas_dp
#ifdef BUILD_C
static void
_op_blend_rel_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
- s = MUL_SYM(m, s);
- c = 256 - (s >> 24);
- *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+ s = MUL_SYM(m, s);
+ c = 256 - (s >> 24);
+ *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
}
#define _op_blend_rel_pt_pas_mas_dp _op_blend_rel_pt_p_mas_dp
#ifdef BUILD_C
static void
_op_copy_c_dp(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- for (; d < e; d++) {
- *d = c;
- }
+ DATA32 *e;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = c;
+ d++;
+ });
}
#define _op_copy_cn_dp _op_copy_c_dp
#ifdef BUILD_C
static void
_op_copy_pt_c_dp(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- *d = c;
+ *d = c;
}
#define _op_copy_pt_cn_dp _op_copy_pt_c_dp
#ifdef BUILD_C
static void
_op_copy_rel_c_dp(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- for (; d < e; d++) {
- *d = MUL_SYM(*d >> 24, c);
- }
+ DATA32 *e;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = MUL_SYM(*d >> 24, c);
+ d++;
+ });
}
#ifdef BUILD_C
static void
_op_copy_rel_pt_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- s = 1 + (*d >> 24);
- *d = MUL_256(s, c);
+ s = 1 + (*d >> 24);
+ *d = MUL_256(s, c);
}
#ifdef BUILD_C
static void
_op_copy_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- *d = c;
- break;
- default:
- l++;
- *d = INTERP_256(l, c, *d);
- break;
- }
- m++; d++;
- }
+ DATA32 *e;
+ int color;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ color = *m;
+ switch(color)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = c;
+ break;
+ default:
+ color++;
+ *d = INTERP_256(color, c, *d);
+ break;
+ }
+ m++; d++;
+ });
}
#define _op_copy_mas_cn_dp _op_copy_mas_c_dp
#ifdef BUILD_C
static void
_op_copy_pt_mas_c_dp(DATA32 s __UNUSED__, DATA8 m, DATA32 c, DATA32 *d) {
- *d = INTERP_256(m + 1, c, *d);
+ *d = INTERP_256(m + 1, c, *d);
}
#ifdef BUILD_C
static void
_op_copy_rel_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- l = 1 + (*d >> 24);
- *d = MUL_256(l, c);
- break;
- default:
- {
- DATA32 da = 1 + (*d >> 24);
- da = MUL_256(da, c);
- l++;
- *d = INTERP_256(l, da, *d);
- }
- break;
- }
- m++; d++;
- }
+ DATA32 *e;
+ int color;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ color = *m;
+ switch(color)
+ {
+ case 0:
+ break;
+ case 255:
+ color = 1 + (*d >> 24);
+ *d = MUL_256(color, c);
+ break;
+ default:
+ {
+ DATA32 da = 1 + (*d >> 24);
+ da = MUL_256(da, c);
+ color++;
+ *d = INTERP_256(color, da, *d);
+ }
+ break;
+ }
+ m++; d++;
+ });
}
#ifdef BUILD_C
static void
_op_copy_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
- s = 1 + (*d >> 24);
- s = MUL_256(s, c);
- *d = INTERP_256(m + 1, s, *d);
+ s = 1 + (*d >> 24);
+ s = MUL_256(s, c);
+ *d = INTERP_256(m + 1, s, *d);
}
#define _op_copy_rel_pt_mas_cn_dp _op_copy_rel_pt_mas_c_dp
#ifdef BUILD_C
static void
_op_copy_p_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
- DATA32 *e = d + l;
- for (; d < e; d++, s++) {
- *d = *s;
- }
+ memcpy(d, s, l * sizeof(DATA32));
}
#define _op_copy_pan_dp _op_copy_p_dp
#ifdef BUILD_C
static void
_op_copy_pt_p_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) {
- *d = s;
+ *d = s;
}
#define _op_copy_pt_pan_dp _op_copy_pt_p_dp
#ifdef BUILD_C
static void
_op_copy_rel_p_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
- DATA32 *e = d + l;
- for (; d < e; d++, s++) {
- *d = MUL_SYM(*d >> 24, *s);
- }
+ DATA32 *e;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = MUL_SYM(*d >> 24, *s);
+ d++; s++;
+ });
}
#ifdef BUILD_C
static void
_op_copy_rel_pt_p_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- c = 1 + (*d >> 24);
- *d = MUL_256(c, s);
+ c = 1 + (*d >> 24);
+ *d = MUL_256(c, s);
}
#ifdef BUILD_C
static void
_op_copy_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- *d = MUL4_SYM(c, *s);
- d++;
- s++;
- }
+ DATA32 *e;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = MUL4_SYM(c, *s);
+ d++;
+ s++;
+ });
}
static void
_op_copy_p_caa_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
+ DATA32 *e;
c = 1 + (c >> 24);
- while (d < e) {
- *d = MUL_256(c, *s);
- d++;
- s++;
- }
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ *d = MUL_256(c, *s);
+ d++;
+ s++;
+ });
}
#ifdef BUILD_C
static void
_op_copy_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- *d = MUL4_SYM(c, s);
+ *d = MUL4_SYM(c, s);
}
static void
_op_copy_pt_p_caa_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- *d = MUL_SYM(c >> 24, s);
+ *d = MUL_SYM(c >> 24, s);
}
#ifdef BUILD_C
static void
_op_copy_rel_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- DATA32 cs = MUL4_SYM(c, *s);
- *d = MUL_SYM(*d >> 24, cs);
- d++;
- s++;
- }
+ DATA32 *e;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ DATA32 cs = MUL4_SYM(c, *s);
+ *d = MUL_SYM(*d >> 24, cs);
+ d++;
+ s++;
+ });
}
#define _op_copy_rel_pas_c_dp _op_copy_rel_p_c_dp
#ifdef BUILD_C
static void
_op_copy_rel_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
- s = MUL4_SYM(c, s);
- *d = MUL_SYM(*d >> 24, s);
+ s = MUL4_SYM(c, s);
+ *d = MUL_SYM(*d >> 24, s);
}
#define _op_copy_rel_pt_pas_c_dp _op_copy_rel_pt_p_c_dp
#ifdef BUILD_C
static void
_op_copy_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- *d = *s;
- break;
- default:
- l++;
- *d = INTERP_256(l, *s, *d);
- break;
- }
- m++; s++; d++;
- }
+ DATA32 *e;
+ int color;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ color = *m;
+ switch(color)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = *s;
+ break;
+ default:
+ color++;
+ *d = INTERP_256(color, *s, *d);
+ break;
+ }
+ m++; s++; d++;
+ });
}
#ifdef BUILD_C
static void
_op_copy_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c __UNUSED__, DATA32 *d) {
- *d = INTERP_256(m + 1, s, *d);
+ *d = INTERP_256(m + 1, s, *d);
}
#define _op_copy_pt_pan_mas_dp _op_copy_pt_p_mas_dp
/* copy_rel pixel x mask --> dst */
#ifdef BUILD_C
-static void
+static void
_op_copy_rel_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
- DATA32 *e = d + l;
- while (d < e) {
- l = *m;
- switch(l)
- {
- case 0:
- break;
- case 255:
- *d = MUL_SYM(*d >> 24, *s);
- break;
- default:
- c = MUL_SYM(*d >> 24, *s);
- l++;
- *d = INTERP_256(l, c, *d);
- break;
- }
- m++; s++; d++;
- }
+ DATA32 *e;
+ int color;
+ UNROLL8_PLD_WHILE(d, l, e,
+ {
+ color = *m;
+ switch(color)
+ {
+ case 0:
+ break;
+ case 255:
+ *d = MUL_SYM(*d >> 24, *s);
+ break;
+ default:
+ c = MUL_SYM(*d >> 24, *s);
+ l++;
+ *d = INTERP_256(l, c, *d);
+ break;
+ }
+ m++; s++; d++;
+ });
}
#endif
#ifdef BUILD_C
-static void
+static void
_op_copy_rel_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
- c = MUL_SYM(*d >> 24, s);
- *d = INTERP_256(m + 1, c, *d);
+ c = MUL_SYM(*d >> 24, s);
+ *d = INTERP_256(m + 1, c, *d);
}
/*****************************************************************************/
+#if defined(__ARM_ARCH_3M__)
+# define __ARM_ARCH__ 40
+#endif
+#if defined(__ARM_ARCH_4__)
+# define __ARM_ARCH__ 40
+#endif
+#if defined(__ARM_ARCH_4T__)
+# define __ARM_ARCH__ 41
+#endif
+
+#if defined(__ARM_ARCH_5__)
+# define __ARM_ARCH__ 50
+#endif
+#if defined(__ARM_ARCH_5T__)
+# define __ARM_ARCH__ 51
+#endif
+#if defined(__ARM_ARCH_5E__)
+# define __ARM_ARCH__ 52
+#endif
+#if defined(__ARM_ARCH_5TE__)
+# define __ARM_ARCH__ 53
+#endif
+#if defined(__ARM_ARCH_5TEJ__)
+# define __ARM_ARCH__ 54
+#endif
+
+#if defined(__ARM_ARCH_6__)
+# define __ARM_ARCH__ 60
+#endif
+#if defined(__ARM_ARCH_6J__)
+# define __ARM_ARCH__ 61
+#endif
+#if defined(__ARM_ARCH_6K__)
+# define __ARM_ARCH__ 62
+#endif
+#if defined(__ARM_ARCH_6Z__)
+# define __ARM_ARCH__ 63
+#endif
+#if defined(__ARM_ARCH_6ZK__)
+# define __ARM_ARCH__ 64
+#endif
+#if defined(__ARM_ARCH_6T2__)
+# define __ARM_ARCH__ 65
+#endif
+
+#if defined(__ARM_ARCH_7__)
+# define __ARM_ARCH__ 70
+#endif
+#if defined(__ARM_ARCH_7A__)
+# define __ARM_ARCH__ 71
+#endif
+#if defined(__ARM_ARCH_7R__)
+# define __ARM_ARCH__ 72
+#endif
+#if defined(__ARM_ARCH_7M__)
+# define __ARM_ARCH__ 73
+#endif
+
+#if defined(__ARM_ARCH__) && (__ARM_ARCH__ >= 52)
+/* tested on ARMv6 (arm1136j-s), Nokia N800 CPU */
+#define pld(addr, off) \
+ __asm__("pld [%[address], %[offset]]":: \
+ [address] "r" (addr), [offset] "i" (off))
+#else
+#define pld(addr, off)
+#endif /* __ARMEL__ */
+
+/*****************************************************************************/
+
+#define UNROLL2(op...) op op
+#define UNROLL4(op...) UNROLL2(op) UNROLL2(op)
+#define UNROLL8(op...) UNROLL4(op) UNROLL4(op)
+#define UNROLL16(op...) UNROLL8(op) UNROLL8(op)
+
+#define UNROLL8_PLD_WHILE(start, size, end, op) \
+ pld(start, 0); \
+ end = start + (size & ~7); \
+ while (start < end) \
+ { \
+ pld(start, 32); \
+ UNROLL8(op); \
+ } \
+ end += (size & 7); \
+ pld(start, 32); \
+ while (start < end) \
+ { \
+ op; \
+ }
+
/*****************************************************************************/
typedef unsigned long long DATA64;
struct _Image_Entry
{
- EINA_INLIST;
-
- Evas_Cache_Image *cache;
-
- const char *cache_key;
-
- const char *file;
- const char *key;
-
- Evas_Cache_Target *targets;
-
- time_t timestamp;
- time_t laststat;
-
- int references;
-
- unsigned char scale;
-
- RGBA_Image_Loadopts load_opts;
- int space;
- int w;
- int h;
-
- struct
- {
- int w;
- int h;
- } allocated;
-
- struct
- {
- void *module;
- void *loader;
- } info;
+ EINA_INLIST;
+ Evas_Cache_Image *cache;
+
+ const char *cache_key;
+
+ const char *file;
+ const char *key;
+
+ Evas_Cache_Target *targets;
+
+ time_t timestamp;
+ time_t laststat;
+
+ int references;
+
+ unsigned char scale;
+
+ RGBA_Image_Loadopts load_opts;
+ int space;
+ int w;
+ int h;
+
+ struct
+ {
+ int w;
+ int h;
+ } allocated;
+
+ struct
+ {
+ void *module;
+ void *loader;
+ } info;
+
#ifdef BUILD_ASYNC_PRELOAD
- pthread_mutex_t lock;
+ LK(lock);
#endif
- Image_Entry_Flags flags;
+ Image_Entry_Flags flags;
};
struct _Engine_Image_Entry
Eina_Hash *glyphs;
-#ifdef HAVE_PTHREAD
- pthread_mutex_t ft_mutex;
-#endif
+ LK(ft_mutex);
+
Eina_Hash *kerning;
Eina_Hash *indexes;
((((g) >> 2) & 0x3f) << 5) | \
(((b) >> 3) & 0x1f))
-#define UNROLL2(op...) op op
-#define UNROLL4(op...) UNROLL2(op) UNROLL2(op)
-#define UNROLL8(op...) UNROLL4(op) UNROLL4(op)
-#define UNROLL16(op...) UNROLL8(op) UNROLL8(op)
-
-#if defined(__ARM_ARCH_3M__)
-# define __ARM_ARCH__ 40
-#endif
-#if defined(__ARM_ARCH_4__)
-# define __ARM_ARCH__ 40
-#endif
-#if defined(__ARM_ARCH_4T__)
-# define __ARM_ARCH__ 41
-#endif
-
-#if defined(__ARM_ARCH_5__)
-# define __ARM_ARCH__ 50
-#endif
-#if defined(__ARM_ARCH_5T__)
-# define __ARM_ARCH__ 51
-#endif
-#if defined(__ARM_ARCH_5E__)
-# define __ARM_ARCH__ 52
-#endif
-#if defined(__ARM_ARCH_5TE__)
-# define __ARM_ARCH__ 53
-#endif
-#if defined(__ARM_ARCH_5TEJ__)
-# define __ARM_ARCH__ 54
-#endif
-
-#if defined(__ARM_ARCH_6__)
-# define __ARM_ARCH__ 60
-#endif
-#if defined(__ARM_ARCH_6J__)
-# define __ARM_ARCH__ 61
-#endif
-#if defined(__ARM_ARCH_6K__)
-# define __ARM_ARCH__ 62
-#endif
-#if defined(__ARM_ARCH_6Z__)
-# define __ARM_ARCH__ 63
-#endif
-#if defined(__ARM_ARCH_6ZK__)
-# define __ARM_ARCH__ 64
-#endif
-#if defined(__ARM_ARCH_6T2__)
-# define __ARM_ARCH__ 65
-#endif
-
-#if defined(__ARM_ARCH_7__)
-# define __ARM_ARCH__ 70
-#endif
-#if defined(__ARM_ARCH_7A__)
-# define __ARM_ARCH__ 71
-#endif
-#if defined(__ARM_ARCH_7R__)
-# define __ARM_ARCH__ 72
-#endif
-#if defined(__ARM_ARCH_7M__)
-# define __ARM_ARCH__ 73
-#endif
-
-#if defined(__ARM_ARCH__) && (__ARM_ARCH__ >= 52)
-/* tested on ARMv6 (arm1136j-s), Nokia N800 CPU */
-#define pld(addr, off) \
- __asm__("pld [%[address], %[offset]]":: \
- [address] "r" (addr), [offset] "i" (off))
-#else
-#define pld(addr, off)
-#endif /* __ARMEL__ */
-
static inline int
_calc_stride(int w)
{