evas map has used integer coodinate system since it's born,
since object's transition is jiggled, not perfectly smooth.
It's obvious because Positioning must be stepping with integer units
without any subpixel rendering.
Currently, this patch is a sort of preparatory to improve this,
only valid for high-quality evas map (smooth + anti-aliasing)
Check alpha transparency. */
for (int i = 0; i < 4; i++)
{
- x[i] = ((float) (p[i].x >> FP)) + 0.5;
- y[i] = ((float) (p[i].y >> FP)) + 0.5;
+ x[i] = p[i].fx + 0.5;
+ y[i] = p[i].fy + 0.5;
u[i] = (p[i].u >> FP);
v[i] = (p[i].v >> FP);
c[i] = p[i].col;
continue;
}
- if ((m->pts[0 + offset].x == m->pts[3 + offset].x) &&
+ if (!(map->anti_alias && map->smooth) && //For sub-pixel rendering
+ (m->pts[0 + offset].x == m->pts[3 + offset].x) &&
(m->pts[1 + offset].x == m->pts[2 + offset].x) &&
(m->pts[0 + offset].y == m->pts[1 + offset].y) &&
(m->pts[3 + offset].y == m->pts[2 + offset].y) &&