shithub: freetype+ttf2subf

Download patch

ref: 7a0241049aad6b471effe410c436e9256443883f
parent: d726e41c33e0ef052b313f4e48c5eae2823dd602
author: Werner Lemberg <[email protected]>
date: Wed Jun 18 02:59:57 EDT 2003

* include/freetype/freetype.h (FT_Open_Flags): Replaced with
#defines for the constants.
(FT_Open_Args): Change type of `flags' to FT_UInt.
(FT_GlyphSlot): Move `flags' to FT_Slot_Internal.

* include/freetype/ftimage.h (FT_Outline_Flags, FT_Raster_Flag):
Replaced with #defines for the constants.

* include/freetype/internal/ftobjs.h (FT_Slot_Internal): New
field `flags' (from FT_GlyphSlot).
Updated all affected source files.
(FT_GLYPH_OWN_BITMAP): New macro (from ftgloadr.h).

* include/freetype/internal/ftgloadr.h (FT_GLYPH_OWN_BITMAP): Moved
to ftobjs.h.

* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Use dummy
FT_GlyphSlot_Internal object.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2003-06-16  Werner Lemberg  <[email protected]>
+
+	* include/freetype/freetype.h (FT_Open_Flags): Replaced with
+	#defines for the constants.
+	(FT_Open_Args): Change type of `flags' to FT_UInt.
+	(FT_GlyphSlot): Move `flags' to FT_Slot_Internal.
+
+	* include/freetype/ftimage.h (FT_Outline_Flags, FT_Raster_Flag):
+	Replaced with #defines for the constants.
+
+	* include/freetype/internal/ftobjs.h (FT_Slot_Internal): New
+	field `flags' (from FT_GlyphSlot).
+	Updated all affected source files.
+	(FT_GLYPH_OWN_BITMAP): New macro (from ftgloadr.h).
+
+	* include/freetype/internal/ftgloadr.h (FT_GLYPH_OWN_BITMAP): Moved
+	to ftobjs.h.
+
+	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Use dummy
+	FT_GlyphSlot_Internal object.
+
 2003-06-15  Werner Lemberg  <[email protected]>
 
 	* builds/compiler/gcc.mk, builds/compiler/gcc-dev.mk (CFLAGS):
@@ -2339,7 +2360,7 @@
 	interface is hidden in an internal part of the face record, and all
 	the definitions are in ftincrem.h.
 
-	* include/freetype/freeetype.h [FT_CONFIG_OPTION_INCREMENTAL]:
+	* include/freetype/freetype.h [FT_CONFIG_OPTION_INCREMENTAL]:
 	Removed.
 	* include/freetype/internal/ftobjs.h [FT_CONFIG_OPTION_INCREMENTAL]:
 	Include FT_INCREMENTAL_H.
--- a/include/freetype/freetype.h
+++ b/include/freetype/freetype.h
@@ -113,7 +113,6 @@
   /*    FT_New_Memory_Face                                                 */
   /*    FT_Open_Face                                                       */
   /*    FT_Open_Args                                                       */
-  /*    FT_Open_Flags                                                      */
   /*    FT_Parameter                                                       */
   /*    FT_Attach_File                                                     */
   /*    FT_Attach_Stream                                                   */
@@ -126,6 +125,12 @@
   /*    FT_Get_Name_Index                                                  */
   /*    FT_Load_Char                                                       */
   /*                                                                       */
+  /*    FT_OPEN_MEMORY                                                     */
+  /*    FT_OPEN_STREAM                                                     */
+  /*    FT_OPEN_PATHNAME                                                   */
+  /*    FT_OPEN_DRIVER                                                     */
+  /*    FT_OPEN_PARAMS                                                     */
+  /*                                                                       */
   /*    FT_LOAD_DEFAULT                                                    */
   /*    FT_LOAD_RENDER                                                     */
   /*    FT_LOAD_MONOCHROME                                                 */
@@ -1360,7 +1365,6 @@
     FT_Library        library;
     FT_Face           face;
     FT_GlyphSlot      next;
-    FT_UInt           flags;
     FT_Generic        generic;
 
     FT_Glyph_Metrics  metrics;
@@ -1475,13 +1479,13 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Enum>                                                                */
-  /*    FT_Open_Flags                                                      */
+  /*    FT_OPEN_XXX                                                        */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    An enumeration used to list the bit flags used within the          */
-  /*    `flags' field of the @FT_Open_Args structure.                      */
+  /*    A list of bit-field constants used within the `flags' field of the */
+  /*    @FT_Open_Args structure.                                           */
   /*                                                                       */
-  /* <Fields>                                                              */
+  /* <Values>                                                              */
   /*    FT_OPEN_MEMORY      :: This is a memory-based stream.              */
   /*                                                                       */
   /*    FT_OPEN_STREAM      :: Copy the stream from the `stream' field.    */
@@ -1507,16 +1511,12 @@
   /*    The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME'     */
   /*    flags are mutually exclusive.                                      */
   /*                                                                       */
-  typedef enum
-  {
-    FT_OPEN_MEMORY   = 1,
-    FT_OPEN_STREAM   = 2,
-    FT_OPEN_PATHNAME = 4,
-    FT_OPEN_DRIVER   = 8,
-    FT_OPEN_PARAMS   = 16
+#define FT_OPEN_MEMORY    0x1
+#define FT_OPEN_STREAM    0x2
+#define FT_OPEN_PATHNAME  0x4
+#define FT_OPEN_DRIVER    0x8
+#define FT_OPEN_PARAMS    0x10
 
-  } FT_Open_Flags;
-
 #define ft_open_memory    FT_OPEN_MEMORY     /* deprecated */
 #define ft_open_stream    FT_OPEN_STREAM     /* deprecated */
 #define ft_open_pathname  FT_OPEN_PATHNAME   /* deprecated */
@@ -1603,14 +1603,14 @@
   /*                                                                       */
   typedef struct  FT_Open_Args_
   {
-    FT_Open_Flags              flags;
-    const FT_Byte*             memory_base;
-    FT_Long                    memory_size;
-    FT_String*                 pathname;
-    FT_Stream                  stream;
-    FT_Module                  driver;
-    FT_Int                     num_params;
-    FT_Parameter*              params;
+    FT_UInt         flags;
+    const FT_Byte*  memory_base;
+    FT_Long         memory_size;
+    FT_String*      pathname;
+    FT_Stream       stream;
+    FT_Module       driver;
+    FT_Int          num_params;
+    FT_Parameter*   params;
 
   } FT_Open_Args;
 
--- a/include/freetype/ftbdf.h
+++ b/include/freetype/ftbdf.h
@@ -64,7 +64,7 @@
   *    BDF_PROPERTY_TYPE_CARDINAL ::
   *      Property is a 32-bit unsigned integer.
   */
-  typedef enum
+  typedef enum  BDF_PropertyType_
   {
     BDF_PROPERTY_TYPE_NONE     = 0,
     BDF_PROPERTY_TYPE_ATOM     = 1,
--- a/include/freetype/ftimage.h
+++ b/include/freetype/ftimage.h
@@ -5,7 +5,7 @@
 /*    FreeType glyph image formats and default raster interface            */
 /*    (specification).                                                     */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002 by                                           */
+/*  Copyright 1996-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -357,10 +357,10 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Enum>                                                                */
-  /*   FT_Outline_Flags                                                    */
+  /*   FT_OUTLINE_XXX                                                      */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    A simple type used to enumerates the flags in an outline's         */
+  /*    A list of bit-field constants use for the flags in an outline's    */
   /*    `outline_flags' field.                                             */
   /*                                                                       */
   /* <Values>                                                              */
@@ -414,17 +414,14 @@
   /*                                 completely ignored by a given         */
   /*                                 scan-converter.                       */
   /*                                                                       */
-  typedef enum  FT_Outline_Flags_
-  {
-    FT_OUTLINE_NONE            = 0,
-    FT_OUTLINE_OWNER           = 1,
-    FT_OUTLINE_EVEN_ODD_FILL   = 2,
-    FT_OUTLINE_REVERSE_FILL    = 4,
-    FT_OUTLINE_IGNORE_DROPOUTS = 8,
-    FT_OUTLINE_HIGH_PRECISION  = 256,
-    FT_OUTLINE_SINGLE_PASS     = 512
+#define FT_OUTLINE_NONE             0x0
+#define FT_OUTLINE_OWNER            0x1
+#define FT_OUTLINE_EVEN_ODD_FILL    0x2
+#define FT_OUTLINE_REVERSE_FILL     0x4
+#define FT_OUTLINE_IGNORE_DROPOUTS  0x8
 
-  } FT_Outline_Flags;
+#define FT_OUTLINE_HIGH_PRECISION   0x100
+#define FT_OUTLINE_SINGLE_PASS      0x200
 
 
  /*************************************************************************
@@ -937,11 +934,11 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Enum>                                                                */
-  /*    FT_Raster_Flag                                                     */
+  /*    FT_RASTER_FLAG_XXX                                                 */
   /*                                                                       */
   /* <Description>                                                         */
-  /*    An enumeration to list the bit flags as used in the `flags' field  */
-  /*    of a FT_Raster_Params structure.                                   */
+  /*    A list of bit flag constants as used in the `flags' field of a     */
+  /*    @FT_Raster_Params structure.                                       */
   /*                                                                       */
   /* <Values>                                                              */
   /*    FT_RASTER_FLAG_DEFAULT :: This value is 0.                         */
@@ -949,7 +946,7 @@
   /*    FT_RASTER_FLAG_AA      :: This flag is set to indicate that an     */
   /*                              anti-aliased glyph image should be       */
   /*                              generated.  Otherwise, it will be        */
-  /*                              monochrome (1-bit)                       */
+  /*                              monochrome (1-bit).                      */
   /*                                                                       */
   /*    FT_RASTER_FLAG_DIRECT  :: This flag is set to indicate direct      */
   /*                              rendering.  In this mode, client         */
@@ -974,15 +971,12 @@
   /*                              in direct rendering mode where all spans */
   /*                              are generated if no clipping box is set. */
   /*                                                                       */
-  typedef  enum
-  {
-    FT_RASTER_FLAG_DEFAULT = 0,
-    FT_RASTER_FLAG_AA      = 1,
-    FT_RASTER_FLAG_DIRECT  = 2,
-    FT_RASTER_FLAG_CLIP    = 4
+#define FT_RASTER_FLAG_DEFAULT  0x0
+#define FT_RASTER_FLAG_AA       0x1
+#define FT_RASTER_FLAG_DIRECT   0x2
+#define FT_RASTER_FLAG_CLIP     0x4
 
-  } FT_Raster_Flag;
-
+  /* deprecated */
 #define ft_raster_flag_default  FT_RASTER_FLAG_DEFAULT
 #define ft_raster_flag_aa       FT_RASTER_FLAG_AA
 #define ft_raster_flag_direct   FT_RASTER_FLAG_DIRECT
--- a/include/freetype/ftincrem.h
+++ b/include/freetype/ftincrem.h
@@ -246,8 +246,7 @@
   *       parameter.data = &inc_int;
   *
   *       // set up FT_Open_Args structure
-  *       open_args.flags      = (FT_Open_Flags)( FT_OPEN_PATHNAME |
-  *                                               FT_OPEN_PARAMS   );
+  *       open_args.flags      = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
   *       open_args.pathname   = my_font_pathname;
   *       open_args.num_params = 1;
   *       open_args.params     = &parameter; // we use one optional argument
--- a/include/freetype/internal/ftgloadr.h
+++ b/include/freetype/internal/ftgloadr.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    The FreeType glyph loader (specification).                           */
 /*                                                                         */
-/*  Copyright 2002 by                                                      */
+/*  Copyright 2002, 2003 by                                                */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -50,12 +50,6 @@
 #define FT_SUBGLYPH_FLAG_XY_SCALE             0x40
 #define FT_SUBGLYPH_FLAG_2X2                  0x80
 #define FT_SUBGLYPH_FLAG_USE_MY_METRICS      0x200
-
-
-  enum
-  {
-    FT_GLYPH_OWN_BITMAP = 1
-  };
 
 
   typedef struct  FT_SubGlyphRec_
--- a/include/freetype/internal/ftobjs.h
+++ b/include/freetype/internal/ftobjs.h
@@ -338,6 +338,11 @@
   /*    loader            :: The glyph loader object used to load outlines */
   /*                         into the glyph slot.                          */
   /*                                                                       */
+  /*    flags             :: Possible values are zero or                   */
+  /*                         FT_GLYPH_OWN_BITMAP.  The latter indicates    */
+  /*                         that the FT_GlyphSlot structure owns the      */
+  /*                         bitmap buffer.                                */
+  /*                                                                       */
   /*    glyph_transformed :: Boolean.  Set to TRUE when the loaded glyph   */
   /*                         must be transformed through a specific        */
   /*                         font transformation.  This is _not_ the same  */
@@ -352,9 +357,13 @@
   /*                                                                       */
   /*    glyph_hints       :: Format-specific glyph hints management.       */
   /*                                                                       */
+
+#define FT_GLYPH_OWN_BITMAP  0x1
+
   typedef struct  FT_Slot_InternalRec_
   {
     FT_GlyphLoader  loader;
+    FT_UInt         flags;
     FT_Bool         glyph_transformed;
     FT_Matrix       glyph_matrix;
     FT_Vector       glyph_delta;
--- a/src/base/ftglyph.c
+++ b/src/base/ftglyph.c
@@ -158,8 +158,8 @@
     glyph->left   = slot->bitmap_left;
     glyph->top    = slot->bitmap_top;
 
-    if ( slot->flags & FT_GLYPH_OWN_BITMAP )
-      slot->flags &= ~FT_GLYPH_OWN_BITMAP;
+    if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
+      slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     else
     {
       /* copy the bitmap into a new buffer */
@@ -573,12 +573,13 @@
                       FT_Vector*      origin,
                       FT_Bool         destroy )
   {
-    FT_GlyphSlotRec  dummy;
-    FT_Error         error = FT_Err_Ok;
-    FT_Glyph         glyph;
-    FT_BitmapGlyph   bitmap = NULL;
+    FT_GlyphSlotRec           dummy;
+    FT_GlyphSlot_InternalRec  dummy_internal;
+    FT_Error                  error = FT_Err_Ok;
+    FT_Glyph                  glyph;
+    FT_BitmapGlyph            bitmap = NULL;
 
-    const FT_Glyph_Class*  clazz;
+    const FT_Glyph_Class*     clazz;
 
 
     /* check argument */
@@ -602,8 +603,10 @@
       goto Bad;
 
     FT_MEM_ZERO( &dummy, sizeof ( dummy ) );
-    dummy.library = glyph->library;
-    dummy.format  = clazz->glyph_format;
+    FT_MEM_ZERO( &dummy_internal, sizeof ( dummy_internal ) );
+    dummy.internal = &dummy_internal;
+    dummy.library  = glyph->library;
+    dummy.format   = clazz->glyph_format;
 
     /* create result bitmap glyph */
     error = ft_new_glyph( glyph->library, &ft_bitmap_glyph_class,
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -202,13 +202,13 @@
   FT_BASE_DEF( void )
   ft_glyphslot_free_bitmap( FT_GlyphSlot  slot )
   {
-    if ( slot->flags & FT_GLYPH_OWN_BITMAP )
+    if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
     {
       FT_Memory  memory = FT_FACE_MEMORY( slot->face );
 
 
       FT_FREE( slot->bitmap.buffer );
-      slot->flags &= ~FT_GLYPH_OWN_BITMAP;
+      slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     }
     else
     {
@@ -227,7 +227,7 @@
 
     slot->bitmap.buffer = buffer;
 
-    FT_ASSERT( (slot->flags & FT_GLYPH_OWN_BITMAP) == 0 );
+    FT_ASSERT( (slot->internal->flags & FT_GLYPH_OWN_BITMAP) == 0 );
   }
 
 
@@ -238,10 +238,10 @@
     FT_Memory  memory = FT_FACE_MEMORY( slot->face );
 
 
-    if ( slot->flags & FT_GLYPH_OWN_BITMAP )
+    if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
       FT_FREE( slot->bitmap.buffer );
     else
-      slot->flags |= FT_GLYPH_OWN_BITMAP;
+      slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
 
     return FT_MEM_ALLOC( slot->bitmap.buffer, size );
   }
@@ -1074,7 +1074,7 @@
     args.stream = stream;
     if ( driver_name )
     {
-      args.flags = (FT_Open_Flags)( args.flags | FT_OPEN_DRIVER );
+      args.flags = args.flags | FT_OPEN_DRIVER;
       args.driver = FT_Get_Module( library, driver_name );
     }
 
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -192,10 +192,10 @@
 #if 0 /* this doesn't work well with embedded bitmaps */
 
           /* grab the bitmap when possible - this is a hack! */
-          if ( slot->flags & FT_GLYPH_OWN_BITMAP )
+          if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
           {
-            slot->flags &= ~FT_GLYPH_OWN_BITMAP;
-            sbit->buffer = bitmap->buffer;
+            slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
+            sbit->buffer           = bitmap->buffer;
           }
           else
 #endif
--- a/src/raster/ftrend1.c
+++ b/src/raster/ftrend1.c
@@ -151,10 +151,10 @@
     memory = render->root.memory;
 
     /* release old bitmap buffer */
-    if ( slot->flags & FT_GLYPH_OWN_BITMAP )
+    if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
     {
       FT_FREE( bitmap->buffer );
-      slot->flags &= ~FT_GLYPH_OWN_BITMAP;
+      slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     }
 
     /* allocate new one, depends on pixel format */
@@ -178,7 +178,7 @@
     if ( FT_ALLOC( bitmap->buffer, (FT_ULong)pitch * height ) )
       goto Exit;
 
-    slot->flags |= FT_GLYPH_OWN_BITMAP;
+    slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
 
     /* translate outline to render it into the bitmap */
     FT_Outline_Translate( outline, -cbox.xMin, -cbox.yMin );
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -143,10 +143,10 @@
     memory = render->root.memory;
 
     /* release old bitmap buffer */
-    if ( slot->flags & FT_GLYPH_OWN_BITMAP )
+    if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
     {
       FT_FREE( bitmap->buffer );
-      slot->flags &= ~FT_GLYPH_OWN_BITMAP;
+      slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     }
 
     /* allocate new one, depends on pixel format */
@@ -169,7 +169,7 @@
     if ( FT_ALLOC( bitmap->buffer, (FT_ULong)pitch * height ) )
       goto Exit;
 
-    slot->flags |= FT_GLYPH_OWN_BITMAP;
+    slot->internal->flags |= FT_GLYPH_OWN_BITMAP;
 
     /* translate outline to render it into the bitmap */
     FT_Outline_Translate( outline, -cbox.xMin, -cbox.yMin );
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -645,10 +645,10 @@
       }
     }
 
-    slot->flags       = FT_GLYPH_OWN_BITMAP;
-    slot->bitmap_left = 0;
-    slot->bitmap_top  = font->header.ascent;
-    slot->format      = FT_GLYPH_FORMAT_BITMAP;
+    slot->internal->flags = FT_GLYPH_OWN_BITMAP;
+    slot->bitmap_left     = 0;
+    slot->bitmap_top      = font->header.ascent;
+    slot->format          = FT_GLYPH_FORMAT_BITMAP;
 
     /* now set up metrics */
     slot->metrics.horiAdvance  = bitmap->width << 6;