Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(121)

Side by Side Diff: src/cache/ftcglyph.c

Issue 89753003: Update freetype to latest version of ASOP. (Closed) Base URL: https://chromium.googlesource.com/chromium/src/third_party/freetype.git@master
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/cache/ftcglyph.h ('k') | src/cache/ftcmanag.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /***************************************************************************/
2 /* */
3 /* ftcglyph.c */
4 /* */
5 /* FreeType Glyph Image (FT_Glyph) cache (body). */
6 /* */
7 /* Copyright 2000-2001, 2003, 2004, 2006, 2009, 2011 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 #include <ft2build.h>
20 #include FT_INTERNAL_OBJECTS_H
21 #include FT_CACHE_H
22 #include "ftcglyph.h"
23 #include FT_ERRORS_H
24
25 #include "ftccback.h"
26 #include "ftcerror.h"
27
28
29 /* create a new chunk node, setting its cache index and ref count */
30 FT_LOCAL_DEF( void )
31 FTC_GNode_Init( FTC_GNode gnode,
32 FT_UInt gindex,
33 FTC_Family family )
34 {
35 gnode->family = family;
36 gnode->gindex = gindex;
37 family->num_nodes++;
38 }
39
40
41 FT_LOCAL_DEF( void )
42 FTC_GNode_UnselectFamily( FTC_GNode gnode,
43 FTC_Cache cache )
44 {
45 FTC_Family family = gnode->family;
46
47
48 gnode->family = NULL;
49 if ( family && --family->num_nodes == 0 )
50 FTC_FAMILY_FREE( family, cache );
51 }
52
53
54 FT_LOCAL_DEF( void )
55 FTC_GNode_Done( FTC_GNode gnode,
56 FTC_Cache cache )
57 {
58 /* finalize the node */
59 gnode->gindex = 0;
60
61 FTC_GNode_UnselectFamily( gnode, cache );
62 }
63
64
65 FT_LOCAL_DEF( FT_Bool )
66 ftc_gnode_compare( FTC_Node ftcgnode,
67 FT_Pointer ftcgquery,
68 FTC_Cache cache,
69 FT_Bool* list_changed )
70 {
71 FTC_GNode gnode = (FTC_GNode)ftcgnode;
72 FTC_GQuery gquery = (FTC_GQuery)ftcgquery;
73 FT_UNUSED( cache );
74
75
76 if ( list_changed )
77 *list_changed = FALSE;
78 return FT_BOOL( gnode->family == gquery->family &&
79 gnode->gindex == gquery->gindex );
80 }
81
82
83 #ifdef FTC_INLINE
84
85 FT_LOCAL_DEF( FT_Bool )
86 FTC_GNode_Compare( FTC_GNode gnode,
87 FTC_GQuery gquery,
88 FTC_Cache cache,
89 FT_Bool* list_changed )
90 {
91 return ftc_gnode_compare( FTC_NODE( gnode ), gquery,
92 cache, list_changed );
93 }
94
95 #endif
96
97 /*************************************************************************/
98 /*************************************************************************/
99 /***** *****/
100 /***** CHUNK SETS *****/
101 /***** *****/
102 /*************************************************************************/
103 /*************************************************************************/
104
105 FT_LOCAL_DEF( void )
106 FTC_Family_Init( FTC_Family family,
107 FTC_Cache cache )
108 {
109 FTC_GCacheClass clazz = FTC_CACHE__GCACHE_CLASS( cache );
110
111
112 family->clazz = clazz->family_class;
113 family->num_nodes = 0;
114 family->cache = cache;
115 }
116
117
118 FT_LOCAL_DEF( FT_Error )
119 ftc_gcache_init( FTC_Cache ftccache )
120 {
121 FTC_GCache cache = (FTC_GCache)ftccache;
122 FT_Error error;
123
124
125 error = FTC_Cache_Init( FTC_CACHE( cache ) );
126 if ( !error )
127 {
128 FTC_GCacheClass clazz = (FTC_GCacheClass)FTC_CACHE( cache )->org_class;
129
130 FTC_MruList_Init( &cache->families,
131 clazz->family_class,
132 0, /* no maximum here! */
133 cache,
134 FTC_CACHE( cache )->memory );
135 }
136
137 return error;
138 }
139
140
141 #if 0
142
143 FT_LOCAL_DEF( FT_Error )
144 FTC_GCache_Init( FTC_GCache cache )
145 {
146 return ftc_gcache_init( FTC_CACHE( cache ) );
147 }
148
149 #endif /* 0 */
150
151
152 FT_LOCAL_DEF( void )
153 ftc_gcache_done( FTC_Cache ftccache )
154 {
155 FTC_GCache cache = (FTC_GCache)ftccache;
156
157
158 FTC_Cache_Done( (FTC_Cache)cache );
159 FTC_MruList_Done( &cache->families );
160 }
161
162
163 #if 0
164
165 FT_LOCAL_DEF( void )
166 FTC_GCache_Done( FTC_GCache cache )
167 {
168 ftc_gcache_done( FTC_CACHE( cache ) );
169 }
170
171 #endif /* 0 */
172
173
174 FT_LOCAL_DEF( FT_Error )
175 FTC_GCache_New( FTC_Manager manager,
176 FTC_GCacheClass clazz,
177 FTC_GCache *acache )
178 {
179 return FTC_Manager_RegisterCache( manager, (FTC_CacheClass)clazz,
180 (FTC_Cache*)acache );
181 }
182
183
184 #ifndef FTC_INLINE
185
186 FT_LOCAL_DEF( FT_Error )
187 FTC_GCache_Lookup( FTC_GCache cache,
188 FT_PtrDist hash,
189 FT_UInt gindex,
190 FTC_GQuery query,
191 FTC_Node *anode )
192 {
193 FT_Error error;
194
195
196 query->gindex = gindex;
197
198 FTC_MRULIST_LOOKUP( &cache->families, query, query->family, error );
199 if ( !error )
200 {
201 FTC_Family family = query->family;
202
203
204 /* prevent the family from being destroyed too early when an */
205 /* out-of-memory condition occurs during glyph node initialization. */
206 family->num_nodes++;
207
208 error = FTC_Cache_Lookup( FTC_CACHE( cache ), hash, query, anode );
209
210 if ( --family->num_nodes == 0 )
211 FTC_FAMILY_FREE( family, cache );
212 }
213 return error;
214 }
215
216 #endif /* !FTC_INLINE */
217
218
219 /* END */
OLDNEW
« no previous file with comments | « src/cache/ftcglyph.h ('k') | src/cache/ftcmanag.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698