FreeType-2.1.10 API Reference
System Interface
Synopsis
#FT_MemoryFT_Memory #FT_MemoryRecFT_MemoryRec #FT_Stream_CloseFuncFT_Stream_CloseFunc #FT_Alloc_FuncFT_Alloc_Func #FT_StreamFT_Stream #FT_StreamRecFT_StreamRec #FT_Free_FuncFT_Free_Func #FT_StreamDescFT_StreamDesc #FT_Realloc_FuncFT_Realloc_Func #FT_Stream_IoFuncFT_Stream_IoFunc This section contains various definitions related to memory management and i/o access. You need to understand this information if you want to use a custom memory manager or you own input i/o streams.
FT_Memory 
  
typedef struct FT_MemoryRec_*  FT_Memory;
A handle to a given memory manager object, defined with a ft2-system_interface.html#FT_MemoryRecFT_MemoryRec  structure.
FT_Alloc_Func 
  
typedef void*
  (*
FT_Alloc_Func)( ft2-system_interface.html#FT_MemoryFT_Memory   memory,
                    
long       size );
A function used to allocate `size' bytes from `memory'.
input memory A handle to the source memory manager.
size The size in bytes to allocate.
return Address of new memory block. 0 in case of failure.
FT_Free_Func 
  
typedef void  (*
FT_Free_Func)( ft2-system_interface.html#FT_MemoryFT_Memory   memory,
                   
void*      block );
A function used to release a given block of memory.
input memory A handle to the source memory manager.
block The address of the target memory block.
FT_Realloc_Func 
  
typedef void*
  (*
FT_Realloc_Func)( ft2-system_interface.html#FT_MemoryFT_Memory   memory,
                      
long       cur_size,
                      
long       new_size,
                      
void*      block );
a function used to re-allocate a given block of memory.
input memory A handle to the source memory manager.
cur_size The block's current size in bytes.
new_size The block's requested new size.
block The block's current address.
return New block address. 0 in case of memory shortage.
note In case of error, the old block must still be available.
FT_MemoryRec 
  
struct  FT_MemoryRec_
  {
    
void*            user;
    
ft2-system_interface.html#FT_Alloc_FuncFT_Alloc_Func     alloc;
    
ft2-system_interface.html#FT_Free_FuncFT_Free_Func      free;
    
ft2-system_interface.html#FT_Realloc_FuncFT_Realloc_Func   realloc;
  };
A structure used to describe a given memory manager to FreeType 2.
fields user A generic typeless pointer for user data.
alloc A pointer type to an allocation function.
free A pointer type to an memory freeing function.
realloc A pointer type to a reallocation function.
FT_Stream 
  
typedef struct FT_StreamRec_*  FT_Stream;
A handle to an input stream.
FT_StreamDesc 
  
typedef union  FT_StreamDesc_
  {
    
long   value;
    
void*  pointer;
  } 
FT_StreamDesc;
A union type used to store either a long or a pointer. This is used to store a file descriptor or a FILE* in an input stream.
FT_Stream_IoFunc 
  
typedef unsigned long  (*
FT_Stream_IoFunc)( ft2-system_interface.html#FT_StreamFT_Stream        stream,
                       
unsigned long   offset,
                       
unsigned char*  buffer,
                       
unsigned long   count );
A function used to seek and read data from a given input stream.
input stream A handle to the source stream.
offset The offset of read in stream (always from start).
buffer The address of the read buffer.
count The number of bytes to read from the stream.
return The number of bytes effectively read by the stream.
note This function might be called to perform a seek or skip operation with a `count' of 0.
FT_Stream_CloseFunc 
  
typedef void  (*
FT_Stream_CloseFunc)( ft2-system_interface.html#FT_StreamFT_Stream   stream );
A function used to close a given input stream.
input stream A handle to the target stream.
FT_StreamRec 
  
typedef struct  FT_StreamRec_
  {
    
unsigned char*       base;
    
unsigned long        size;
    
unsigned long        pos;
    
ft2-system_interface.html#FT_StreamDescFT_StreamDesc         descriptor;
    
ft2-system_interface.html#FT_StreamDescFT_StreamDesc         pathname;
    
ft2-system_interface.html#FT_Stream_IoFuncFT_Stream_IoFunc      read;
    
ft2-system_interface.html#FT_Stream_CloseFuncFT_Stream_CloseFunc   close;
    
ft2-system_interface.html#FT_MemoryFT_Memory             memory;
    
unsigned char*       cursor;
    
unsigned char*       limit;
  } 
FT_StreamRec;
A structure used to describe an input stream.
input base For memory-based streams, this is the address of the first stream byte in memory. This field should always be set to NULL for disk-based streams.
size The stream size in bytes.
pos The current position within the stream.
descriptor This field is a union that can hold an integer or a pointer. It is used by stream implementations to store file descriptors or FILE* pointers.
pathname This field is completely ignored by FreeType. However, it is often useful during debugging to use it to store the stream's filename (where available).
read The stream's input function.
close The stream;s close function.
memory The memory manager to use to preload frames. This is set internally by FreeType and shouldn't be touched by stream implementations.
cursor This field is set and used internally by FreeType when parsing frames.
limit This field is set and used internally by FreeType when parsing frames.
