text: /***************************************************************************/
  /*                                                                         */
  /*  ttgxvar.h                                                              */
  /*                                                                         */
  /*    TrueType GX Font Variation loader (specification)                    */
  /*                                                                         */
  /*  Copyright 2004-2015 by                                                 */
  /*  David Turner, Robert Wilhelm, Werner Lemberg and George Williams.      */
  /*                                                                         */
  /*  This file is part of the FreeType project, and may only be used,       */
  /*  modified, and distributed under the terms of the FreeType project      */
  /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  /*  this file you indicate that you have read the license and              */
  /*  understand and accept it fully.                                        */
  /*                                                                         */
  /***************************************************************************/
  
  
  #ifndef __TTGXVAR_H__
  #define __TTGXVAR_H__
  
  
  #include <ft2build.h>
  #include "ttobjs.h"
  
  
  FT_BEGIN_HEADER
  
  
    /*************************************************************************/
    /*                                                                       */
    /* <Struct>                                                              */
    /*    GX_AVarCorrespondenceRec                                           */
    /*                                                                       */
    /* <Description>                                                         */
    /*    A data structure representing `shortFracCorrespondence' in `avar'  */
    /*    table according to the specifications from Apple.                  */
    /*                                                                       */
    typedef struct  GX_AVarCorrespondenceRec_
    {
      FT_Fixed  fromCoord;
      FT_Fixed  toCoord;
  
    } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence;
  
  
    /*************************************************************************/
    /*                                                                       */
    /* <Struct>                                                              */
    /*    GX_AVarRec                                                         */
    /*                                                                       */
    /* <Description>                                                         */
    /*    Data from the segment field of `avar' table.                       */
    /*    There is one of these for each axis.                               */
    /*                                                                       */
    typedef struct  GX_AVarSegmentRec_
    {
      FT_UShort              pairCount;
      GX_AVarCorrespondence  correspondence; /* array with pairCount entries */
  
    } GX_AVarSegmentRec, *GX_AVarSegment;
  
  
    /*************************************************************************/
    /*                                                                       */
    /* <Struct>                                                              */
    /*    GX_BlendRec                                                        */
    /*                                                                       */
    /* <Description>                                                         */
    /*    Data for interpolating a font from a distortable font specified    */
    /*    by the GX *var tables ([fgca]var).                                 */
    /*                                                                       */
    /* <Fields>                                                              */
    /*    num_axis         :: The number of axes along which interpolation   */
    /*                         may happen                                    */
    /*                                                                       */
    /*    normalizedcoords :: A normalized value (between [-1,1]) indicating */
    /*                        the contribution along each axis to the final  */
    /*                        interpolated font.                             */
    /*                                                                       */
    typedef struct  GX_BlendRec_
    {
      FT_UInt         num_axis;
      FT_Fixed*       normalizedcoords;
  
      FT_MM_Var*      mmvar;
      FT_Offset       mmvar_len;
  
      FT_Bool         avar_checked;
      GX_AVarSegment  avar_segment;
  
      FT_UInt         tuplecount;      /* shared tuples in `gvar'           */
      FT_Fixed*       tuplecoords;     /* tuplecoords[tuplecount][num_axis] */
  
      FT_UInt         gv_glyphcnt;
      FT_ULong*       glyphoffsets;
  
    } GX_BlendRec;
  
  
    /*************************************************************************/
    /*                                                                       */
    /* <enum>                                                                */
    /*    GX_TupleCountFlags                                                 */
    /*                                                                       */
    /* <Description>                                                         */
    /*    Flags used within the `TupleCount' field of the `gvar' table.      */
    /*                                                                       */
    typedef enum  GX_TupleCountFlags_
    {
      GX_TC_TUPLES_SHARE_POINT_NUMBERS = 0x8000,
      GX_TC_RESERVED_TUPLE_FLAGS       = 0x7000,
      GX_TC_TUPLE_COUNT_MASK           = 0x0FFF
  
    } GX_TupleCountFlags;
  
  
    /*************************************************************************/
    /*                                                                       */
    /* <enum>                                                                */
    /*    GX_TupleIndexFlags                                                 */
    /*                                                                       */
    /* <Description>                                                         */
    /*    Flags used within the `TupleIndex' field of the `gvar' and `cvar'  */
    /*    tables.                                                            */
    /*                                                                       */
    typedef enum  GX_TupleIndexFlags_
    {
      GX_TI_EMBEDDED_TUPLE_COORD  = 0x8000,
      GX_TI_INTERMEDIATE_TUPLE    = 0x4000,
      GX_TI_PRIVATE_POINT_NUMBERS = 0x2000,
      GX_TI_RESERVED_TUPLE_FLAG   = 0x1000,
      GX_TI_TUPLE_INDEX_MASK      = 0x0FFF
  
    } GX_TupleIndexFlags;
  
  
  #define TTAG_wght  FT_MAKE_TAG( 'w', 'g', 'h', 't' )
  #define TTAG_wdth  FT_MAKE_TAG( 'w', 'd', 't', 'h' )
  #define TTAG_opsz  FT_MAKE_TAG( 'o', 'p', 's', 'z' )
  #define TTAG_slnt  FT_MAKE_TAG( 's', 'l', 'n', 't' )
  
  
    FT_LOCAL( FT_Error )
    TT_Set_MM_Blend( TT_Face    face,
                     FT_UInt    num_coords,
                     FT_Fixed*  coords );
  
    FT_LOCAL( FT_Error )
    TT_Set_Var_Design( TT_Face    face,
                       FT_UInt    num_coords,
                       FT_Fixed*  coords );
  
    FT_LOCAL( FT_Error )
    TT_Get_MM_Var( TT_Face      face,
                   FT_MM_Var*  *master );
  
  
    FT_LOCAL( FT_Error )
    tt_face_vary_cvt( TT_Face    face,
                      FT_Stream  stream );
  
  
    FT_LOCAL( FT_Error )
    TT_Vary_Apply_Glyph_Deltas( TT_Face      face,
                                FT_UInt      glyph_index,
                                FT_Outline*  outline,
                                FT_UInt      n_points );
  
  
    FT_LOCAL( void )
    tt_done_blend( FT_Memory  memory,
                   GX_Blend   blend );
  
  
  FT_END_HEADER
  
  
  #endif /* __TTGXVAR_H__ */
  
  
  /* END */
  