| OLD | NEW |
| (Empty) |
| 1 /***************************************************************************/ | |
| 2 /* */ | |
| 3 /* ftsystem.h */ | |
| 4 /* */ | |
| 5 /* FreeType low-level system interface definition (specification). */ | |
| 6 /* */ | |
| 7 /* Copyright 1996-2001, 2002, 2005, 2010 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 __FTSYSTEM_H__ | |
| 20 #define __FTSYSTEM_H__ | |
| 21 | |
| 22 | |
| 23 #include "../ft2build.h" | |
| 24 | |
| 25 | |
| 26 FT_BEGIN_HEADER | |
| 27 | |
| 28 | |
| 29 /*************************************************************************/ | |
| 30 /* */ | |
| 31 /* <Section> */ | |
| 32 /* system_interface */ | |
| 33 /* */ | |
| 34 /* <Title> */ | |
| 35 /* System Interface */ | |
| 36 /* */ | |
| 37 /* <Abstract> */ | |
| 38 /* How FreeType manages memory and i/o. */ | |
| 39 /* */ | |
| 40 /* <Description> */ | |
| 41 /* This section contains various definitions related to memory */ | |
| 42 /* management and i/o access. You need to understand this */ | |
| 43 /* information if you want to use a custom memory manager or you own */ | |
| 44 /* i/o streams. */ | |
| 45 /* */ | |
| 46 /*************************************************************************/ | |
| 47 | |
| 48 | |
| 49 /*************************************************************************/ | |
| 50 /* */ | |
| 51 /* M E M O R Y M A N A G E M E N T */ | |
| 52 /* */ | |
| 53 /*************************************************************************/ | |
| 54 | |
| 55 | |
| 56 /************************************************************************* | |
| 57 * | |
| 58 * @type: | |
| 59 * FT_Memory | |
| 60 * | |
| 61 * @description: | |
| 62 * A handle to a given memory manager object, defined with an | |
| 63 * @FT_MemoryRec structure. | |
| 64 * | |
| 65 */ | |
| 66 typedef struct FT_MemoryRec_* FT_Memory; | |
| 67 | |
| 68 | |
| 69 /************************************************************************* | |
| 70 * | |
| 71 * @functype: | |
| 72 * FT_Alloc_Func | |
| 73 * | |
| 74 * @description: | |
| 75 * A function used to allocate `size' bytes from `memory'. | |
| 76 * | |
| 77 * @input: | |
| 78 * memory :: | |
| 79 * A handle to the source memory manager. | |
| 80 * | |
| 81 * size :: | |
| 82 * The size in bytes to allocate. | |
| 83 * | |
| 84 * @return: | |
| 85 * Address of new memory block. 0~in case of failure. | |
| 86 * | |
| 87 */ | |
| 88 typedef void* | |
| 89 (*FT_Alloc_Func)( FT_Memory memory, | |
| 90 long size ); | |
| 91 | |
| 92 /* Sunliang.Liu 20100915 sync 221's revison. */ | |
| 93 typedef void* | |
| 94 (*FT_AllocDebug_Func)( FT_Memory memory, | |
| 95 long size, const char* filename, int line); | |
| 96 | |
| 97 | |
| 98 | |
| 99 /************************************************************************* | |
| 100 * | |
| 101 * @functype: | |
| 102 * FT_Free_Func | |
| 103 * | |
| 104 * @description: | |
| 105 * A function used to release a given block of memory. | |
| 106 * | |
| 107 * @input: | |
| 108 * memory :: | |
| 109 * A handle to the source memory manager. | |
| 110 * | |
| 111 * block :: | |
| 112 * The address of the target memory block. | |
| 113 * | |
| 114 */ | |
| 115 typedef void | |
| 116 (*FT_Free_Func)( FT_Memory memory, | |
| 117 void* block ); | |
| 118 | |
| 119 | |
| 120 /************************************************************************* | |
| 121 * | |
| 122 * @functype: | |
| 123 * FT_Realloc_Func | |
| 124 * | |
| 125 * @description: | |
| 126 * A function used to re-allocate a given block of memory. | |
| 127 * | |
| 128 * @input: | |
| 129 * memory :: | |
| 130 * A handle to the source memory manager. | |
| 131 * | |
| 132 * cur_size :: | |
| 133 * The block's current size in bytes. | |
| 134 * | |
| 135 * new_size :: | |
| 136 * The block's requested new size. | |
| 137 * | |
| 138 * block :: | |
| 139 * The block's current address. | |
| 140 * | |
| 141 * @return: | |
| 142 * New block address. 0~in case of memory shortage. | |
| 143 * | |
| 144 * @note: | |
| 145 * In case of error, the old block must still be available. | |
| 146 * | |
| 147 */ | |
| 148 typedef void* | |
| 149 (*FT_Realloc_Func)( FT_Memory memory, | |
| 150 long cur_size, | |
| 151 long new_size, | |
| 152 void* block ); | |
| 153 | |
| 154 | |
| 155 /************************************************************************* | |
| 156 * | |
| 157 * @struct: | |
| 158 * FT_MemoryRec | |
| 159 * | |
| 160 * @description: | |
| 161 * A structure used to describe a given memory manager to FreeType~2. | |
| 162 * | |
| 163 * @fields: | |
| 164 * user :: | |
| 165 * A generic typeless pointer for user data. | |
| 166 * | |
| 167 * alloc :: | |
| 168 * A pointer type to an allocation function. | |
| 169 * | |
| 170 * free :: | |
| 171 * A pointer type to an memory freeing function. | |
| 172 * | |
| 173 * realloc :: | |
| 174 * A pointer type to a reallocation function. | |
| 175 * | |
| 176 */ | |
| 177 struct FT_MemoryRec_ | |
| 178 { | |
| 179 void* user; | |
| 180 FT_Alloc_Func alloc; | |
| 181 FT_AllocDebug_Func allocdebug; /* Sunliang.Liu 20100915 sync 221's revi
son. */ | |
| 182 FT_Free_Func free; | |
| 183 FT_Realloc_Func realloc; | |
| 184 }; | |
| 185 | |
| 186 | |
| 187 /*************************************************************************/ | |
| 188 /* */ | |
| 189 /* I / O M A N A G E M E N T */ | |
| 190 /* */ | |
| 191 /*************************************************************************/ | |
| 192 | |
| 193 | |
| 194 /************************************************************************* | |
| 195 * | |
| 196 * @type: | |
| 197 * FT_Stream | |
| 198 * | |
| 199 * @description: | |
| 200 * A handle to an input stream. | |
| 201 * | |
| 202 */ | |
| 203 typedef struct FT_StreamRec_* FT_Stream; | |
| 204 | |
| 205 | |
| 206 /************************************************************************* | |
| 207 * | |
| 208 * @struct: | |
| 209 * FT_StreamDesc | |
| 210 * | |
| 211 * @description: | |
| 212 * A union type used to store either a long or a pointer. This is used | |
| 213 * to store a file descriptor or a `FILE*' in an input stream. | |
| 214 * | |
| 215 */ | |
| 216 typedef union FT_StreamDesc_ | |
| 217 { | |
| 218 long value; | |
| 219 void* pointer; | |
| 220 | |
| 221 } FT_StreamDesc; | |
| 222 | |
| 223 | |
| 224 /************************************************************************* | |
| 225 * | |
| 226 * @functype: | |
| 227 * FT_Stream_IoFunc | |
| 228 * | |
| 229 * @description: | |
| 230 * A function used to seek and read data from a given input stream. | |
| 231 * | |
| 232 * @input: | |
| 233 * stream :: | |
| 234 * A handle to the source stream. | |
| 235 * | |
| 236 * offset :: | |
| 237 * The offset of read in stream (always from start). | |
| 238 * | |
| 239 * buffer :: | |
| 240 * The address of the read buffer. | |
| 241 * | |
| 242 * count :: | |
| 243 * The number of bytes to read from the stream. | |
| 244 * | |
| 245 * @return: | |
| 246 * The number of bytes effectively read by the stream. | |
| 247 * | |
| 248 * @note: | |
| 249 * This function might be called to perform a seek or skip operation | |
| 250 * with a `count' of~0. A non-zero return value then indicates an | |
| 251 * error. | |
| 252 * | |
| 253 */ | |
| 254 typedef unsigned long | |
| 255 (*FT_Stream_IoFunc)( FT_Stream stream, | |
| 256 unsigned long offset, | |
| 257 unsigned char* buffer, | |
| 258 unsigned long count ); | |
| 259 | |
| 260 | |
| 261 /************************************************************************* | |
| 262 * | |
| 263 * @functype: | |
| 264 * FT_Stream_CloseFunc | |
| 265 * | |
| 266 * @description: | |
| 267 * A function used to close a given input stream. | |
| 268 * | |
| 269 * @input: | |
| 270 * stream :: | |
| 271 * A handle to the target stream. | |
| 272 * | |
| 273 */ | |
| 274 typedef void | |
| 275 (*FT_Stream_CloseFunc)( FT_Stream stream ); | |
| 276 | |
| 277 | |
| 278 /************************************************************************* | |
| 279 * | |
| 280 * @struct: | |
| 281 * FT_StreamRec | |
| 282 * | |
| 283 * @description: | |
| 284 * A structure used to describe an input stream. | |
| 285 * | |
| 286 * @input: | |
| 287 * base :: | |
| 288 * For memory-based streams, this is the address of the first stream | |
| 289 * byte in memory. This field should always be set to NULL for | |
| 290 * disk-based streams. | |
| 291 * | |
| 292 * size :: | |
| 293 * The stream size in bytes. | |
| 294 * | |
| 295 * pos :: | |
| 296 * The current position within the stream. | |
| 297 * | |
| 298 * descriptor :: | |
| 299 * This field is a union that can hold an integer or a pointer. It is | |
| 300 * used by stream implementations to store file descriptors or `FILE*' | |
| 301 * pointers. | |
| 302 * | |
| 303 * pathname :: | |
| 304 * This field is completely ignored by FreeType. However, it is often | |
| 305 * useful during debugging to use it to store the stream's filename | |
| 306 * (where available). | |
| 307 * | |
| 308 * read :: | |
| 309 * The stream's input function. | |
| 310 * | |
| 311 * close :: | |
| 312 * The stream's close function. | |
| 313 * | |
| 314 * memory :: | |
| 315 * The memory manager to use to preload frames. This is set | |
| 316 * internally by FreeType and shouldn't be touched by stream | |
| 317 * implementations. | |
| 318 * | |
| 319 * cursor :: | |
| 320 * This field is set and used internally by FreeType when parsing | |
| 321 * frames. | |
| 322 * | |
| 323 * limit :: | |
| 324 * This field is set and used internally by FreeType when parsing | |
| 325 * frames. | |
| 326 * | |
| 327 */ | |
| 328 typedef struct FT_StreamRec_ | |
| 329 { | |
| 330 unsigned char* base; | |
| 331 unsigned long size; | |
| 332 unsigned long pos; | |
| 333 | |
| 334 FT_StreamDesc descriptor; | |
| 335 FT_StreamDesc pathname; | |
| 336 FT_Stream_IoFunc read; | |
| 337 FT_Stream_CloseFunc close; | |
| 338 | |
| 339 FT_Memory memory; | |
| 340 unsigned char* cursor; | |
| 341 unsigned char* limit; | |
| 342 | |
| 343 } FT_StreamRec; | |
| 344 | |
| 345 | |
| 346 /* */ | |
| 347 | |
| 348 | |
| 349 FT_END_HEADER | |
| 350 | |
| 351 #endif /* __FTSYSTEM_H__ */ | |
| 352 | |
| 353 | |
| 354 /* END */ | |
| OLD | NEW |