Commit 750ddcd576101f33940688ebb2defc4836ea5f39

David Turner 2001-05-08T12:58:07

* src/pcfdriver.c: fixed incorrect bitmap width computation * docs/docmaker.py: updated the DocMaker script in order to add command line options (--output,--prefix,--title), fix the erroneous line numbers reported during errors and warnings, and other formatting issues.. * src/base/ftcalc.c: various tiny fixes related to rounding in 64-bits routines and pseudo"optimisations" :-)

diff --git a/ChangeLog b/ChangeLog
index 5093572..b1b7b4c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2001-05-08  Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr>
+
+    * src/pcfdriver.c: fixed incorrect bitmap width computation
+
+2001-05-08  David Turner  <david@freetype.org>
+
+    * docs/docmaker.py: updated the DocMaker script in order to add
+    command line options (--output,--prefix,--title), fix the erroneous
+    line numbers reported during errors and warnings, and other formatting
+    issues..
+
+    * src/base/ftcalc.c: various tiny fixes related to rounding in 64-bits
+    routines and pseudo"optimisations" :-)
+
 2001-04-27  David Turner  <david@freetype.org>
 
 	* src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient     
diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h
index 4736a36..f5f7337 100644
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -154,7 +154,7 @@ FT_BEGIN_HEADER
   /*         file "ftconfig.h" either statically, or through Autoconf      */
   /*         on platforms that support it.                                 */
   /*                                                                       */
-#undef  FT_CONFIG_OPTION_FORCE_INT64
+#define  FT_CONFIG_OPTION_FORCE_INT64
 
 
   /*************************************************************************/
diff --git a/src/base/ftcalc.c b/src/base/ftcalc.c
index 2399a11..eb02719 100644
--- a/src/base/ftcalc.c
+++ b/src/base/ftcalc.c
@@ -135,16 +135,18 @@
                                        FT_Long  b,
                                        FT_Long  c )
   {
-    FT_Int s;
-
+    FT_Int   s;
+    FT_Long  d;
 
     s = 1;
-    if ( a < 0 ) { a = -a; s = -s; }
+    if ( a < 0 ) { a = -a; s = -1; }
     if ( b < 0 ) { b = -b; s = -s; }
     if ( c < 0 ) { c = -c; s = -s; }
 
-    return s * ( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c
-                       : 0x7FFFFFFFL );
+    d = ( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c
+                : 0x7FFFFFFFL );
+
+	return ( s > 0 ) ? d : -d;
   }
 
 
@@ -153,14 +155,14 @@
   FT_EXPORT_DEF( FT_Long )  FT_MulFix( FT_Long  a,
                                        FT_Long  b )
   {
-    FT_Int  s;
+    FT_Int   s = 1;
+	FT_Long  c;
 
-
-    s = 1;
-    if ( a < 0 ) { a = -a; s = -s; }
+    if ( a < 0 ) { a = -a; s = -1; }
     if ( b < 0 ) { b = -b; s = -s; }
 
-    return s * (FT_Long)( ( (FT_Int64)a * b + 0x8000 ) >> 16 );
+    c = (FT_Long)( ( (FT_Int64)a * b + 0x8000 ) >> 16 );
+	return ( s > 0 ) ? c : -c ;
   }
 
 
@@ -181,9 +183,9 @@
       q = 0x7FFFFFFFL;
     else
       /* compute result directly */
-      q = ( (FT_Int64)a << 16 ) / b;
+      q = ( ((FT_Int64)a + (b >> 1)) << 16 ) / b;
 
-    return (FT_Int32)( s < 0 ? -q : q );
+    return (FT_Long)( s < 0 ? -q : q );
   }
 
 
diff --git a/src/pcf/pcfdriver.c b/src/pcf/pcfdriver.c
index 18d4fff..bdcb7a7 100644
--- a/src/pcf/pcfdriver.c
+++ b/src/pcf/pcfdriver.c
@@ -158,7 +158,7 @@ THE SOFTWARE.
     metric = face->metrics + glyph_index;
   
     bitmap->rows       = metric->ascent + metric->descent;
-    bitmap->width      = metric->characterWidth;
+    bitmap->width      = metric->rightSideBearing - metric->leftSideBearing;
     bitmap->num_grays  = 1;
     bitmap->pixel_mode = ft_pixel_mode_mono;