1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftcsbits.h                                                             */
4 /*                                                                         */
5 /*    A small-bitmap cache (specification).                                */
6 /*                                                                         */
7 /*  Copyright 2000-2015 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