[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master b6dbbd963: * src/truetype/ttgxvar.c (ft_var_apply_tup
From: |
Werner Lemberg |
Subject: |
[freetype2] master b6dbbd963: * src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks. |
Date: |
Fri, 24 May 2024 13:38:33 -0400 (EDT) |
branch: master
commit b6dbbd963097afd9f90cc02f1c6c6d2b98ca4fd4
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
* src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks.
---
src/truetype/ttgxvar.c | 61 +++++++++++++++++++++++---------------------------
1 file changed, 28 insertions(+), 33 deletions(-)
diff --git a/src/truetype/ttgxvar.c b/src/truetype/ttgxvar.c
index 205310d13..8f2a9b807 100644
--- a/src/truetype/ttgxvar.c
+++ b/src/truetype/ttgxvar.c
@@ -1913,60 +1913,55 @@
for ( i = 0; i < blend->num_axis; i++ )
{
- FT_TRACE6(( " axis %d coordinate %.5f:\n",
- i, (double)blend->normalizedcoords[i] / 65536 ));
+ FT_Fixed ncv = blend->normalizedcoords[i];
+
+
+ FT_TRACE6(( " axis %d coordinate %.5f:\n", i, (double)ncv / 65536 ));
/* It's not clear why (for intermediate tuples) we don't need */
/* to check against start/end -- the documentation says we don't. */
/* Similarly, it's unclear why we don't need to scale along the */
/* axis. */
- if ( tuple_coords[i] == 0 )
- {
- FT_TRACE6(( " tuple coordinate is zero, ignore\n" ));
- continue;
- }
-
- if ( blend->normalizedcoords[i] == 0 )
- {
- FT_TRACE6(( " axis coordinate is zero, stop\n" ));
- apply = 0;
- break;
- }
-
- if ( blend->normalizedcoords[i] == tuple_coords[i] )
- {
+ if ( tuple_coords[i] == ncv )
+ {
FT_TRACE6(( " tuple coordinate %.5f fits perfectly\n",
(double)tuple_coords[i] / 65536 ));
/* `apply' does not change */
continue;
}
+ if ( tuple_coords[i] == 0 )
+ {
+ FT_TRACE6(( " tuple coordinate is zero, ignore\n" ));
+ continue;
+ }
+
if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) )
- {
+ {
/* not an intermediate tuple */
-
- if ( blend->normalizedcoords[i] < FT_MIN( 0, tuple_coords[i] ) ||
- blend->normalizedcoords[i] > FT_MAX( 0, tuple_coords[i] ) )
+
+ if ( ( tuple_coords[i] > ncv && ncv > 0 ) ||
+ ( tuple_coords[i] < ncv && ncv < 0 ) )
+ {
+ FT_TRACE6(( " tuple coordinate %.5f fits\n",
+ (double)tuple_coords[i] / 65536 ));
+ apply = FT_MulDiv( apply, ncv, tuple_coords[i] );
+ }
+ else
{
FT_TRACE6(( " tuple coordinate %.5f is exceeded, stop\n",
(double)tuple_coords[i] / 65536 ));
apply = 0;
break;
}
-
- FT_TRACE6(( " tuple coordinate %.5f fits\n",
- (double)tuple_coords[i] / 65536 ));
- apply = FT_MulDiv( apply,
- blend->normalizedcoords[i],
- tuple_coords[i] );
}
else
{
/* intermediate tuple */
- if ( blend->normalizedcoords[i] <= im_start_coords[i] ||
- blend->normalizedcoords[i] >= im_end_coords[i] )
+ if ( ncv <= im_start_coords[i] ||
+ ncv >= im_end_coords[i] )
{
FT_TRACE6(( " intermediate tuple range ]%.5f;%.5f[ is exceeded,"
" stop\n",
@@ -1979,13 +1974,13 @@
FT_TRACE6(( " intermediate tuple range ]%.5f;%.5f[ fits\n",
(double)im_start_coords[i] / 65536,
(double)im_end_coords[i] / 65536 ));
- if ( blend->normalizedcoords[i] < tuple_coords[i] )
+ if ( ncv < tuple_coords[i] )
apply = FT_MulDiv( apply,
- blend->normalizedcoords[i] - im_start_coords[i],
+ ncv - im_start_coords[i],
tuple_coords[i] - im_start_coords[i] );
- else
+ else /* ncv > tuple_coords[i] */
apply = FT_MulDiv( apply,
- im_end_coords[i] - blend->normalizedcoords[i],
+ im_end_coords[i] - ncv,
im_end_coords[i] - tuple_coords[i] );
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master b6dbbd963: * src/truetype/ttgxvar.c (ft_var_apply_tuple): Reduce checks.,
Werner Lemberg <=