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