freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master 96d2692 2/3: Provide more macros for flooring, ceilin


From: Werner LEMBERG
Subject: [freetype2] master 96d2692 2/3: Provide more macros for flooring, ceiling, and rounding.
Date: Fri, 9 Jun 2017 14:43:14 -0400 (EDT)

branch: master
commit 96d26926d1f36ce3feb1d16dfa6f0bfdf6297ec6
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    Provide more macros for flooring, ceiling, and rounding.
    
    These versions don't produce run-time errors due to integer
    overflow.
    
    * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
    (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
    FT_PIX_CEIL_LONG): New macros.
    (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
    FT_PIX_CEIL_INT32): New macros.
---
 ChangeLog                          | 13 +++++++++++++
 include/freetype/internal/ftobjs.h | 21 +++++++++++++++++++--
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cd3786d..494d11f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2017-06-09  Werner Lemberg  <address@hidden>
 
+       Provide more macros for flooring, ceiling, and rounding.
+
+       These versions don't produce run-time errors due to integer
+       overflow.
+
+       * include/freetype/internal/ftobjs.h: Include FT_INTERNAL_CALC_H.
+       (FT_PAD_ROUND_LONG, FT_PAD_CEIL_LONG, FT_PIX_ROUND_LONG,
+       FT_PIX_CEIL_LONG): New macros.
+       (FT_PAD_ROUND_INT32, FT_PAD_CEIL_INT32, FT_PIX_ROUND_INT32,
+       FT_PIX_CEIL_INT32): New macros.
+
+2017-06-09  Werner Lemberg  <address@hidden>
+
        Remove unused macros.
 
        * include/freetype/internal/ftcalc.h (ADD_INT, SUB_INT, MUL_INT,
diff --git a/include/freetype/internal/ftobjs.h 
b/include/freetype/internal/ftobjs.h
index 73961b9..4231be2 100644
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -36,6 +36,7 @@
 #include FT_INTERNAL_AUTOHINT_H
 #include FT_INTERNAL_SERVICE_H
 #include FT_INTERNAL_PIC_H
+#include FT_INTERNAL_CALC_H
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
 #include FT_INCREMENTAL_H
@@ -85,13 +86,29 @@ FT_BEGIN_HEADER
 
   /* we use FT_TYPEOF to suppress signedness compilation warnings */
 #define FT_PAD_FLOOR( x, n )  ( (x) & ~FT_TYPEOF( x )( (n)-1 ) )
-#define FT_PAD_ROUND( x, n )  FT_PAD_FLOOR( (x) + ((n)/2), n )
-#define FT_PAD_CEIL( x, n )   FT_PAD_FLOOR( (x) + ((n)-1), n )
+#define FT_PAD_ROUND( x, n )  FT_PAD_FLOOR( (x) + (n)/2, n )
+#define FT_PAD_CEIL( x, n )   FT_PAD_FLOOR( (x) + (n)-1, n )
 
 #define FT_PIX_FLOOR( x )     ( (x) & ~FT_TYPEOF( x )63 )
 #define FT_PIX_ROUND( x )     FT_PIX_FLOOR( (x) + 32 )
 #define FT_PIX_CEIL( x )      FT_PIX_FLOOR( (x) + 63 )
 
+  /* specialized versions (for signed values)                   */
+  /* that don't produce run-time errors due to integer overflow */
+#define FT_PAD_ROUND_LONG( x, n )  FT_PAD_FLOOR( ADD_LONG( (x), (n) / 2 ), \
+                                                 n )
+#define FT_PAD_CEIL_LONG( x, n )   FT_PAD_FLOOR( ADD_LONG( (x), (n) - 1 ), \
+                                                 n )
+#define FT_PIX_ROUND_LONG( x )     FT_PIX_FLOOR( ADD_LONG( (x), 32 ) )
+#define FT_PIX_CEIL_LONG( x )      FT_PIX_FLOOR( ADD_LONG( (x), 63 ) )
+
+#define FT_PAD_ROUND_INT32( x, n )  FT_PAD_FLOOR( ADD_INT32( (x), (n) / 2 ), \
+                                                  n )
+#define FT_PAD_CEIL_INT32( x, n )   FT_PAD_FLOOR( ADD_INT32( (x), (n) - 1 ), \
+                                                  n )
+#define FT_PIX_ROUND_INT32( x )     FT_PIX_FLOOR( ADD_INT32( (x), 32 ) )
+#define FT_PIX_CEIL_INT32( x )      FT_PIX_FLOOR( ADD_INT32( (x), 63 ) )
+
 
   /*
    *  character classification functions -- since these are used to parse



reply via email to

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