1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  psglue.h                                                               */
   4 /*                                                                         */
   5 /*    Adobe's code for shared stuff (specification only).                  */
   6 /*                                                                         */
   7 /*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
   8 /*                                                                         */
   9 /*  This software, and all works of authorship, whether in source or       */
  10 /*  object code form as indicated by the copyright notice(s) included      */
  11 /*  herein (collectively, the "Work") is made available, and may only be   */
  12 /*  used, modified, and distributed under the FreeType Project License,    */
  13 /*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
  14 /*  FreeType Project License, each contributor to the Work hereby grants   */
  15 /*  to any individual or legal entity exercising permissions granted by    */
  16 /*  the FreeType Project License and this section (hereafter, "You" or     */
  17 /*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
  18 /*  royalty-free, irrevocable (except as stated in this section) patent    */
  19 /*  license to make, have made, use, offer to sell, sell, import, and      */
  20 /*  otherwise transfer the Work, where such license applies only to those  */
  21 /*  patent claims licensable by such contributor that are necessarily      */
  22 /*  infringed by their contribution(s) alone or by combination of their    */
  23 /*  contribution(s) with the Work to which such contribution(s) was        */
  24 /*  submitted.  If You institute patent litigation against any entity      */
  25 /*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
  26 /*  the Work or a contribution incorporated within the Work constitutes    */
  27 /*  direct or contributory patent infringement, then any patent licenses   */
  28 /*  granted to You under this License for that Work shall terminate as of  */
  29 /*  the date such litigation is filed.                                     */
  30 /*                                                                         */
  31 /*  By using, modifying, or distributing the Work you indicate that you    */
  32 /*  have read and understood the terms and conditions of the               */
  33 /*  FreeType Project License as well as those provided in this section,    */
  34 /*  and you accept them fully.                                             */
  35 /*                                                                         */
  36 /***************************************************************************/
  37 
  38 
  39 #ifndef PSGLUE_H_
  40 #define PSGLUE_H_
  41 
  42 
  43 /* common includes for other modules */
  44 #include "pserror.h"
  45 #include "psfixed.h"
  46 #include "psarrst.h"
  47 #include "psread.h"
  48 
  49 
  50 FT_BEGIN_HEADER
  51 
  52 
  53   /* rendering parameters */
  54 
  55   /* apply hints to rendered glyphs */
  56 #define CF2_FlagsHinted    1
  57   /* for testing */
  58 #define CF2_FlagsDarkened  2
  59 
  60   /* type for holding the flags */
  61   typedef CF2_Int  CF2_RenderingFlags;
  62 
  63 
  64   /* elements of a glyph outline */
  65   typedef enum  CF2_PathOp_
  66   {
  67     CF2_PathOpMoveTo = 1,     /* change the current point */
  68     CF2_PathOpLineTo = 2,     /* line                     */
  69     CF2_PathOpQuadTo = 3,     /* quadratic curve          */
  70     CF2_PathOpCubeTo = 4      /* cubic curve              */
  71 
  72   } CF2_PathOp;
  73 
  74 
  75   /* a matrix of fixed point values */
  76   typedef struct  CF2_Matrix_
  77   {
  78     CF2_F16Dot16  a;
  79     CF2_F16Dot16  b;
  80     CF2_F16Dot16  c;
  81     CF2_F16Dot16  d;
  82     CF2_F16Dot16  tx;
  83     CF2_F16Dot16  ty;
  84 
  85   } CF2_Matrix;
  86 
  87 
  88   /* these typedefs are needed by more than one header file */
  89   /* and gcc compiler doesn't allow redefinition            */
  90   typedef struct CF2_FontRec_  CF2_FontRec, *CF2_Font;
  91   typedef struct CF2_HintRec_  CF2_HintRec, *CF2_Hint;
  92 
  93 
  94   /* A common structure for all callback parameters.                       */
  95   /*                                                                       */
  96   /* Some members may be unused.  For example, `pt0' is not used for       */
  97   /* `moveTo' and `pt3' is not used for `quadTo'.  The initial point `pt0' */
  98   /* is included for each path element for generality; curve conversions   */
  99   /* need it.  The `op' parameter allows one function to handle multiple   */
 100   /* element types.                                                        */
 101 
 102   typedef struct  CF2_CallbackParamsRec_
 103   {
 104     FT_Vector  pt0;
 105     FT_Vector  pt1;
 106     FT_Vector  pt2;
 107     FT_Vector  pt3;
 108 
 109     CF2_Int  op;
 110 
 111   } CF2_CallbackParamsRec, *CF2_CallbackParams;
 112 
 113 
 114   /* forward reference */
 115   typedef struct CF2_OutlineCallbacksRec_  CF2_OutlineCallbacksRec,
 116                                            *CF2_OutlineCallbacks;
 117 
 118   /* callback function pointers */
 119   typedef void
 120   (*CF2_Callback_Type)( CF2_OutlineCallbacks      callbacks,
 121                         const CF2_CallbackParams  params );
 122 
 123 
 124   struct  CF2_OutlineCallbacksRec_
 125   {
 126     CF2_Callback_Type  moveTo;
 127     CF2_Callback_Type  lineTo;
 128     CF2_Callback_Type  quadTo;
 129     CF2_Callback_Type  cubeTo;
 130 
 131     CF2_Int  windingMomentum;    /* for winding order detection */
 132 
 133     FT_Memory  memory;
 134     FT_Error*  error;
 135   };
 136 
 137 
 138 FT_END_HEADER
 139 
 140 
 141 #endif /* PSGLUE_H_ */
 142 
 143 
 144 /* END */