Home | History | Annotate | Download | only in cache
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftcsbits.h                                                             */
      4 /*                                                                         */
      5 /*    A small-bitmap cache (specification).                                */
      6 /*                                                                         */
      7 /*  Copyright 2000-2018 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 #ifndef FTCSBITS_H_
     20 #define FTCSBITS_H_
     21 
     22 
     23 #include <ft2build.h>
     24 #include FT_CACHE_H
     25 #include "ftcglyph.h"
     26 
     27 
     28 FT_BEGIN_HEADER
     29 
     30 #define FTC_SBIT_ITEMS_PER_NODE  16
     31 
     32   typedef struct  FTC_SNodeRec_
     33   {
     34     FTC_GNodeRec  gnode;
     35     FT_UInt       count;
     36     FTC_SBitRec   sbits[FTC_SBIT_ITEMS_PER_NODE];
     37 
     38   } FTC_SNodeRec, *FTC_SNode;
     39 
     40 
     41 #define FTC_SNODE( x )         ( (FTC_SNode)( x ) )
     42 #define FTC_SNODE_GINDEX( x )  FTC_GNODE( x )->gindex
     43 #define FTC_SNODE_FAMILY( x )  FTC_GNODE( x )->family
     44 
     45   typedef FT_UInt
     46   (*FTC_SFamily_GetCountFunc)( FTC_Family   family,
     47                                FTC_Manager  manager );
     48 
     49   typedef FT_Error
     50   (*FTC_SFamily_LoadGlyphFunc)( FTC_Family   family,
     51                                 FT_UInt      gindex,
     52                                 FTC_Manager  manager,
     53                                 FT_Face     *aface );
     54 
     55   typedef struct  FTC_SFamilyClassRec_
     56   {
     57     FTC_MruListClassRec        clazz;
     58     FTC_SFamily_GetCountFunc   family_get_count;
     59     FTC_SFamily_LoadGlyphFunc  family_load_glyph;
     60 
     61   } FTC_SFamilyClassRec;
     62 
     63   typedef const FTC_SFamilyClassRec*  FTC_SFamilyClass;
     64 
     65 #define FTC_SFAMILY_CLASS( x )  ((FTC_SFamilyClass)(x))
     66 
     67 #define FTC_CACHE_SFAMILY_CLASS( x )  \
     68           FTC_SFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
     69 
     70 
     71   FT_LOCAL( void )
     72   FTC_SNode_Free( FTC_SNode  snode,
     73                   FTC_Cache  cache );
     74 
     75   FT_LOCAL( FT_Error )
     76   FTC_SNode_New( FTC_SNode   *psnode,
     77                  FTC_GQuery   gquery,
     78                  FTC_Cache    cache );
     79 
     80 #if 0
     81   FT_LOCAL( FT_ULong )
     82   FTC_SNode_Weight( FTC_SNode  inode );
     83 #endif
     84 
     85 
     86 #ifdef FTC_INLINE
     87 
     88   FT_LOCAL( FT_Bool )
     89   FTC_SNode_Compare( FTC_SNode   snode,
     90                      FTC_GQuery  gquery,
     91                      FTC_Cache   cache,
     92                      FT_Bool*    list_changed);
     93 
     94 #endif
     95 
     96   /* */
     97 
     98 FT_END_HEADER
     99 
    100 #endif /* FTCSBITS_H_ */
    101 
    102 
    103 /* END */
    104