[truetype] Speed up IUP.
* src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial snapping to the same position from true interpolation.
This commit is contained in:
parent
b6c511d9d0
commit
40623a1f3a
|
@ -1,3 +1,10 @@
|
||||||
|
2015-04-27 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
|
[truetype] Speed up IUP.
|
||||||
|
|
||||||
|
* src/truetype/ttinterp.c (_iup_worker_interpolate): Separate trivial
|
||||||
|
snapping to the same position from true interpolation.
|
||||||
|
|
||||||
2015-04-21 Werner Lemberg <wl@gnu.org>
|
2015-04-21 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
[autofit] By default, enable warping code but switch off warping.
|
[autofit] By default, enable warping code but switch off warping.
|
||||||
|
|
|
@ -6783,7 +6783,7 @@
|
||||||
FT_UInt ref2 )
|
FT_UInt ref2 )
|
||||||
{
|
{
|
||||||
FT_UInt i;
|
FT_UInt i;
|
||||||
FT_F26Dot6 orus1, orus2, org1, org2, delta1, delta2;
|
FT_F26Dot6 orus1, orus2, org1, org2, cur1, cur2, delta1, delta2;
|
||||||
|
|
||||||
|
|
||||||
if ( p1 > p2 )
|
if ( p1 > p2 )
|
||||||
|
@ -6813,12 +6813,15 @@
|
||||||
|
|
||||||
org1 = worker->orgs[ref1].x;
|
org1 = worker->orgs[ref1].x;
|
||||||
org2 = worker->orgs[ref2].x;
|
org2 = worker->orgs[ref2].x;
|
||||||
delta1 = worker->curs[ref1].x - org1;
|
cur1 = worker->curs[ref1].x;
|
||||||
delta2 = worker->curs[ref2].x - org2;
|
cur2 = worker->curs[ref2].x;
|
||||||
|
delta1 = cur1 - org1;
|
||||||
|
delta2 = cur2 - org2;
|
||||||
|
|
||||||
if ( orus1 == orus2 )
|
if ( cur1 == cur2 || orus1 == orus2 )
|
||||||
{
|
{
|
||||||
/* simple shift of untouched points */
|
|
||||||
|
/* trivial snap or shift of untouched points */
|
||||||
for ( i = p1; i <= p2; i++ )
|
for ( i = p1; i <= p2; i++ )
|
||||||
{
|
{
|
||||||
FT_F26Dot6 x = worker->orgs[i].x;
|
FT_F26Dot6 x = worker->orgs[i].x;
|
||||||
|
@ -6826,9 +6829,13 @@
|
||||||
|
|
||||||
if ( x <= org1 )
|
if ( x <= org1 )
|
||||||
x += delta1;
|
x += delta1;
|
||||||
else
|
|
||||||
|
else if ( x >= org2 )
|
||||||
x += delta2;
|
x += delta2;
|
||||||
|
|
||||||
|
else
|
||||||
|
x = cur1;
|
||||||
|
|
||||||
worker->curs[i].x = x;
|
worker->curs[i].x = x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6855,12 +6862,10 @@
|
||||||
if ( !scale_valid )
|
if ( !scale_valid )
|
||||||
{
|
{
|
||||||
scale_valid = 1;
|
scale_valid = 1;
|
||||||
scale = FT_DivFix( org2 + delta2 - ( org1 + delta1 ),
|
scale = FT_DivFix( cur2 - cur1, orus2 - orus1 );
|
||||||
orus2 - orus1 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
x = ( org1 + delta1 ) +
|
x = cur1 + FT_MulFix( worker->orus[i].x - orus1, scale );
|
||||||
FT_MulFix( worker->orus[i].x - orus1, scale );
|
|
||||||
}
|
}
|
||||||
worker->curs[i].x = x;
|
worker->curs[i].x = x;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue