misc/libfreetype/src/raster/ftmisc.h
branchwebgl
changeset 9521 8054d9d775fd
parent 9282 92af50454cf2
parent 9519 b8b5c82eb61b
child 9950 2759212a27de
equal deleted inserted replaced
9282:92af50454cf2 9521:8054d9d775fd
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  ftmisc.h                                                               */
       
     4 /*                                                                         */
       
     5 /*    Miscellaneous macros for stand-alone rasterizer (specification       */
       
     6 /*    only).                                                               */
       
     7 /*                                                                         */
       
     8 /*  Copyright 2005, 2009, 2010 by                                          */
       
     9 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
       
    10 /*                                                                         */
       
    11 /*  This file is part of the FreeType project, and may only be used        */
       
    12 /*  modified and distributed under the terms of the FreeType project       */
       
    13 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
       
    14 /*  this file you indicate that you have read the license and              */
       
    15 /*  understand and accept it fully.                                        */
       
    16 /*                                                                         */
       
    17 /***************************************************************************/
       
    18 
       
    19 
       
    20   /***************************************************/
       
    21   /*                                                 */
       
    22   /* This file is *not* portable!  You have to adapt */
       
    23   /* its definitions to your platform.               */
       
    24   /*                                                 */
       
    25   /***************************************************/
       
    26 
       
    27 #ifndef __FTMISC_H__
       
    28 #define __FTMISC_H__
       
    29 
       
    30 
       
    31   /* memset */
       
    32 #include FT_CONFIG_STANDARD_LIBRARY_H
       
    33 
       
    34 #define FT_BEGIN_HEADER
       
    35 #define FT_END_HEADER
       
    36 
       
    37 #define FT_LOCAL_DEF( x )   static x
       
    38 
       
    39 
       
    40   /* from include/freetype2/fttypes.h */
       
    41 
       
    42   typedef unsigned char  FT_Byte;
       
    43   typedef signed int     FT_Int;
       
    44   typedef unsigned int   FT_UInt;
       
    45   typedef signed long    FT_Long;
       
    46   typedef unsigned long  FT_ULong;
       
    47   typedef signed long    FT_F26Dot6;
       
    48   typedef int            FT_Error;
       
    49 
       
    50 #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
       
    51           ( ( (FT_ULong)_x1 << 24 ) |     \
       
    52             ( (FT_ULong)_x2 << 16 ) |     \
       
    53             ( (FT_ULong)_x3 <<  8 ) |     \
       
    54               (FT_ULong)_x4         )
       
    55 
       
    56 
       
    57   /* from include/freetype2/ftsystem.h */
       
    58 
       
    59   typedef struct FT_MemoryRec_*  FT_Memory;
       
    60 
       
    61   typedef void* (*FT_Alloc_Func)( FT_Memory  memory,
       
    62                                   long       size );
       
    63 
       
    64   typedef void (*FT_Free_Func)( FT_Memory  memory,
       
    65                                 void*      block );
       
    66 
       
    67   typedef void* (*FT_Realloc_Func)( FT_Memory  memory,
       
    68                                     long       cur_size,
       
    69                                     long       new_size,
       
    70                                     void*      block );
       
    71 
       
    72   typedef struct FT_MemoryRec_
       
    73   {
       
    74     void*            user;
       
    75 
       
    76     FT_Alloc_Func    alloc;
       
    77     FT_Free_Func     free;
       
    78     FT_Realloc_Func  realloc;
       
    79 
       
    80   } FT_MemoryRec;
       
    81 
       
    82 
       
    83   /* from src/ftcalc.c */
       
    84 
       
    85 #if ( defined _WIN32 || defined _WIN64 )
       
    86 
       
    87   typedef __int64  FT_Int64;
       
    88 
       
    89 #else
       
    90 
       
    91 #include "inttypes.h"
       
    92 
       
    93   typedef int64_t  FT_Int64;
       
    94 
       
    95 #endif
       
    96 
       
    97 
       
    98   static FT_Long
       
    99   FT_MulDiv( FT_Long  a,
       
   100              FT_Long  b,
       
   101              FT_Long  c )
       
   102   {
       
   103     FT_Int   s;
       
   104     FT_Long  d;
       
   105 
       
   106 
       
   107     s = 1;
       
   108     if ( a < 0 ) { a = -a; s = -1; }
       
   109     if ( b < 0 ) { b = -b; s = -s; }
       
   110     if ( c < 0 ) { c = -c; s = -s; }
       
   111 
       
   112     d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c
       
   113                          : 0x7FFFFFFFL );
       
   114 
       
   115     return ( s > 0 ) ? d : -d;
       
   116   }
       
   117 
       
   118 #endif /* __FTMISC_H__ */
       
   119 
       
   120 
       
   121 /* END */