[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 03047ba3: * src/ftgrid.c (event_grid_zoom): Lim
From: |
Werner Lemberg |
Subject: |
[freetype2-demos] master 03047ba3: * src/ftgrid.c (event_grid_zoom): Limit relative zooming. |
Date: |
Sat, 14 Dec 2024 21:22:59 -0500 (EST) |
branch: master
commit 03047ba38d3144b869de9043eb9709a28748f803
Author: Alexei Podtelezhnikov (Алексей Подтележников) <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov (Алексей Подтележников) <apodtele@gmail.com>
* src/ftgrid.c (event_grid_zoom): Limit relative zooming.
---
src/ftgrid.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/ftgrid.c b/src/ftgrid.c
index 9481b256..93e3d63d 100644
--- a/src/ftgrid.c
+++ b/src/ftgrid.c
@@ -1074,16 +1074,21 @@
{
int frc, exp;
- /* The floating scale is reversibly adjusted after decomposing it into */
- /* fraction and exponent. Direct bit manipulation is less portable. */
+
+ if ( ( step > 0 && status.scale > 8.0f * status.scale_0 ) ||
+ ( step < 0 && status.scale * 8.0f < status.scale_0 ) )
+ return;
+
+ /* The floating scale is reversibly adjusted after decomposing it */
+ /* into fraction and exponent, meanwhile truncating the fraction. */
+ /* Direct bit manipulation in floats is less portable. */
frc = (int)( 8.0f * frexpf( status.scale, &exp ) );
frc += step;
exp += ( frc >> 2 ) - 1;
frc = ( frc & 3 ) | 4;
- if ( -8 < exp && exp <= 8 )
- status.scale = ldexpf( 0.125f * frc, exp );
+ status.scale = ldexpf( 0.125f * frc, exp );
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 03047ba3: * src/ftgrid.c (event_grid_zoom): Limit relative zooming.,
Werner Lemberg <=