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 */