forked from enlightenment/efl
evas map: move to floating point coordinate system in high-quality drawing.
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)
This commit is contained in:
parent
70a7dfff46
commit
9c66a4751c
|
@ -774,8 +774,8 @@ _evas_common_map_rgba_internal_high(RGBA_Image *src, RGBA_Image *dst,
|
||||||
Check alpha transparency. */
|
Check alpha transparency. */
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
x[i] = ((float) (p[i].x >> FP)) + 0.5;
|
x[i] = p[i].fx + 0.5;
|
||||||
y[i] = ((float) (p[i].y >> FP)) + 0.5;
|
y[i] = p[i].fy + 0.5;
|
||||||
u[i] = (p[i].u >> FP);
|
u[i] = (p[i].u >> FP);
|
||||||
v[i] = (p[i].v >> FP);
|
v[i] = (p[i].v >> FP);
|
||||||
c[i] = p[i].col;
|
c[i] = p[i].col;
|
||||||
|
|
|
@ -2494,7 +2494,8 @@ _draw_thread_map_draw(void *data)
|
||||||
continue;
|
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[1 + offset].x == m->pts[2 + offset].x) &&
|
||||||
(m->pts[0 + offset].y == m->pts[1 + offset].y) &&
|
(m->pts[0 + offset].y == m->pts[1 + offset].y) &&
|
||||||
(m->pts[3 + offset].y == m->pts[2 + offset].y) &&
|
(m->pts[3 + offset].y == m->pts[2 + offset].y) &&
|
||||||
|
|
Loading…
Reference in New Issue