ReactOS 0.4.16-dev-1019-g2c2cdfd
ftstream.h File Reference
#include <ft2build.h>
Include dependency graph for ftstream.h:

Go to the source code of this file.

Classes

struct  FT_Frame_Field_
 

Macros

#define FT_FRAME_OP_SHIFT   2
 
#define FT_FRAME_OP_SIGNED   1
 
#define FT_FRAME_OP_LITTLE   2
 
#define FT_FRAME_OP_COMMAND(x)   ( x >> FT_FRAME_OP_SHIFT )
 
#define FT_MAKE_FRAME_OP(command, little, sign)    ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign )
 
#define FT_FRAME_OP_END   0
 
#define FT_FRAME_OP_START   1 /* start a new frame */
 
#define FT_FRAME_OP_BYTE   2 /* read 1-byte value */
 
#define FT_FRAME_OP_SHORT   3 /* read 2-byte value */
 
#define FT_FRAME_OP_LONG   4 /* read 4-byte value */
 
#define FT_FRAME_OP_OFF3   5 /* read 3-byte value */
 
#define FT_FRAME_OP_BYTES   6 /* read a bytes sequence */
 
#define FT_FIELD_SIZE(f)    (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f )
 
#define FT_FIELD_SIZE_DELTA(f)    (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] )
 
#define FT_FIELD_OFFSET(f)    (FT_UShort)( offsetof( FT_STRUCTURE, f ) )
 
#define FT_FRAME_FIELD(frame_op, field)
 
#define FT_MAKE_EMPTY_FIELD(frame_op)   { frame_op, 0, 0 }
 
#define FT_FRAME_START(size)   { ft_frame_start, 0, size }
 
#define FT_FRAME_END   { ft_frame_end, 0, 0 }
 
#define FT_FRAME_LONG(f)   FT_FRAME_FIELD( ft_frame_long_be, f )
 
#define FT_FRAME_ULONG(f)   FT_FRAME_FIELD( ft_frame_ulong_be, f )
 
#define FT_FRAME_SHORT(f)   FT_FRAME_FIELD( ft_frame_short_be, f )
 
#define FT_FRAME_USHORT(f)   FT_FRAME_FIELD( ft_frame_ushort_be, f )
 
#define FT_FRAME_OFF3(f)   FT_FRAME_FIELD( ft_frame_off3_be, f )
 
#define FT_FRAME_UOFF3(f)   FT_FRAME_FIELD( ft_frame_uoff3_be, f )
 
#define FT_FRAME_BYTE(f)   FT_FRAME_FIELD( ft_frame_byte, f )
 
#define FT_FRAME_CHAR(f)   FT_FRAME_FIELD( ft_frame_schar, f )
 
#define FT_FRAME_LONG_LE(f)   FT_FRAME_FIELD( ft_frame_long_le, f )
 
#define FT_FRAME_ULONG_LE(f)   FT_FRAME_FIELD( ft_frame_ulong_le, f )
 
#define FT_FRAME_SHORT_LE(f)   FT_FRAME_FIELD( ft_frame_short_le, f )
 
#define FT_FRAME_USHORT_LE(f)   FT_FRAME_FIELD( ft_frame_ushort_le, f )
 
#define FT_FRAME_OFF3_LE(f)   FT_FRAME_FIELD( ft_frame_off3_le, f )
 
#define FT_FRAME_UOFF3_LE(f)   FT_FRAME_FIELD( ft_frame_uoff3_le, f )
 
#define FT_FRAME_SKIP_LONG   { ft_frame_long_be, 0, 0 }
 
#define FT_FRAME_SKIP_SHORT   { ft_frame_short_be, 0, 0 }
 
#define FT_FRAME_SKIP_BYTE   { ft_frame_byte, 0, 0 }
 
#define FT_FRAME_BYTES(field, count)
 
#define FT_FRAME_SKIP_BYTES(count)   { ft_frame_skip, count, 0 }
 
#define FT_BYTE_(p, i)   ( ((const FT_Byte*)(p))[(i)] )
 
#define FT_INT16(x)   ( (FT_Int16)(x) )
 
#define FT_UINT16(x)   ( (FT_UInt16)(x) )
 
#define FT_INT32(x)   ( (FT_Int32)(x) )
 
#define FT_UINT32(x)   ( (FT_UInt32)(x) )
 
#define FT_BYTE_U16(p, i, s)   ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) )
 
#define FT_BYTE_U32(p, i, s)   ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) )
 
#define FT_PEEK_SHORT(p)
 
#define FT_PEEK_USHORT(p)
 
#define FT_PEEK_LONG(p)
 
#define FT_PEEK_ULONG(p)
 
#define FT_PEEK_OFF3(p)
 
#define FT_PEEK_UOFF3(p)
 
#define FT_PEEK_SHORT_LE(p)
 
#define FT_PEEK_USHORT_LE(p)
 
#define FT_PEEK_LONG_LE(p)
 
#define FT_PEEK_ULONG_LE(p)
 
#define FT_PEEK_OFF3_LE(p)
 
#define FT_PEEK_UOFF3_LE(p)
 
#define FT_NEXT_CHAR(buffer)    ( (signed char)*buffer++ )
 
#define FT_NEXT_BYTE(buffer)    ( (unsigned char)*buffer++ )
 
#define FT_NEXT_SHORT(buffer)    ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) )
 
#define FT_NEXT_USHORT(buffer)    ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) )
 
#define FT_NEXT_OFF3(buffer)    ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) )
 
#define FT_NEXT_UOFF3(buffer)    ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) )
 
#define FT_NEXT_LONG(buffer)    ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) )
 
#define FT_NEXT_ULONG(buffer)    ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) )
 
#define FT_NEXT_SHORT_LE(buffer)    ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) )
 
#define FT_NEXT_USHORT_LE(buffer)    ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) )
 
#define FT_NEXT_OFF3_LE(buffer)    ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) )
 
#define FT_NEXT_UOFF3_LE(buffer)    ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) )
 
#define FT_NEXT_LONG_LE(buffer)    ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) )
 
#define FT_NEXT_ULONG_LE(buffer)    ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
 
#define FT_GET_MACRO(func, type)   ( (type)func( stream ) )
 
#define FT_GET_CHAR()   FT_GET_MACRO( FT_Stream_GetChar, FT_Char )
 
#define FT_GET_BYTE()   FT_GET_MACRO( FT_Stream_GetChar, FT_Byte )
 
#define FT_GET_SHORT()   FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
 
#define FT_GET_USHORT()   FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
 
#define FT_GET_OFF3()   FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long )
 
#define FT_GET_UOFF3()   FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )
 
#define FT_GET_LONG()   FT_GET_MACRO( FT_Stream_GetULong, FT_Long )
 
#define FT_GET_ULONG()   FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
 
#define FT_GET_TAG4()   FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
 
#define FT_GET_SHORT_LE()   FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short )
 
#define FT_GET_USHORT_LE()   FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort )
 
#define FT_GET_LONG_LE()   FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long )
 
#define FT_GET_ULONG_LE()   FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )
 
#define FT_READ_MACRO(func, type, var)
 
#define FT_READ_BYTE(var)   FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
 
#define FT_READ_CHAR(var)   FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
 
#define FT_READ_SHORT(var)   FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
 
#define FT_READ_USHORT(var)   FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
 
#define FT_READ_OFF3(var)   FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var )
 
#define FT_READ_UOFF3(var)   FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )
 
#define FT_READ_LONG(var)   FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )
 
#define FT_READ_ULONG(var)   FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )
 
#define FT_READ_SHORT_LE(var)   FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var )
 
#define FT_READ_USHORT_LE(var)   FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var )
 
#define FT_READ_LONG_LE(var)   FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var )
 
#define FT_READ_ULONG_LE(var)   FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var )
 
#define FT_STREAM_POS()    FT_Stream_Pos( stream )
 
#define FT_STREAM_SEEK(position)
 
#define FT_STREAM_SKIP(distance)
 
#define FT_STREAM_READ(buffer, count)
 
#define FT_STREAM_READ_AT(position, buffer, count)
 
#define FT_STREAM_READ_FIELDS(fields, object)    FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) )
 
#define FT_FRAME_ENTER(size)
 
#define FT_FRAME_EXIT()    FT_DEBUG_INNER( FT_Stream_ExitFrame( stream ) )
 
#define FT_FRAME_EXTRACT(size, bytes)
 
#define FT_FRAME_RELEASE(bytes)
 

Typedefs

typedef enum FT_Frame_Op_ FT_Frame_Op
 
typedef struct FT_Frame_Field_ FT_Frame_Field
 

Enumerations

enum  FT_Frame_Op_ {
  ft_frame_end = 0 , ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ) , ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ) , ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ) ,
  ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ) , ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ) , ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ) , ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ) ,
  ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ) , ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ) , ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ) , ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ) ,
  ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ) , ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ) , ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ) , ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ) ,
  ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ) , ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 )
}
 

Functions

 FT_Stream_Open (FT_Stream stream, const char *filepathname)
 
 FT_Stream_New (FT_Library library, const FT_Open_Args *args, FT_Stream *astream)
 
 FT_Stream_Free (FT_Stream stream, FT_Int external)
 
 FT_Stream_OpenMemory (FT_Stream stream, const FT_Byte *base, FT_ULong size)
 
 FT_Stream_Close (FT_Stream stream)
 
 FT_Stream_Seek (FT_Stream stream, FT_ULong pos)
 
 FT_Stream_Skip (FT_Stream stream, FT_Long distance)
 
 FT_Stream_Pos (FT_Stream stream)
 
 FT_Stream_Read (FT_Stream stream, FT_Byte *buffer, FT_ULong count)
 
 FT_Stream_ReadAt (FT_Stream stream, FT_ULong pos, FT_Byte *buffer, FT_ULong count)
 
 FT_Stream_TryRead (FT_Stream stream, FT_Byte *buffer, FT_ULong count)
 
 FT_Stream_EnterFrame (FT_Stream stream, FT_ULong count)
 
 FT_Stream_ExitFrame (FT_Stream stream)
 
 FT_Stream_ExtractFrame (FT_Stream stream, FT_ULong count, FT_Byte **pbytes)
 
 FT_Stream_ReleaseFrame (FT_Stream stream, FT_Byte **pbytes)
 
 FT_Stream_GetChar (FT_Stream stream)
 
 FT_Stream_GetUShort (FT_Stream stream)
 
 FT_Stream_GetUOffset (FT_Stream stream)
 
 FT_Stream_GetULong (FT_Stream stream)
 
 FT_Stream_GetUShortLE (FT_Stream stream)
 
 FT_Stream_GetULongLE (FT_Stream stream)
 
 FT_Stream_ReadChar (FT_Stream stream, FT_Error *error)
 
 FT_Stream_ReadUShort (FT_Stream stream, FT_Error *error)
 
 FT_Stream_ReadUOffset (FT_Stream stream, FT_Error *error)
 
 FT_Stream_ReadULong (FT_Stream stream, FT_Error *error)
 
 FT_Stream_ReadUShortLE (FT_Stream stream, FT_Error *error)
 
 FT_Stream_ReadULongLE (FT_Stream stream, FT_Error *error)
 
 FT_Stream_ReadFields (FT_Stream stream, const FT_Frame_Field *fields, void *structure)
 

Macro Definition Documentation

◆ FT_BYTE_

#define FT_BYTE_ (   p,
  i 
)    ( ((const FT_Byte*)(p))[(i)] )

Definition at line 156 of file ftstream.h.

◆ FT_BYTE_U16

#define FT_BYTE_U16 (   p,
  i,
  s 
)    ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) )

Definition at line 164 of file ftstream.h.

◆ FT_BYTE_U32

#define FT_BYTE_U32 (   p,
  i,
  s 
)    ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) )

Definition at line 165 of file ftstream.h.

◆ FT_FIELD_OFFSET

#define FT_FIELD_OFFSET (   f)     (FT_UShort)( offsetof( FT_STRUCTURE, f ) )

Definition at line 105 of file ftstream.h.

◆ FT_FIELD_SIZE

#define FT_FIELD_SIZE (   f)     (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f )

Definition at line 99 of file ftstream.h.

◆ FT_FIELD_SIZE_DELTA

#define FT_FIELD_SIZE_DELTA (   f)     (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] )

Definition at line 102 of file ftstream.h.

◆ FT_FRAME_BYTE

#define FT_FRAME_BYTE (   f)    FT_FRAME_FIELD( ft_frame_byte, f )

Definition at line 126 of file ftstream.h.

◆ FT_FRAME_BYTES

#define FT_FRAME_BYTES (   field,
  count 
)
Value:
{ \
count, \
FT_FIELD_OFFSET( field ) \
}
@ ft_frame_bytes
Definition: ftstream.h:80
GLuint GLuint GLsizei count
Definition: gl.h:1545
Definition: parser.c:44

Definition at line 140 of file ftstream.h.

◆ FT_FRAME_CHAR

#define FT_FRAME_CHAR (   f)    FT_FRAME_FIELD( ft_frame_schar, f )

Definition at line 127 of file ftstream.h.

◆ FT_FRAME_END

#define FT_FRAME_END   { ft_frame_end, 0, 0 }

Definition at line 118 of file ftstream.h.

◆ FT_FRAME_ENTER

#define FT_FRAME_ENTER (   size)
Value:
(FT_ULong)(size) ) ) )
#define FT_SET_ERROR(expression)
Definition: ftmemory.h:42
#define FT_DEBUG_INNER(exp)
Definition: ftmemory.h:103
FT_Stream_EnterFrame(FT_Stream stream, FT_ULong count)
Definition: ftstream.c:235
unsigned long FT_ULong
Definition: fttypes.h:253
GLsizeiptr size
Definition: glext.h:5919
Definition: parse.h:23

Definition at line 537 of file ftstream.h.

◆ FT_FRAME_EXIT

#define FT_FRAME_EXIT ( )     FT_DEBUG_INNER( FT_Stream_ExitFrame( stream ) )

Definition at line 542 of file ftstream.h.

◆ FT_FRAME_EXTRACT

#define FT_FRAME_EXTRACT (   size,
  bytes 
)
Value:
(FT_ULong)(size), \
(FT_Byte**)&(bytes) ) ) )
static unsigned char bytes[4]
Definition: adnsresfilter.c:74
FT_Stream_ExtractFrame(FT_Stream stream, FT_ULong count, FT_Byte **pbytes)
Definition: ftstream.c:193
unsigned char FT_Byte
Definition: fttypes.h:154

Definition at line 545 of file ftstream.h.

◆ FT_FRAME_FIELD

#define FT_FRAME_FIELD (   frame_op,
  field 
)
Value:
{ \
frame_op, \
FT_FIELD_SIZE( field ), \
FT_FIELD_OFFSET( field ) \
}

Definition at line 108 of file ftstream.h.

◆ FT_FRAME_LONG

#define FT_FRAME_LONG (   f)    FT_FRAME_FIELD( ft_frame_long_be, f )

Definition at line 120 of file ftstream.h.

◆ FT_FRAME_LONG_LE

#define FT_FRAME_LONG_LE (   f)    FT_FRAME_FIELD( ft_frame_long_le, f )

Definition at line 129 of file ftstream.h.

◆ FT_FRAME_OFF3

#define FT_FRAME_OFF3 (   f)    FT_FRAME_FIELD( ft_frame_off3_be, f )

Definition at line 124 of file ftstream.h.

◆ FT_FRAME_OFF3_LE

#define FT_FRAME_OFF3_LE (   f)    FT_FRAME_FIELD( ft_frame_off3_le, f )

Definition at line 133 of file ftstream.h.

◆ FT_FRAME_OP_BYTE

#define FT_FRAME_OP_BYTE   2 /* read 1-byte value */

Definition at line 50 of file ftstream.h.

◆ FT_FRAME_OP_BYTES

#define FT_FRAME_OP_BYTES   6 /* read a bytes sequence */

Definition at line 54 of file ftstream.h.

◆ FT_FRAME_OP_COMMAND

#define FT_FRAME_OP_COMMAND (   x)    ( x >> FT_FRAME_OP_SHIFT )

Definition at line 43 of file ftstream.h.

◆ FT_FRAME_OP_END

#define FT_FRAME_OP_END   0

Definition at line 48 of file ftstream.h.

◆ FT_FRAME_OP_LITTLE

#define FT_FRAME_OP_LITTLE   2

Definition at line 42 of file ftstream.h.

◆ FT_FRAME_OP_LONG

#define FT_FRAME_OP_LONG   4 /* read 4-byte value */

Definition at line 52 of file ftstream.h.

◆ FT_FRAME_OP_OFF3

#define FT_FRAME_OP_OFF3   5 /* read 3-byte value */

Definition at line 53 of file ftstream.h.

◆ FT_FRAME_OP_SHIFT

#define FT_FRAME_OP_SHIFT   2

Definition at line 40 of file ftstream.h.

◆ FT_FRAME_OP_SHORT

#define FT_FRAME_OP_SHORT   3 /* read 2-byte value */

Definition at line 51 of file ftstream.h.

◆ FT_FRAME_OP_SIGNED

#define FT_FRAME_OP_SIGNED   1

Definition at line 41 of file ftstream.h.

◆ FT_FRAME_OP_START

#define FT_FRAME_OP_START   1 /* start a new frame */

Definition at line 49 of file ftstream.h.

◆ FT_FRAME_RELEASE

#define FT_FRAME_RELEASE (   bytes)
Value:
(FT_Byte**)&(bytes) ) )
FT_Stream_ReleaseFrame(FT_Stream stream, FT_Byte **pbytes)
Definition: ftstream.c:215

Definition at line 551 of file ftstream.h.

◆ FT_FRAME_SHORT

#define FT_FRAME_SHORT (   f)    FT_FRAME_FIELD( ft_frame_short_be, f )

Definition at line 122 of file ftstream.h.

◆ FT_FRAME_SHORT_LE

#define FT_FRAME_SHORT_LE (   f)    FT_FRAME_FIELD( ft_frame_short_le, f )

Definition at line 131 of file ftstream.h.

◆ FT_FRAME_SKIP_BYTE

#define FT_FRAME_SKIP_BYTE   { ft_frame_byte, 0, 0 }

Definition at line 138 of file ftstream.h.

◆ FT_FRAME_SKIP_BYTES

#define FT_FRAME_SKIP_BYTES (   count)    { ft_frame_skip, count, 0 }

Definition at line 147 of file ftstream.h.

◆ FT_FRAME_SKIP_LONG

#define FT_FRAME_SKIP_LONG   { ft_frame_long_be, 0, 0 }

Definition at line 136 of file ftstream.h.

◆ FT_FRAME_SKIP_SHORT

#define FT_FRAME_SKIP_SHORT   { ft_frame_short_be, 0, 0 }

Definition at line 137 of file ftstream.h.

◆ FT_FRAME_START

#define FT_FRAME_START (   size)    { ft_frame_start, 0, size }

Definition at line 117 of file ftstream.h.

◆ FT_FRAME_ULONG

#define FT_FRAME_ULONG (   f)    FT_FRAME_FIELD( ft_frame_ulong_be, f )

Definition at line 121 of file ftstream.h.

◆ FT_FRAME_ULONG_LE

#define FT_FRAME_ULONG_LE (   f)    FT_FRAME_FIELD( ft_frame_ulong_le, f )

Definition at line 130 of file ftstream.h.

◆ FT_FRAME_UOFF3

#define FT_FRAME_UOFF3 (   f)    FT_FRAME_FIELD( ft_frame_uoff3_be, f )

Definition at line 125 of file ftstream.h.

◆ FT_FRAME_UOFF3_LE

#define FT_FRAME_UOFF3_LE (   f)    FT_FRAME_FIELD( ft_frame_uoff3_le, f )

Definition at line 134 of file ftstream.h.

◆ FT_FRAME_USHORT

#define FT_FRAME_USHORT (   f)    FT_FRAME_FIELD( ft_frame_ushort_be, f )

Definition at line 123 of file ftstream.h.

◆ FT_FRAME_USHORT_LE

#define FT_FRAME_USHORT_LE (   f)    FT_FRAME_FIELD( ft_frame_ushort_le, f )

Definition at line 132 of file ftstream.h.

◆ FT_GET_BYTE

#define FT_GET_BYTE ( )    FT_GET_MACRO( FT_Stream_GetChar, FT_Byte )

Definition at line 298 of file ftstream.h.

◆ FT_GET_CHAR

#define FT_GET_CHAR ( )    FT_GET_MACRO( FT_Stream_GetChar, FT_Char )

Definition at line 297 of file ftstream.h.

◆ FT_GET_LONG

#define FT_GET_LONG ( )    FT_GET_MACRO( FT_Stream_GetULong, FT_Long )

Definition at line 303 of file ftstream.h.

◆ FT_GET_LONG_LE

#define FT_GET_LONG_LE ( )    FT_GET_MACRO( FT_Stream_GetULongLE, FT_Long )

Definition at line 309 of file ftstream.h.

◆ FT_GET_MACRO

#define FT_GET_MACRO (   func,
  type 
)    ( (type)func( stream ) )

Definition at line 295 of file ftstream.h.

◆ FT_GET_OFF3

#define FT_GET_OFF3 ( )    FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long )

Definition at line 301 of file ftstream.h.

◆ FT_GET_SHORT

#define FT_GET_SHORT ( )    FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )

Definition at line 299 of file ftstream.h.

◆ FT_GET_SHORT_LE

#define FT_GET_SHORT_LE ( )    FT_GET_MACRO( FT_Stream_GetUShortLE, FT_Short )

Definition at line 307 of file ftstream.h.

◆ FT_GET_TAG4

#define FT_GET_TAG4 ( )    FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )

Definition at line 305 of file ftstream.h.

◆ FT_GET_ULONG

#define FT_GET_ULONG ( )    FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )

Definition at line 304 of file ftstream.h.

◆ FT_GET_ULONG_LE

#define FT_GET_ULONG_LE ( )    FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )

Definition at line 310 of file ftstream.h.

◆ FT_GET_UOFF3

#define FT_GET_UOFF3 ( )    FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )

Definition at line 302 of file ftstream.h.

◆ FT_GET_USHORT

#define FT_GET_USHORT ( )    FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )

Definition at line 300 of file ftstream.h.

◆ FT_GET_USHORT_LE

#define FT_GET_USHORT_LE ( )    FT_GET_MACRO( FT_Stream_GetUShortLE, FT_UShort )

Definition at line 308 of file ftstream.h.

◆ FT_INT16

#define FT_INT16 (   x)    ( (FT_Int16)(x) )

Definition at line 158 of file ftstream.h.

◆ FT_INT32

#define FT_INT32 (   x)    ( (FT_Int32)(x) )

Definition at line 160 of file ftstream.h.

◆ FT_MAKE_EMPTY_FIELD

#define FT_MAKE_EMPTY_FIELD (   frame_op)    { frame_op, 0, 0 }

Definition at line 115 of file ftstream.h.

◆ FT_MAKE_FRAME_OP

#define FT_MAKE_FRAME_OP (   command,
  little,
  sign 
)     ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign )

Definition at line 45 of file ftstream.h.

◆ FT_NEXT_BYTE

#define FT_NEXT_BYTE (   buffer)     ( (unsigned char)*buffer++ )

Definition at line 227 of file ftstream.h.

◆ FT_NEXT_CHAR

#define FT_NEXT_CHAR (   buffer)     ( (signed char)*buffer++ )

Definition at line 224 of file ftstream.h.

◆ FT_NEXT_LONG

#define FT_NEXT_LONG (   buffer)     ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) )

Definition at line 242 of file ftstream.h.

◆ FT_NEXT_LONG_LE

#define FT_NEXT_LONG_LE (   buffer)     ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) )

Definition at line 261 of file ftstream.h.

◆ FT_NEXT_OFF3

#define FT_NEXT_OFF3 (   buffer)     ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) )

Definition at line 236 of file ftstream.h.

◆ FT_NEXT_OFF3_LE

#define FT_NEXT_OFF3_LE (   buffer)     ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) )

Definition at line 255 of file ftstream.h.

◆ FT_NEXT_SHORT

#define FT_NEXT_SHORT (   buffer)     ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) )

Definition at line 230 of file ftstream.h.

◆ FT_NEXT_SHORT_LE

#define FT_NEXT_SHORT_LE (   buffer)     ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) )

Definition at line 249 of file ftstream.h.

◆ FT_NEXT_ULONG

#define FT_NEXT_ULONG (   buffer)     ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) )

Definition at line 245 of file ftstream.h.

◆ FT_NEXT_ULONG_LE

#define FT_NEXT_ULONG_LE (   buffer)     ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )

Definition at line 264 of file ftstream.h.

◆ FT_NEXT_UOFF3

#define FT_NEXT_UOFF3 (   buffer)     ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) )

Definition at line 239 of file ftstream.h.

◆ FT_NEXT_UOFF3_LE

#define FT_NEXT_UOFF3_LE (   buffer)     ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) )

Definition at line 258 of file ftstream.h.

◆ FT_NEXT_USHORT

#define FT_NEXT_USHORT (   buffer)     ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) )

Definition at line 233 of file ftstream.h.

◆ FT_NEXT_USHORT_LE

#define FT_NEXT_USHORT_LE (   buffer)     ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) )

Definition at line 252 of file ftstream.h.

◆ FT_PEEK_LONG

#define FT_PEEK_LONG (   p)
Value:
FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \
FT_BYTE_U32( p, 1, 16 ) | \
FT_BYTE_U32( p, 2, 8 ) | \
FT_BYTE_U32( p, 3, 0 ) )
#define FT_INT32(x)
Definition: ftstream.h:160
#define FT_BYTE_U32(p, i, s)
Definition: ftstream.h:165
GLfloat GLfloat p
Definition: glext.h:8902

Definition at line 178 of file ftstream.h.

◆ FT_PEEK_LONG_LE

#define FT_PEEK_LONG_LE (   p)
Value:
FT_INT32( FT_BYTE_U32( p, 3, 24 ) | \
FT_BYTE_U32( p, 2, 16 ) | \
FT_BYTE_U32( p, 1, 8 ) | \
FT_BYTE_U32( p, 0, 0 ) )

Definition at line 202 of file ftstream.h.

◆ FT_PEEK_OFF3

#define FT_PEEK_OFF3 (   p)
Value:
FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \
FT_BYTE_U32( p, 1, 8 ) | \
FT_BYTE_U32( p, 2, 0 ) )

Definition at line 188 of file ftstream.h.

◆ FT_PEEK_OFF3_LE

#define FT_PEEK_OFF3_LE (   p)
Value:
FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \
FT_BYTE_U32( p, 1, 8 ) | \
FT_BYTE_U32( p, 0, 0 ) )

Definition at line 212 of file ftstream.h.

◆ FT_PEEK_SHORT

#define FT_PEEK_SHORT (   p)
Value:
FT_INT16( FT_BYTE_U16( p, 0, 8 ) | \
FT_BYTE_U16( p, 1, 0 ) )
#define FT_INT16(x)
Definition: ftstream.h:158
#define FT_BYTE_U16(p, i, s)
Definition: ftstream.h:164

Definition at line 172 of file ftstream.h.

◆ FT_PEEK_SHORT_LE

#define FT_PEEK_SHORT_LE (   p)
Value:
FT_INT16( FT_BYTE_U16( p, 1, 8 ) | \
FT_BYTE_U16( p, 0, 0 ) )

Definition at line 196 of file ftstream.h.

◆ FT_PEEK_ULONG

#define FT_PEEK_ULONG (   p)
Value:
FT_UINT32( FT_BYTE_U32( p, 0, 24 ) | \
FT_BYTE_U32( p, 1, 16 ) | \
FT_BYTE_U32( p, 2, 8 ) | \
FT_BYTE_U32( p, 3, 0 ) )
#define FT_UINT32(x)
Definition: ftstream.h:161

Definition at line 183 of file ftstream.h.

◆ FT_PEEK_ULONG_LE

#define FT_PEEK_ULONG_LE (   p)
Value:
FT_UINT32( FT_BYTE_U32( p, 3, 24 ) | \
FT_BYTE_U32( p, 2, 16 ) | \
FT_BYTE_U32( p, 1, 8 ) | \
FT_BYTE_U32( p, 0, 0 ) )

Definition at line 207 of file ftstream.h.

◆ FT_PEEK_UOFF3

#define FT_PEEK_UOFF3 (   p)
Value:
FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \
FT_BYTE_U32( p, 1, 8 ) | \
FT_BYTE_U32( p, 2, 0 ) )

Definition at line 192 of file ftstream.h.

◆ FT_PEEK_UOFF3_LE

#define FT_PEEK_UOFF3_LE (   p)
Value:
FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \
FT_BYTE_U32( p, 1, 8 ) | \
FT_BYTE_U32( p, 0, 0 ) )

Definition at line 216 of file ftstream.h.

◆ FT_PEEK_USHORT

#define FT_PEEK_USHORT (   p)
Value:
FT_UINT16( FT_BYTE_U16( p, 0, 8 ) | \
FT_BYTE_U16( p, 1, 0 ) )
#define FT_UINT16(x)
Definition: ftstream.h:159

Definition at line 175 of file ftstream.h.

◆ FT_PEEK_USHORT_LE

#define FT_PEEK_USHORT_LE (   p)
Value:
FT_UINT16( FT_BYTE_U16( p, 1, 8 ) | \
FT_BYTE_U16( p, 0, 0 ) )

Definition at line 199 of file ftstream.h.

◆ FT_READ_BYTE

#define FT_READ_BYTE (   var)    FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )

Definition at line 325 of file ftstream.h.

◆ FT_READ_CHAR

#define FT_READ_CHAR (   var)    FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )

Definition at line 326 of file ftstream.h.

◆ FT_READ_LONG

#define FT_READ_LONG (   var)    FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )

Definition at line 331 of file ftstream.h.

◆ FT_READ_LONG_LE

#define FT_READ_LONG_LE (   var)    FT_READ_MACRO( FT_Stream_ReadULongLE, FT_Long, var )

Definition at line 336 of file ftstream.h.

◆ FT_READ_MACRO

#define FT_READ_MACRO (   func,
  type,
  var 
)
Value:
( var = (type)func( stream, &error ), \
return FT_Err_Ok
Definition: ftbbox.c:527
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLenum func
Definition: glext.h:6028
#define error(str)
Definition: mkdosfs.c:1605
const char * var
Definition: shader.c:5666

Definition at line 314 of file ftstream.h.

◆ FT_READ_OFF3

#define FT_READ_OFF3 (   var)    FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var )

Definition at line 329 of file ftstream.h.

◆ FT_READ_SHORT

#define FT_READ_SHORT (   var)    FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )

Definition at line 327 of file ftstream.h.

◆ FT_READ_SHORT_LE

#define FT_READ_SHORT_LE (   var)    FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_Short, var )

Definition at line 334 of file ftstream.h.

◆ FT_READ_ULONG

#define FT_READ_ULONG (   var)    FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )

Definition at line 332 of file ftstream.h.

◆ FT_READ_ULONG_LE

#define FT_READ_ULONG_LE (   var)    FT_READ_MACRO( FT_Stream_ReadULongLE, FT_ULong, var )

Definition at line 337 of file ftstream.h.

◆ FT_READ_UOFF3

#define FT_READ_UOFF3 (   var)    FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )

Definition at line 330 of file ftstream.h.

◆ FT_READ_USHORT

#define FT_READ_USHORT (   var)    FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )

Definition at line 328 of file ftstream.h.

◆ FT_READ_USHORT_LE

#define FT_READ_USHORT_LE (   var)    FT_READ_MACRO( FT_Stream_ReadUShortLE, FT_UShort, var )

Definition at line 335 of file ftstream.h.

◆ FT_STREAM_POS

#define FT_STREAM_POS ( )     FT_Stream_Pos( stream )

Definition at line 511 of file ftstream.h.

◆ FT_STREAM_READ

#define FT_STREAM_READ (   buffer,
  count 
)
Value:
(FT_Byte*)(buffer), \
(FT_ULong)(count) ) )
FT_Stream_Read(FT_Stream stream, FT_Byte *buffer, FT_ULong count)
Definition: ftstream.c:110
GLuint buffer
Definition: glext.h:5915

Definition at line 522 of file ftstream.h.

◆ FT_STREAM_READ_AT

#define FT_STREAM_READ_AT (   position,
  buffer,
  count 
)
Value:
(FT_ULong)(position), \
(FT_Byte*)(buffer), \
(FT_ULong)(count) ) )
FT_Stream_ReadAt(FT_Stream stream, FT_ULong pos, FT_Byte *buffer, FT_ULong count)
Definition: ftstream.c:119

Definition at line 527 of file ftstream.h.

◆ FT_STREAM_READ_FIELDS

#define FT_STREAM_READ_FIELDS (   fields,
  object 
)     FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) )

Definition at line 533 of file ftstream.h.

◆ FT_STREAM_SEEK

#define FT_STREAM_SEEK (   position)
Value:
(FT_ULong)(position) ) )
FT_Stream_Seek(FT_Stream stream, FT_ULong pos)
Definition: ftstream.c:57

Definition at line 514 of file ftstream.h.

◆ FT_STREAM_SKIP

#define FT_STREAM_SKIP (   distance)
Value:
FT_Stream_Skip(FT_Stream stream, FT_Long distance)
Definition: ftstream.c:92
signed long FT_Long
Definition: fttypes.h:242
GLsizei GLsizei GLfloat distance
Definition: glext.h:11755

Definition at line 518 of file ftstream.h.

◆ FT_UINT16

#define FT_UINT16 (   x)    ( (FT_UInt16)(x) )

Definition at line 159 of file ftstream.h.

◆ FT_UINT32

#define FT_UINT32 (   x)    ( (FT_UInt32)(x) )

Definition at line 161 of file ftstream.h.

Typedef Documentation

◆ FT_Frame_Field

◆ FT_Frame_Op

Enumeration Type Documentation

◆ FT_Frame_Op_

Enumerator
ft_frame_end 
ft_frame_start 
ft_frame_byte 
ft_frame_schar 
ft_frame_ushort_be 
ft_frame_short_be 
ft_frame_ushort_le 
ft_frame_short_le 
ft_frame_ulong_be 
ft_frame_long_be 
ft_frame_ulong_le 
ft_frame_long_le 
ft_frame_uoff3_be 
ft_frame_off3_be 
ft_frame_uoff3_le 
ft_frame_off3_le 
ft_frame_bytes 
ft_frame_skip 

Definition at line 57 of file ftstream.h.

58 {
59 ft_frame_end = 0,
61
64
69
74
79
82
#define FT_FRAME_OP_SHORT
Definition: ftstream.h:51
@ ft_frame_uoff3_be
Definition: ftstream.h:75
@ ft_frame_byte
Definition: ftstream.h:62
@ ft_frame_short_le
Definition: ftstream.h:68
@ ft_frame_off3_be
Definition: ftstream.h:76
@ ft_frame_long_le
Definition: ftstream.h:73
@ ft_frame_ulong_le
Definition: ftstream.h:72
@ ft_frame_ulong_be
Definition: ftstream.h:70
@ ft_frame_skip
Definition: ftstream.h:81
@ ft_frame_short_be
Definition: ftstream.h:66
@ ft_frame_end
Definition: ftstream.h:59
@ ft_frame_uoff3_le
Definition: ftstream.h:77
@ ft_frame_ushort_be
Definition: ftstream.h:65
@ ft_frame_start
Definition: ftstream.h:60
@ ft_frame_off3_le
Definition: ftstream.h:78
@ ft_frame_ushort_le
Definition: ftstream.h:67
@ ft_frame_long_be
Definition: ftstream.h:71
@ ft_frame_schar
Definition: ftstream.h:63
#define FT_FRAME_OP_BYTE
Definition: ftstream.h:50
#define FT_MAKE_FRAME_OP(command, little, sign)
Definition: ftstream.h:45
#define FT_FRAME_OP_LONG
Definition: ftstream.h:52
enum FT_Frame_Op_ FT_Frame_Op
#define FT_FRAME_OP_START
Definition: ftstream.h:49
#define FT_FRAME_OP_OFF3
Definition: ftstream.h:53
#define FT_FRAME_OP_BYTES
Definition: ftstream.h:54

Function Documentation

◆ FT_Stream_Close()

FT_Stream_Close ( FT_Stream  stream)

Definition at line 49 of file ftstream.c.

50 {
51 if ( stream && stream->close )
52 stream->close( stream );
53 }

Referenced by FT_Stream_Free(), PCF_Face_Done(), and woff_open_font().

◆ FT_Stream_EnterFrame()

FT_Stream_EnterFrame ( FT_Stream  stream,
FT_ULong  count 
)

Definition at line 235 of file ftstream.c.

237 {
240
241
242 FT_TRACE7(( "FT_Stream_EnterFrame: %ld bytes\n", count ));
243
244 /* check for nested frame access */
245 FT_ASSERT( stream && stream->cursor == 0 );
246
247 if ( stream->read )
248 {
249 /* allocate the frame in memory */
250 FT_Memory memory = stream->memory;
251
252
253 /* simple sanity check */
254 if ( count > stream->size )
255 {
256 FT_ERROR(( "FT_Stream_EnterFrame:"
257 " frame size (%lu) larger than stream size (%lu)\n",
258 count, stream->size ));
259
260 error = FT_THROW( Invalid_Stream_Operation );
261 goto Exit;
262 }
263
264#ifdef FT_DEBUG_MEMORY
265 /* assume _ft_debug_file and _ft_debug_lineno are already set */
266 stream->base = (unsigned char*)ft_mem_qalloc( memory,
267 (FT_Long)count,
268 &error );
269 if ( error )
270 goto Exit;
271#else
272 if ( FT_QALLOC( stream->base, count ) )
273 goto Exit;
274#endif
275 /* read it */
276 read_bytes = stream->read( stream, stream->pos,
277 stream->base, count );
278 if ( read_bytes < count )
279 {
280 FT_ERROR(( "FT_Stream_EnterFrame:"
281 " invalid read; expected %lu bytes, got %lu\n",
282 count, read_bytes ));
283
284 FT_FREE( stream->base );
285 error = FT_THROW( Invalid_Stream_Operation );
286 }
287
288 stream->cursor = stream->base;
289 stream->limit = stream->cursor + count;
291 }
292 else
293 {
294 /* check current and new position */
295 if ( stream->pos >= stream->size ||
296 stream->size - stream->pos < count )
297 {
298 FT_ERROR(( "FT_Stream_EnterFrame:"
299 " invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n",
300 stream->pos, count, stream->size ));
301
302 error = FT_THROW( Invalid_Stream_Operation );
303 goto Exit;
304 }
305
306 /* set cursor */
307 stream->cursor = stream->base + stream->pos;
308 stream->limit = stream->cursor + count;
309 stream->pos += count;
310 }
311
312 Exit:
313 return error;
314 }
#define FT_ASSERT(condition)
Definition: ftdebug.h:239
#define FT_ERROR(varformat)
Definition: ftdebug.h:209
#define FT_TRACE7(varformat)
Definition: ftdebug.h:192
#define FT_THROW(e)
Definition: ftdebug.h:241
ft_mem_qalloc(FT_Memory memory, FT_Long size, FT_Error *p_error)
Definition: ftutil.c:66
#define FT_FREE(ptr)
Definition: ftmemory.h:328
#define FT_QALLOC(ptr, size)
Definition: ftmemory.h:315
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
Definition: ftsystem.h:65
int FT_Error
Definition: fttypes.h:299
static char memory[1024 *256]
Definition: process.c:116
static BOOL read_bytes(parse_buffer *buf, LPVOID data, DWORD size)
Definition: parsing.c:168
static void Exit(void)
Definition: sock.c:1330
ULARGE_INTEGER pos
Definition: request.c:4380
unsigned int size
Definition: parse.h:27

Referenced by FT_Stream_ExtractFrame(), FT_Stream_ReadFields(), pcf_get_bitmaps(), and pcf_get_encodings().

◆ FT_Stream_ExitFrame()

FT_Stream_ExitFrame ( FT_Stream  stream)

Definition at line 318 of file ftstream.c.

319 {
320 /* IMPORTANT: The assertion stream->cursor != 0 was removed, given */
321 /* that it is possible to access a frame of length 0 in */
322 /* some weird fonts (usually, when accessing an array of */
323 /* 0 records, like in some strange kern tables). */
324 /* */
325 /* In this case, the loader code handles the 0-length table */
326 /* gracefully; however, stream.cursor is really set to 0 by the */
327 /* FT_Stream_EnterFrame() call, and this is not an error. */
328
329 FT_TRACE7(( "FT_Stream_ExitFrame\n" ));
330
331 FT_ASSERT( stream );
332
333 if ( stream->read )
334 {
335 FT_Memory memory = stream->memory;
336
337
338#ifdef FT_DEBUG_MEMORY
339 ft_mem_free( memory, stream->base );
340 stream->base = NULL;
341#else
342 FT_FREE( stream->base );
343#endif
344 }
345
346 stream->cursor = NULL;
347 stream->limit = NULL;
348 }
#define NULL
Definition: types.h:112
ft_mem_free(FT_Memory memory, const void *P)
Definition: ftutil.c:170

Referenced by FT_Stream_ReadFields(), pcf_get_bitmaps(), and pcf_get_encodings().

◆ FT_Stream_ExtractFrame()

FT_Stream_ExtractFrame ( FT_Stream  stream,
FT_ULong  count,
FT_Byte **  pbytes 
)

Definition at line 193 of file ftstream.c.

196 {
198
199
201 if ( !error )
202 {
203 *pbytes = (FT_Byte*)stream->cursor;
204
205 /* equivalent to FT_Stream_ExitFrame(), with no memory block release */
206 stream->cursor = NULL;
207 stream->limit = NULL;
208 }
209
210 return error;
211 }
FT_Stream_EnterFrame(FT_Stream stream, FT_ULong count)
Definition: ftstream.c:235

◆ FT_Stream_Free()

FT_Stream_Free ( FT_Stream  stream,
FT_Int  external 
)

Definition at line 258 of file ftobjs.c.

260 {
261 if ( stream )
262 {
263 FT_Memory memory = stream->memory;
264
265
267
268 if ( !external )
269 FT_FREE( stream );
270 }
271 }
FT_Stream_Close(FT_Stream stream)
Definition: ftstream.c:49

Referenced by destroy_face(), FT_Attach_Stream(), ft_open_face_internal(), and woff_open_font().

◆ FT_Stream_GetChar()

FT_Stream_GetChar ( FT_Stream  stream)

Definition at line 352 of file ftstream.c.

353 {
355
356
357 FT_ASSERT( stream && stream->cursor );
358
359 result = 0;
360 if ( stream->cursor < stream->limit )
361 result = (FT_Char)*stream->cursor++;
362
363 return result;
364 }
signed char FT_Char
Definition: fttypes.h:143
GLuint64EXT * result
Definition: glext.h:11304

◆ FT_Stream_GetULong()

FT_Stream_GetULong ( FT_Stream  stream)

Definition at line 424 of file ftstream.c.

425 {
426 FT_Byte* p;
428
429
430 FT_ASSERT( stream && stream->cursor );
431
432 result = 0;
433 p = stream->cursor;
434 if ( p + 3 < stream->limit )
436 stream->cursor = p;
437 return result;
438 }
#define FT_NEXT_ULONG(buffer)
Definition: ftstream.h:245

◆ FT_Stream_GetULongLE()

FT_Stream_GetULongLE ( FT_Stream  stream)

Definition at line 442 of file ftstream.c.

443 {
444 FT_Byte* p;
446
447
448 FT_ASSERT( stream && stream->cursor );
449
450 result = 0;
451 p = stream->cursor;
452 if ( p + 3 < stream->limit )
454 stream->cursor = p;
455 return result;
456 }
#define FT_NEXT_ULONG_LE(buffer)
Definition: ftstream.h:264

◆ FT_Stream_GetUOffset()

FT_Stream_GetUOffset ( FT_Stream  stream)

Definition at line 406 of file ftstream.c.

407 {
408 FT_Byte* p;
410
411
412 FT_ASSERT( stream && stream->cursor );
413
414 result = 0;
415 p = stream->cursor;
416 if ( p + 2 < stream->limit )
418 stream->cursor = p;
419 return result;
420 }
#define FT_NEXT_UOFF3(buffer)
Definition: ftstream.h:239

◆ FT_Stream_GetUShort()

FT_Stream_GetUShort ( FT_Stream  stream)

Definition at line 368 of file ftstream.c.

369 {
370 FT_Byte* p;
372
373
374 FT_ASSERT( stream && stream->cursor );
375
376 result = 0;
377 p = stream->cursor;
378 if ( p + 1 < stream->limit )
380 stream->cursor = p;
381
382 return result;
383 }
#define FT_NEXT_USHORT(buffer)
Definition: ftstream.h:233
unsigned short FT_UShort
Definition: fttypes.h:209

◆ FT_Stream_GetUShortLE()

FT_Stream_GetUShortLE ( FT_Stream  stream)

Definition at line 387 of file ftstream.c.

388 {
389 FT_Byte* p;
391
392
393 FT_ASSERT( stream && stream->cursor );
394
395 result = 0;
396 p = stream->cursor;
397 if ( p + 1 < stream->limit )
399 stream->cursor = p;
400
401 return result;
402 }
#define FT_NEXT_USHORT_LE(buffer)
Definition: ftstream.h:252

◆ FT_Stream_New()

FT_Stream_New ( FT_Library  library,
const FT_Open_Args args,
FT_Stream astream 
)

Definition at line 190 of file ftobjs.c.

193 {
197
198
199 *astream = NULL;
200
201 if ( !library )
202 return FT_THROW( Invalid_Library_Handle );
203
204 if ( !args )
205 return FT_THROW( Invalid_Argument );
206
208
209 if ( FT_NEW( stream ) )
210 goto Exit;
211
212 stream->memory = memory;
213
214 if ( args->flags & FT_OPEN_MEMORY )
215 {
216 /* create a memory-based stream */
218 (const FT_Byte*)args->memory_base,
219 (FT_ULong)args->memory_size );
220 }
221
222#ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
223
224 else if ( args->flags & FT_OPEN_PATHNAME )
225 {
226 /* create a normal system stream */
227 error = FT_Stream_Open( stream, args->pathname );
228 stream->pathname.pointer = args->pathname;
229 }
230 else if ( ( args->flags & FT_OPEN_STREAM ) && args->stream )
231 {
232 /* use an existing, user-provided stream */
233
234 /* in this case, we do not need to allocate a new stream object */
235 /* since the caller is responsible for closing it himself */
236 FT_FREE( stream );
237 stream = args->stream;
238 }
239
240#endif
241
242 else
243 error = FT_THROW( Invalid_Argument );
244
245 if ( error )
246 FT_FREE( stream );
247 else
248 stream->memory = memory; /* just to be certain */
249
250 *astream = stream;
251
252 Exit:
253 return error;
254 }
FT_Library library
Definition: cffdrivr.c:661
#define FT_OPEN_PATHNAME
Definition: freetype.h:2011
#define FT_OPEN_MEMORY
Definition: freetype.h:2009
#define FT_OPEN_STREAM
Definition: freetype.h:2010
#define FT_NEW(ptr)
Definition: ftmemory.h:330
FT_Stream_Open(FT_Stream stream, const char *filepathname)
Definition: ftsystem.c:237
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
Definition: ftstream.c:35
FT_Memory memory
Definition: ftobjs.h:897
Definition: match.c:390

Referenced by FT_Attach_Stream(), and ft_open_face_internal().

◆ FT_Stream_Open()

FT_Stream_Open ( FT_Stream  stream,
const char filepathname 
)

Definition at line 237 of file ftsystem.c.

239 {
240 FT_FILE* file;
241
242
243 if ( !stream )
244 return FT_THROW( Invalid_Stream_Handle );
245
246 stream->descriptor.pointer = NULL;
247 stream->pathname.pointer = (char*)filepathname;
248 stream->base = NULL;
249 stream->pos = 0;
250 stream->read = NULL;
251 stream->close = NULL;
252
253 file = ft_fopen( filepathname, "rb" );
254 if ( !file )
255 {
256 FT_ERROR(( "FT_Stream_Open:"
257 " could not open `%s'\n", filepathname ));
258
259 return FT_THROW( Cannot_Open_Resource );
260 }
261
262 ft_fseek( file, 0, SEEK_END );
263 stream->size = (unsigned long)ft_ftell( file );
264 if ( !stream->size )
265 {
266 FT_ERROR(( "FT_Stream_Open:" ));
267 FT_ERROR(( " opened `%s' but zero-sized\n", filepathname ));
268 ft_fclose( file );
269 return FT_THROW( Cannot_Open_Stream );
270 }
271 ft_fseek( file, 0, SEEK_SET );
272
273 stream->descriptor.pointer = file;
276
277 FT_TRACE1(( "FT_Stream_Open:" ));
278 FT_TRACE1(( " opened `%s' (%d bytes) successfully\n",
279 filepathname, stream->size ));
280
281 return FT_Err_Ok;
282 }
#define SEEK_END
Definition: cabinet.c:29
#define FT_TRACE1(varformat)
Definition: ftdebug.h:186
#define FT_FILE
Definition: ftstdlib.h:104
#define ft_fseek
Definition: ftstdlib.h:108
#define ft_fclose
Definition: ftstdlib.h:105
#define ft_ftell
Definition: ftstdlib.h:109
#define ft_fopen
Definition: ftstdlib.h:106
ft_ansi_stream_close(FT_Stream stream)
Definition: ftsystem.c:177
ft_ansi_stream_io(FT_Stream stream, unsigned long offset, unsigned char *buffer, unsigned long count)
Definition: ftsystem.c:214
#define SEEK_SET
Definition: jmemansi.c:26
#define long
Definition: qsort.c:33
Definition: fci.c:127

Referenced by FT_Stream_New().

◆ FT_Stream_OpenMemory()

FT_Stream_OpenMemory ( FT_Stream  stream,
const FT_Byte base,
FT_ULong  size 
)

Definition at line 35 of file ftstream.c.

38 {
39 stream->base = (FT_Byte*) base;
40 stream->size = size;
41 stream->pos = 0;
42 stream->cursor = NULL;
43 stream->read = NULL;
44 stream->close = NULL;
45 }

Referenced by cid_face_open(), FT_Stream_New(), load_truetype_glyph(), and woff_open_font().

◆ FT_Stream_Pos()

FT_Stream_Pos ( FT_Stream  stream)

Definition at line 103 of file ftstream.c.

104 {
105 return stream->pos;
106 }

◆ FT_Stream_Read()

FT_Stream_Read ( FT_Stream  stream,
FT_Byte buffer,
FT_ULong  count 
)

Definition at line 110 of file ftstream.c.

113 {
115 }
FT_Stream_ReadAt(FT_Stream stream, FT_ULong pos, FT_Byte *buffer, FT_ULong count)
Definition: ftstream.c:119

Referenced by FT_Raccess_Get_HeaderInfo(), and pcf_get_properties().

◆ FT_Stream_ReadAt()

FT_Stream_ReadAt ( FT_Stream  stream,
FT_ULong  pos,
FT_Byte buffer,
FT_ULong  count 
)

Definition at line 119 of file ftstream.c.

123 {
126
127
128 if ( pos >= stream->size )
129 {
130 FT_ERROR(( "FT_Stream_ReadAt:"
131 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
132 pos, stream->size ));
133
134 return FT_THROW( Invalid_Stream_Operation );
135 }
136
137 if ( stream->read )
138 read_bytes = stream->read( stream, pos, buffer, count );
139 else
140 {
142 if ( read_bytes > count )
144
146 }
147
149
150 if ( read_bytes < count )
151 {
152 FT_ERROR(( "FT_Stream_ReadAt:"
153 " invalid read; expected %lu bytes, got %lu\n",
154 count, read_bytes ));
155
156 error = FT_THROW( Invalid_Stream_Operation );
157 }
158
159 return error;
160 }
#define FT_MEM_COPY(dest, source, count)
Definition: ftmemory.h:228

Referenced by FT_Stream_Read().

◆ FT_Stream_ReadChar()

FT_Stream_ReadChar ( FT_Stream  stream,
FT_Error error 
)

Definition at line 460 of file ftstream.c.

462 {
463 FT_Byte result = 0;
464
465
466 FT_ASSERT( stream );
467
468 *error = FT_Err_Ok;
469
470 if ( stream->read )
471 {
472 if ( stream->read( stream, stream->pos, &result, 1L ) != 1L )
473 goto Fail;
474 }
475 else
476 {
477 if ( stream->pos < stream->size )
478 result = stream->base[stream->pos];
479 else
480 goto Fail;
481 }
482 stream->pos++;
483
484 return (FT_Char)result;
485
486 Fail:
487 *error = FT_THROW( Invalid_Stream_Operation );
488 FT_ERROR(( "FT_Stream_ReadChar:"
489 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
490 stream->pos, stream->size ));
491
492 return 0;
493 }
int Fail
Definition: ehthrow.cxx:24

◆ FT_Stream_ReadFields()

FT_Stream_ReadFields ( FT_Stream  stream,
const FT_Frame_Field fields,
void structure 
)

Definition at line 722 of file ftstream.c.

725 {
727 FT_Bool frame_accessed = 0;
729
730
731 if ( !fields )
732 return FT_THROW( Invalid_Argument );
733
734 if ( !stream )
735 return FT_THROW( Invalid_Stream_Handle );
736
737 cursor = stream->cursor;
738
740 do
741 {
743 FT_Int sign_shift;
744 FT_Byte* p;
745
746
747 switch ( fields->value )
748 {
749 case ft_frame_start: /* access a new frame */
751 if ( error )
752 goto Exit;
753
754 frame_accessed = 1;
755 cursor = stream->cursor;
756 fields++;
757 continue; /* loop! */
758
759 case ft_frame_bytes: /* read a byte sequence */
760 case ft_frame_skip: /* skip some bytes */
761 {
762 FT_UInt len = fields->size;
763
764
765 if ( cursor + len > stream->limit )
766 {
767 error = FT_THROW( Invalid_Stream_Operation );
768 goto Exit;
769 }
770
771 if ( fields->value == ft_frame_bytes )
772 {
773 p = (FT_Byte*)structure + fields->offset;
774 FT_MEM_COPY( p, cursor, len );
775 }
776 cursor += len;
777 fields++;
778 continue;
779 }
780
781 case ft_frame_byte:
782 case ft_frame_schar: /* read a single byte */
784 sign_shift = 24;
785 break;
786
788 case ft_frame_ushort_be: /* read a 2-byte big-endian short */
790 sign_shift = 16;
791 break;
792
794 case ft_frame_ushort_le: /* read a 2-byte little-endian short */
796 sign_shift = 16;
797 break;
798
799 case ft_frame_long_be:
800 case ft_frame_ulong_be: /* read a 4-byte big-endian long */
802 sign_shift = 0;
803 break;
804
805 case ft_frame_long_le:
806 case ft_frame_ulong_le: /* read a 4-byte little-endian long */
808 sign_shift = 0;
809 break;
810
811 case ft_frame_off3_be:
812 case ft_frame_uoff3_be: /* read a 3-byte big-endian long */
814 sign_shift = 8;
815 break;
816
817 case ft_frame_off3_le:
818 case ft_frame_uoff3_le: /* read a 3-byte little-endian long */
820 sign_shift = 8;
821 break;
822
823 default:
824 /* otherwise, exit the loop */
825 stream->cursor = cursor;
826 goto Exit;
827 }
828
829 /* now, compute the signed value is necessary */
830 if ( fields->value & FT_FRAME_OP_SIGNED )
831 value = (FT_ULong)( (FT_Int32)( value << sign_shift ) >> sign_shift );
832
833 /* finally, store the value in the object */
834
835 p = (FT_Byte*)structure + fields->offset;
836 switch ( fields->size )
837 {
838 case ( 8 / FT_CHAR_BIT ):
839 *(FT_Byte*)p = (FT_Byte)value;
840 break;
841
842 case ( 16 / FT_CHAR_BIT ):
844 break;
845
846 case ( 32 / FT_CHAR_BIT ):
847 *(FT_UInt32*)p = (FT_UInt32)value;
848 break;
849
850 default: /* for 64-bit systems */
851 *(FT_ULong*)p = (FT_ULong)value;
852 }
853
854 /* go to next field */
855 fields++;
856 }
857 while ( 1 );
858
859 Exit:
860 /* close the frame if it was opened by this read */
861 if ( frame_accessed )
863
864 return error;
865 }
switch(r->id)
Definition: btrfs.c:3046
#define FT_CHAR_BIT
Definition: ftconfig.h:69
FT_Stream_ExitFrame(FT_Stream stream)
Definition: ftstream.c:318
#define FT_FRAME_OP_SIGNED
Definition: ftstream.h:41
#define FT_NEXT_UOFF3_LE(buffer)
Definition: ftstream.h:258
#define FT_NEXT_BYTE(buffer)
Definition: ftstream.h:227
FT_BEGIN_HEADER typedef unsigned char FT_Bool
Definition: fttypes.h:108
unsigned int FT_UInt
Definition: fttypes.h:231
signed int FT_Int
Definition: fttypes.h:220
GLenum GLsizei len
Definition: glext.h:6722
const char cursor[]
Definition: icontest.c:13
const char * fields[10]
Definition: parser.c:313
Definition: pdh_main.c:96

◆ FT_Stream_ReadULong()

FT_Stream_ReadULong ( FT_Stream  stream,
FT_Error error 
)

Definition at line 632 of file ftstream.c.

634 {
635 FT_Byte reads[4];
636 FT_Byte* p = 0;
637 FT_ULong result = 0;
638
639
640 FT_ASSERT( stream );
641
642 *error = FT_Err_Ok;
643
644 if ( stream->pos + 3 < stream->size )
645 {
646 if ( stream->read )
647 {
648 if ( stream->read( stream, stream->pos, reads, 4L ) != 4L )
649 goto Fail;
650
651 p = reads;
652 }
653 else
654 p = stream->base + stream->pos;
655
656 if ( p )
658 }
659 else
660 goto Fail;
661
662 stream->pos += 4;
663
664 return result;
665
666 Fail:
667 *error = FT_THROW( Invalid_Stream_Operation );
668 FT_ERROR(( "FT_Stream_ReadULong:"
669 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
670 stream->pos, stream->size ));
671
672 return 0;
673 }

◆ FT_Stream_ReadULongLE()

FT_Stream_ReadULongLE ( FT_Stream  stream,
FT_Error error 
)

Definition at line 677 of file ftstream.c.

679 {
680 FT_Byte reads[4];
681 FT_Byte* p = 0;
682 FT_ULong result = 0;
683
684
685 FT_ASSERT( stream );
686
687 *error = FT_Err_Ok;
688
689 if ( stream->pos + 3 < stream->size )
690 {
691 if ( stream->read )
692 {
693 if ( stream->read( stream, stream->pos, reads, 4L ) != 4L )
694 goto Fail;
695
696 p = reads;
697 }
698 else
699 p = stream->base + stream->pos;
700
701 if ( p )
703 }
704 else
705 goto Fail;
706
707 stream->pos += 4;
708
709 return result;
710
711 Fail:
712 *error = FT_THROW( Invalid_Stream_Operation );
713 FT_ERROR(( "FT_Stream_ReadULongLE:"
714 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
715 stream->pos, stream->size ));
716
717 return 0;
718 }

◆ FT_Stream_ReadUOffset()

FT_Stream_ReadUOffset ( FT_Stream  stream,
FT_Error error 
)

Definition at line 587 of file ftstream.c.

589 {
590 FT_Byte reads[3];
591 FT_Byte* p = 0;
592 FT_ULong result = 0;
593
594
595 FT_ASSERT( stream );
596
597 *error = FT_Err_Ok;
598
599 if ( stream->pos + 2 < stream->size )
600 {
601 if ( stream->read )
602 {
603 if (stream->read( stream, stream->pos, reads, 3L ) != 3L )
604 goto Fail;
605
606 p = reads;
607 }
608 else
609 p = stream->base + stream->pos;
610
611 if ( p )
613 }
614 else
615 goto Fail;
616
617 stream->pos += 3;
618
619 return result;
620
621 Fail:
622 *error = FT_THROW( Invalid_Stream_Operation );
623 FT_ERROR(( "FT_Stream_ReadUOffset:"
624 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
625 stream->pos, stream->size ));
626
627 return 0;
628 }

◆ FT_Stream_ReadUShort()

FT_Stream_ReadUShort ( FT_Stream  stream,
FT_Error error 
)

Definition at line 497 of file ftstream.c.

499 {
500 FT_Byte reads[2];
501 FT_Byte* p = 0;
502 FT_UShort result = 0;
503
504
505 FT_ASSERT( stream );
506
507 *error = FT_Err_Ok;
508
509 if ( stream->pos + 1 < stream->size )
510 {
511 if ( stream->read )
512 {
513 if ( stream->read( stream, stream->pos, reads, 2L ) != 2L )
514 goto Fail;
515
516 p = reads;
517 }
518 else
519 p = stream->base + stream->pos;
520
521 if ( p )
523 }
524 else
525 goto Fail;
526
527 stream->pos += 2;
528
529 return result;
530
531 Fail:
532 *error = FT_THROW( Invalid_Stream_Operation );
533 FT_ERROR(( "FT_Stream_ReadUShort:"
534 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
535 stream->pos, stream->size ));
536
537 return 0;
538 }

◆ FT_Stream_ReadUShortLE()

FT_Stream_ReadUShortLE ( FT_Stream  stream,
FT_Error error 
)

Definition at line 542 of file ftstream.c.

544 {
545 FT_Byte reads[2];
546 FT_Byte* p = 0;
547 FT_UShort result = 0;
548
549
550 FT_ASSERT( stream );
551
552 *error = FT_Err_Ok;
553
554 if ( stream->pos + 1 < stream->size )
555 {
556 if ( stream->read )
557 {
558 if ( stream->read( stream, stream->pos, reads, 2L ) != 2L )
559 goto Fail;
560
561 p = reads;
562 }
563 else
564 p = stream->base + stream->pos;
565
566 if ( p )
568 }
569 else
570 goto Fail;
571
572 stream->pos += 2;
573
574 return result;
575
576 Fail:
577 *error = FT_THROW( Invalid_Stream_Operation );
578 FT_ERROR(( "FT_Stream_ReadUShortLE:"
579 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
580 stream->pos, stream->size ));
581
582 return 0;
583 }

◆ FT_Stream_ReleaseFrame()

FT_Stream_ReleaseFrame ( FT_Stream  stream,
FT_Byte **  pbytes 
)

Definition at line 215 of file ftstream.c.

217 {
218 if ( stream && stream->read )
219 {
220 FT_Memory memory = stream->memory;
221
222
223#ifdef FT_DEBUG_MEMORY
224 ft_mem_free( memory, *pbytes );
225#else
226 FT_FREE( *pbytes );
227#endif
228 }
229
230 *pbytes = NULL;
231 }

◆ FT_Stream_Seek()

FT_Stream_Seek ( FT_Stream  stream,
FT_ULong  pos 
)

Definition at line 57 of file ftstream.c.

59 {
61
62
63 if ( stream->read )
64 {
65 if ( stream->read( stream, pos, 0, 0 ) )
66 {
67 FT_ERROR(( "FT_Stream_Seek:"
68 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
69 pos, stream->size ));
70
71 error = FT_THROW( Invalid_Stream_Operation );
72 }
73 }
74 /* note that seeking to the first position after the file is valid */
75 else if ( pos > stream->size )
76 {
77 FT_ERROR(( "FT_Stream_Seek:"
78 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
79 pos, stream->size ));
80
81 error = FT_THROW( Invalid_Stream_Operation );
82 }
83
84 if ( !error )
85 stream->pos = pos;
86
87 return error;
88 }

Referenced by ft_lzwstate_io(), ft_open_face_internal(), FT_Raccess_Get_DataOffsets(), FT_Raccess_Get_HeaderInfo(), and FT_Stream_Skip().

◆ FT_Stream_Skip()

FT_Stream_Skip ( FT_Stream  stream,
FT_Long  distance 
)

Definition at line 92 of file ftstream.c.

94 {
95 if ( distance < 0 )
96 return FT_THROW( Invalid_Stream_Operation );
97
99 }
FT_Stream_Seek(FT_Stream stream, FT_ULong pos)
Definition: ftstream.c:57

◆ FT_Stream_TryRead()

FT_Stream_TryRead ( FT_Stream  stream,
FT_Byte buffer,
FT_ULong  count 
)

Definition at line 164 of file ftstream.c.

167 {
169
170
171 if ( stream->pos >= stream->size )
172 goto Exit;
173
174 if ( stream->read )
176 else
177 {
179 if ( read_bytes > count )
181
183 }
184
186
187 Exit:
188 return read_bytes;
189 }

Referenced by _bdf_readstream(), ft_lzwstate_io(), and ft_lzwstate_refill().