ref: 2373074a2ce9344e9fd058d76472e9aa85bbd4e8
dir: /src/cache/ftcimage.h/
/**************************************************************************** * * ftcimage.h * * FreeType Generic Image cache (specification) * * Copyright (C) 2000-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * */ /* * FTC_ICache is an _abstract_ cache used to store a single FT_Glyph * image per cache node. * * FTC_ICache extends FTC_GCache. For an implementation example, * see FTC_ImageCache in `src/cache/ftbasic.c'. */ /************************************************************************** * * Each image cache really manages FT_Glyph objects. * */ #ifndef FTCIMAGE_H_ #define FTCIMAGE_H_ #include <freetype/ftcache.h> #include "ftcglyph.h" FT_BEGIN_HEADER /* the FT_Glyph image node type - we store only 1 glyph per node */ typedef struct FTC_INodeRec_ { FTC_GNodeRec gnode; FT_Glyph glyph; } FTC_INodeRec, *FTC_INode; #define FTC_INODE( x ) ( (FTC_INode)( x ) ) #define FTC_INODE_GINDEX( x ) FTC_GNODE(x)->gindex #define FTC_INODE_FAMILY( x ) FTC_GNODE(x)->family typedef FT_Error (*FTC_IFamily_LoadGlyphFunc)( FTC_Family family, FT_UInt gindex, FTC_Cache cache, FT_Glyph *aglyph ); typedef struct FTC_IFamilyClassRec_ { FTC_MruListClassRec clazz; FTC_IFamily_LoadGlyphFunc family_load_glyph; } FTC_IFamilyClassRec; typedef const FTC_IFamilyClassRec* FTC_IFamilyClass; #define FTC_IFAMILY_CLASS( x ) ((FTC_IFamilyClass)(x)) #define FTC_CACHE_IFAMILY_CLASS( x ) \ FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS(x)->family_class ) /* can be used as a @FTC_Node_FreeFunc */ FT_LOCAL( void ) FTC_INode_Free( FTC_INode inode, FTC_Cache cache ); /* Can be used as @FTC_Node_NewFunc. `gquery.index' and `gquery.family' * must be set correctly. This function will call the `family_load_glyph' * method to load the FT_Glyph into the cache node. */ FT_LOCAL( FT_Error ) FTC_INode_New( FTC_INode *pinode, FTC_GQuery gquery, FTC_Cache cache ); #if 0 /* can be used as @FTC_Node_WeightFunc */ FT_LOCAL( FT_ULong ) FTC_INode_Weight( FTC_INode inode ); #endif /* */ FT_END_HEADER #endif /* FTCIMAGE_H_ */ /* END */