mirror of https://github.com/freetype/freetype
[truetype] Speed up variation IUP.
* src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial snapping to the same position from true interpolation.
This commit is contained in:
parent
ba03310b5a
commit
1e4496c54c
|
@ -1,3 +1,10 @@
|
|||
2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
[truetype] Speed up variation IUP.
|
||||
|
||||
* src/truetype/ttgxvar.c (tt_delta_interpolate): Separate trivial
|
||||
snapping to the same position from true interpolation.
|
||||
|
||||
2018-10-31 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
* src/type1/t1load.c (t1_set_mm_blend): Optimized.
|
||||
|
|
|
@ -3516,10 +3516,25 @@
|
|||
|
||||
/* If the reference points have the same coordinate but different */
|
||||
/* delta, inferred delta is zero. Otherwise interpolate. */
|
||||
if ( in1 != in2 || out1 == out2 )
|
||||
if ( in1 == in2 || out1 == out2 )
|
||||
{
|
||||
FT_Fixed scale = in1 != in2 ? FT_DivFix( out2 - out1, in2 - in1 )
|
||||
: 0;
|
||||
for ( p = p1; p <= p2; p++ )
|
||||
{
|
||||
out = in_points[p].x;
|
||||
|
||||
if ( out <= in1 )
|
||||
out += d1;
|
||||
else if ( out >= in2 )
|
||||
out += d2;
|
||||
else
|
||||
out = out1;
|
||||
|
||||
out_points[p].x = out;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FT_Fixed scale = FT_DivFix( out2 - out1, in2 - in1 );
|
||||
|
||||
|
||||
for ( p = p1; p <= p2; p++ )
|
||||
|
|
Loading…
Reference in New Issue