misc/libfreetype/src/cache/ftcimage.h
changeset 9431 0f5961910e27
parent 9357 a501f5ec7b34
parent 9429 7a97a554ac80
child 9433 f0a8ac191839
equal deleted inserted replaced
9357:a501f5ec7b34 9431:0f5961910e27
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  ftcimage.h                                                             */
       
     4 /*                                                                         */
       
     5 /*    FreeType Generic Image cache (specification)                         */
       
     6 /*                                                                         */
       
     7 /*  Copyright 2000-2001, 2002, 2003, 2006 by                               */
       
     8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
       
     9 /*                                                                         */
       
    10 /*  This file is part of the FreeType project, and may only be used,       */
       
    11 /*  modified, and distributed under the terms of the FreeType project      */
       
    12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
       
    13 /*  this file you indicate that you have read the license and              */
       
    14 /*  understand and accept it fully.                                        */
       
    15 /*                                                                         */
       
    16 /***************************************************************************/
       
    17 
       
    18 
       
    19  /*
       
    20   *  FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
       
    21   *  image per cache node.
       
    22   *
       
    23   *  FTC_ICache extends FTC_GCache.  For an implementation example,
       
    24   *  see FTC_ImageCache in `src/cache/ftbasic.c'.
       
    25   */
       
    26 
       
    27 
       
    28   /*************************************************************************/
       
    29   /*                                                                       */
       
    30   /* Each image cache really manages FT_Glyph objects.                     */
       
    31   /*                                                                       */
       
    32   /*************************************************************************/
       
    33 
       
    34 
       
    35 #ifndef __FTCIMAGE_H__
       
    36 #define __FTCIMAGE_H__
       
    37 
       
    38 
       
    39 #include <ft2build.h>
       
    40 #include FT_CACHE_H
       
    41 #include "ftcglyph.h"
       
    42 
       
    43 FT_BEGIN_HEADER
       
    44 
       
    45 
       
    46   /* the FT_Glyph image node type - we store only 1 glyph per node */
       
    47   typedef struct  FTC_INodeRec_
       
    48   {
       
    49     FTC_GNodeRec  gnode;
       
    50     FT_Glyph      glyph;
       
    51 
       
    52   } FTC_INodeRec, *FTC_INode;
       
    53 
       
    54 #define FTC_INODE( x )         ( (FTC_INode)( x ) )
       
    55 #define FTC_INODE_GINDEX( x )  FTC_GNODE(x)->gindex
       
    56 #define FTC_INODE_FAMILY( x )  FTC_GNODE(x)->family
       
    57 
       
    58   typedef FT_Error
       
    59   (*FTC_IFamily_LoadGlyphFunc)( FTC_Family  family,
       
    60                                 FT_UInt     gindex,
       
    61                                 FTC_Cache   cache,
       
    62                                 FT_Glyph   *aglyph );
       
    63 
       
    64   typedef struct  FTC_IFamilyClassRec_
       
    65   {
       
    66     FTC_MruListClassRec        clazz;
       
    67     FTC_IFamily_LoadGlyphFunc  family_load_glyph;
       
    68 
       
    69   } FTC_IFamilyClassRec;
       
    70 
       
    71   typedef const FTC_IFamilyClassRec*  FTC_IFamilyClass;
       
    72 
       
    73 #define FTC_IFAMILY_CLASS( x )  ((FTC_IFamilyClass)(x))
       
    74 
       
    75 #define FTC_CACHE__IFAMILY_CLASS( x ) \
       
    76           FTC_IFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS(x)->family_class )
       
    77 
       
    78 
       
    79   /* can be used as a @FTC_Node_FreeFunc */
       
    80   FT_LOCAL( void )
       
    81   FTC_INode_Free( FTC_INode  inode,
       
    82                   FTC_Cache  cache );
       
    83 
       
    84   /* Can be used as @FTC_Node_NewFunc.  `gquery.index' and `gquery.family'
       
    85    * must be set correctly.  This function will call the `family_load_glyph'
       
    86    * method to load the FT_Glyph into the cache node.
       
    87    */
       
    88   FT_LOCAL( FT_Error )
       
    89   FTC_INode_New( FTC_INode   *pinode,
       
    90                  FTC_GQuery   gquery,
       
    91                  FTC_Cache    cache );
       
    92 
       
    93 #if 0
       
    94   /* can be used as @FTC_Node_WeightFunc */
       
    95   FT_LOCAL( FT_ULong )
       
    96   FTC_INode_Weight( FTC_INode  inode );
       
    97 #endif
       
    98 
       
    99 
       
   100  /* */
       
   101 
       
   102 FT_END_HEADER
       
   103 
       
   104 #endif /* __FTCIMAGE_H__ */
       
   105 
       
   106 
       
   107 /* END */