freetype-commit
[Top][All Lists]
Advanced

[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 );
   }
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]