• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  *
3  * ftcsbits.h
4  *
5  *   A small-bitmap cache (specification).
6  *
7  * Copyright (C) 2000-2019 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