• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftmisc.h                                                               */
4 /*                                                                         */
5 /*    Miscellaneous macros for stand-alone rasterizer (specification       */
6 /*    only).                                                               */
7 /*                                                                         */
8 /*  Copyright 2005, 2009 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   /* memset */
31 #include FT_CONFIG_STANDARD_LIBRARY_H
32 
33 #define FT_BEGIN_HEADER
34 #define FT_END_HEADER
35 
36 #define FT_LOCAL_DEF( x )   static x
37 
38   /* from include/freetype2/fttypes.h */
39 
40   typedef unsigned char  FT_Byte;
41   typedef signed int     FT_Int;
42   typedef unsigned int   FT_UInt;
43   typedef signed long    FT_Long;
44   typedef unsigned long  FT_ULong;
45   typedef signed long    FT_F26Dot6;
46   typedef int            FT_Error;
47 
48 #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
49           ( ( (FT_ULong)_x1 << 24 ) |     \
50             ( (FT_ULong)_x2 << 16 ) |     \
51             ( (FT_ULong)_x3 <<  8 ) |     \
52               (FT_ULong)_x4         )
53 
54 
55   /* from src/ftcalc.c */
56 
57 #include <inttypes.h>
58 
59   typedef int64_t  FT_Int64;
60 
61   static FT_Long
FT_MulDiv(FT_Long a,FT_Long b,FT_Long c)62   FT_MulDiv( FT_Long  a,
63              FT_Long  b,
64              FT_Long  c )
65   {
66     FT_Int   s;
67     FT_Long  d;
68 
69 
70     s = 1;
71     if ( a < 0 ) { a = -a; s = -1; }
72     if ( b < 0 ) { b = -b; s = -s; }
73     if ( c < 0 ) { c = -c; s = -s; }
74 
75     d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c
76                          : 0x7FFFFFFFL );
77 
78     return ( s > 0 ) ? d : -d;
79   }
80 
81 #endif /* __FTMISC_H__ */
82 
83 
84 /* END */
85