blob: e07d5080c862deda70d5ed61430b774f2742ab0d [file] [log] [blame]
/***************************************************************************/
/* */
/* ftcsbits.h */
/* */
/* A small-bitmap cache (specification). */
/* */
/* Copyright 2000-2001, 2002, 2003 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. */
/* */
/***************************************************************************/
#ifndef __FTCSBITS_H__
#define __FTCSBITS_H__
#include <ft2build.h>
#include FT_CACHE_H
#include FT_CACHE_INTERNAL_GLYPH_H
FT_BEGIN_HEADER
#define FTC_SBIT_ITEMS_PER_NODE 16
typedef struct FTC_SNodeRec_
{
FTC_GNodeRec gnode;
FT_UInt count;
FTC_SBitRec sbits[FTC_SBIT_ITEMS_PER_NODE];
} FTC_SNodeRec, *FTC_SNode;
#define FTC_SNODE( x ) ( (FTC_SNode)( x ) )
#define FTC_SNODE__COUNT(x) ( FTC_SNODE(x)->count )
typedef FT_UInt
(*FTC_SFamily_GetCountFunc)( FTC_Family family,
FTC_Manager manager );
typedef FT_Error
(*FTC_SFamily_LoadGlyphFunc)( FTC_Family family,
FT_UInt gindex,
FTC_Manager manager,
FT_Face *aface );
typedef struct
{
FTC_GCacheClassRec clazz;
FTC_SFamily_GetCountFunc fam_get_count;
FTC_SFamily_LoadGlyphFunc fam_load_glyph;
} FTC_SCacheClassRec;
typedef const FTC_SCacheClassRec* FTC_SCacheClass;
#define FTC_SCACHE_CLASS(x) ((FTC_SCacheClass)(x))
#define FTC_SCACHE__CLASS(c) FTC_SCACHE_CLASS(FTC_CACHE__CLASS(c))
#define FTC_DEFINE_SCACHE_CLASS(_gcache_class,_get_count,_get_glyph) \
{ \
_gcache_class, \
(FTC_SFamily_GetCountFunc) (_get_count), \
(FTC_SFamily_LoadGlyphFunc)(_get_glyph) \
}
#define FTC_SFAMILY__CLASS(f) FTC_SCACHE__CLASS(FTC_FAMILY__CACHE(f))
#define FTC_CACHE__SFAMILY_CLASS( x ) \
FTC_SFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS( x )->family_class )
FT_EXPORT( void )
FTC_SNode_Free( FTC_SNode snode,
FTC_GCache cache );
FT_EXPORT( FT_Error )
FTC_SNode_New( FTC_SNode *psnode,
FTC_GNode gquery,
FTC_GCache cache );
#define FTC_SNODE_EQUAL(node,query,cache) \
FTC_SNode_Equal( FTC_SNODE(node), FTC_GNODE(query), FTC_CACHE(cache) )
FT_EXPORT( FT_Bool )
FTC_SNode_Equal( FTC_SNode snode,
FTC_GNode gquery,
FTC_Cache cache );
FT_EXPORT( FT_ULong )
FTC_SNode_Weight( FTC_SNode inode );
/* */
FT_END_HEADER
#endif /* __FTCSBITS_H__ */
/* END */