1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* ftsystem.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* FreeType low-level system interface definition (specification). */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 7aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich/* Copyright 1996-2001, 2002, 2005, 2010 by */ 8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __FTSYSTEM_H__ 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __FTSYSTEM_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Section> */ 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* system_interface */ 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Title> */ 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* System Interface */ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Abstract> */ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* How FreeType manages memory and i/o. */ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* This section contains various definitions related to memory */ 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* management and i/o access. You need to understand this */ 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* information if you want to use a custom memory manager or you own */ 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* i/o streams. */ 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* M E M O R Y M A N A G E M E N T */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Memory 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to a given memory manager object, defined with an 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @FT_MemoryRec structure. 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_MemoryRec_* FT_Memory; 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Alloc_Func 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to allocate `size' bytes from `memory'. 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * memory :: 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the source memory manager. 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * size :: 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The size in bytes to allocate. 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 850a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * Address of new memory block. 0~in case of failure. 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void* 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Alloc_Func)( FT_Memory memory, 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project long size ); 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Free_Func 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to release a given block of memory. 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * memory :: 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the source memory manager. 104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 105049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * block :: 106049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The address of the target memory block. 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Free_Func)( FT_Memory memory, 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* block ); 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Realloc_Func 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to re-allocate a given block of memory. 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * memory :: 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the source memory manager. 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * cur_size :: 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The block's current size in bytes. 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * new_size :: 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The block's requested new size. 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * block :: 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The block's current address. 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 1360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * New block address. 0~in case of memory shortage. 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * In case of error, the old block must still be available. 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void* 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Realloc_Func)( FT_Memory memory, 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project long cur_size, 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project long new_size, 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* block ); 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_MemoryRec 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 1550a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project * A structure used to describe a given memory manager to FreeType~2. 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @fields: 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * user :: 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A generic typeless pointer for user data. 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * alloc :: 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer type to an allocation function. 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * free :: 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer type to an memory freeing function. 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * realloc :: 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A pointer type to a reallocation function. 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project struct FT_MemoryRec_ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user; 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Alloc_Func alloc; 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Free_Func free; 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Realloc_Func realloc; 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }; 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* I / O M A N A G E M E N T */ 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 189049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @type: 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Stream 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to an input stream. 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_StreamRec_* FT_Stream; 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_StreamDesc 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 204049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A union type used to store either a long or a pointer. This is used 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * to store a file descriptor or a `FILE*' in an input stream. 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef union FT_StreamDesc_ 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project long value; 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* pointer; 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_StreamDesc; 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Stream_IoFunc 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to seek and read data from a given input stream. 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * stream :: 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the source stream. 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * offset :: 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The offset of read in stream (always from start). 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 232049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * buffer :: 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The address of the read buffer. 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 235049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * count :: 236049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The number of bytes to read from the stream. 237049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 238049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @return: 239049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The number of bytes effectively read by the stream. 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @note: 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This function might be called to perform a seek or skip operation 243aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich * with a `count' of~0. A non-zero return value then indicates an 244aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich * error. 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef unsigned long 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Stream_IoFunc)( FT_Stream stream, 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned long offset, 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char* buffer, 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned long count ); 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @functype: 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_Stream_CloseFunc 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A function used to close a given input stream. 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * stream :: 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A handle to the target stream. 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*FT_Stream_CloseFunc)( FT_Stream stream ); 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /************************************************************************* 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @struct: 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * FT_StreamRec 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @description: 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * A structure used to describe an input stream. 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @input: 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * base :: 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * For memory-based streams, this is the address of the first stream 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * byte in memory. This field should always be set to NULL for 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * disk-based streams. 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * size :: 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The stream size in bytes. 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * pos :: 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The current position within the stream. 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * descriptor :: 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This field is a union that can hold an integer or a pointer. It is 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * used by stream implementations to store file descriptors or `FILE*' 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * pointers. 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * pathname :: 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This field is completely ignored by FreeType. However, it is often 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * useful during debugging to use it to store the stream's filename 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * (where available). 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * read :: 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The stream's input function. 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * close :: 305aacb8e1368a883fcbc9fe64fd0e460cef9c9b20cNick Kralevich * The stream's close function. 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * memory :: 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * The memory manager to use to preload frames. This is set 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * internally by FreeType and shouldn't be touched by stream 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * implementations. 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * cursor :: 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This field is set and used internally by FreeType when parsing 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * frames. 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * limit :: 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * This field is set and used internally by FreeType when parsing 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * frames. 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct FT_StreamRec_ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char* base; 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned long size; 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned long pos; 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_StreamDesc descriptor; 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_StreamDesc pathname; 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream_IoFunc read; 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Stream_CloseFunc close; 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char* cursor; 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project unsigned char* limit; 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } FT_StreamRec; 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __FTSYSTEM_H__ */ 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 348