/************************************************************************** * * ftsystem.h 1.0 * * FreeType low-level system interface definition * * This file contains the definitions of the stream and memory interfaces * used by FreeType. * * * Copyright 1996-1999 by * David Turner, Robert Wilhelm, and Werner Lemberg * * This file is part of the FreeType project, and may only be used * modified and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * **************************************************************************/ #ifndef FTSYSTEM_H #define FTSYSTEM_H /************************************************************************* * * M E M O R Y M A N A G E M E N T * *************************************************************************/ typedef struct FT_MemoryRec_* FT_Memory; typedef void* (*FT_Alloc_Func)( FT_Memory memory, long size ); typedef void (*FT_Free_Func)( FT_Memory memory, void* block ); typedef void* (*FT_Realloc_Func)( FT_Memory memory, long cur_size, long new_size, void* block ); struct FT_MemoryRec_ { void* user; FT_Alloc_Func alloc; FT_Free_Func free; FT_Realloc_Func realloc; }; /************************************************************************* * * I / O M A N A G E M E N T * *************************************************************************/ typedef union FT_StreamDesc_ { long value; void* pointer; } FT_StreamDesc; typedef struct FT_StreamRec_* FT_Stream; typedef unsigned long (*FT_Stream_IO)( FT_Stream stream, unsigned long offset, char* buffer, unsigned long count ); typedef void (*FT_Stream_Close)( FT_Stream stream ); struct FT_StreamRec_ { char* base; unsigned long size; unsigned long pos; FT_StreamDesc descriptor; FT_StreamDesc pathname; /* ignored by FreeType - useful for debugging */ FT_Stream_IO read; FT_Stream_Close close; FT_Memory memory; char* cursor; char* limit; }; #endif /* FTSYSTEM_H */