sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
ftcimage.h
Go to the documentation of this file.
1/****************************************************************************
2 *
3 * ftcimage.h
4 *
5 * FreeType Generic Image cache (specification)
6 *
7 * Copyright (C) 2000-2025 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 /*
20 * FTC_ICache is an _abstract_ cache used to store a single FT_Glyph
21 * image per cache node.
22 *
23 * FTC_ICache extends FTC_GCache. For an implementation example,
24 * see FTC_ImageCache in `src/cache/ftbasic.c'.
25 */
26
27
28 /**************************************************************************
29 *
30 * Each image cache really manages FT_Glyph objects.
31 *
32 */
33
34
39#ifndef FTCIMAGE_H_
40#define FTCIMAGE_H_
41
42
43#include <freetype/ftcache.h>
44#include "ftcglyph.h"
45
46FT_BEGIN_HEADER
47
48
49 /* the FT_Glyph image node type - we store only 1 glyph per node */
50 typedef struct FTC_INodeRec_
51 {
52 FTC_GNodeRec gnode;
53 FT_Glyph glyph;
54
55 } FTC_INodeRec, *FTC_INode;
56
57#define FTC_INODE( x ) ( (FTC_INode)( x ) )
58#define FTC_INODE_GINDEX( x ) FTC_GNODE( x )->gindex
59#define FTC_INODE_FAMILY( x ) FTC_GNODE( x )->family
60
61 typedef FT_Error
62 (*FTC_IFamily_LoadGlyphFunc)( FTC_Family family,
63 FT_UInt gindex,
64 FTC_Cache cache,
65 FT_Glyph *aglyph );
66
67 typedef struct FTC_IFamilyClassRec_
68 {
69 FTC_MruListClassRec clazz;
70 FTC_IFamily_LoadGlyphFunc family_load_glyph;
71
72 } FTC_IFamilyClassRec;
73
74 typedef const FTC_IFamilyClassRec* FTC_IFamilyClass;
75
76#define FTC_IFAMILY_CLASS( x ) ((FTC_IFamilyClass)(x))
77
78#define FTC_CACHE_IFAMILY_CLASS( x ) \
79 FTC_IFAMILY_CLASS( FTC_CACHE_GCACHE_CLASS( x )->family_class )
80
81
82 /* can be used as a @FTC_Node_FreeFunc */
83 FT_LOCAL( void )
84 FTC_INode_Free( FTC_INode inode,
85 FTC_Cache cache );
86
87 /* Can be used as @FTC_Node_NewFunc. `gquery.index' and `gquery.family'
88 * must be set correctly. This function will call the `family_load_glyph'
89 * method to load the FT_Glyph into the cache node.
90 */
91 FT_LOCAL( FT_Error )
92 FTC_INode_New( FTC_INode *pinode,
93 FTC_GQuery gquery,
94 FTC_Cache cache );
95
96#if 0
97 /* can be used as @FTC_Node_WeightFunc */
98 FT_LOCAL( FT_ULong )
99 FTC_INode_Weight( FTC_INode inode );
100#endif
101
102
103 /* */
104
105FT_END_HEADER
106
107#endif /* FTCIMAGE_H_ */
108
109
110/* END */