|
|
|
@ -46,7 +46,121 @@ |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/* TO-DO */ |
|
|
|
|
FT_Long vf_read_intn( FT_Stream, FT_Int ); |
|
|
|
|
FT_ULong vf_read_uintn( FT_Stream, FT_Int ); |
|
|
|
|
FT_Long vf_get_intn( FT_Byte*, FT_Int ); |
|
|
|
|
FT_ULong vf_get_uintn( FT_Byte*, FT_Int ); |
|
|
|
|
|
|
|
|
|
#define READ_UINT1( stream ) (FT_Byte)vf_read_uintn( stream, 1 ) |
|
|
|
|
#define READ_UINT2( stream ) (FT_Byte)vf_read_uintn( stream, 2 ) |
|
|
|
|
#define READ_UINT3( stream ) (FT_Byte)vf_read_uintn( stream, 3 ) |
|
|
|
|
#define READ_UINT4( stream ) (FT_Byte)vf_read_uintn( stream, 4 ) |
|
|
|
|
#define READ_UINTN( stream, n ) (FT_ULong)vf_read_uintn( stream, n ) |
|
|
|
|
#define READ_INT1( stream ) (FT_String)vf_read_intn( stream, 1 ) |
|
|
|
|
#define READ_INT4( stream ) (FT_Long)vf_read_intn( stream, 4 ) |
|
|
|
|
|
|
|
|
|
#define GET_INT1(p) (FT_Char)vf_get_intn((p), 1) |
|
|
|
|
#define GET_UINT1(p) (FT_Byte)vf_get_uintn((p), 1) |
|
|
|
|
#define GET_INT2(p) (FT_Int)vf_get_intn((p), 2) |
|
|
|
|
#define GET_UINT2(p) (FT_UInt)vf_get_uintn((p), 2) |
|
|
|
|
#define GET_INT3(p) (FT_Long)vf_get_intn((p), 3) |
|
|
|
|
#define GET_UINT3(p) (FT_ULong)vf_get_uintn((p), 3) |
|
|
|
|
#define GET_INT4(p) (FT_Long)vf_get_intn((p), 4) |
|
|
|
|
#define GET_UINT4(p) (FT_ULong)vf_get_uintn((p), 4) |
|
|
|
|
#define GET_INTN(p,n) (FT_Long)vf_get_intn((p), (n)) |
|
|
|
|
#define GET_UINTN(p,n) (FT_ULong)vf_get_uintn((p), (n)) |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Reading a Number from file |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
FT_ULong |
|
|
|
|
vf_read_uintn( FT_Stream stream, |
|
|
|
|
FT_Int size ) |
|
|
|
|
{ |
|
|
|
|
FT_ULong v,k; |
|
|
|
|
FT_Error error; |
|
|
|
|
FT_Byte tp; |
|
|
|
|
|
|
|
|
|
v = 0L; |
|
|
|
|
|
|
|
|
|
while ( size >= 1 ) |
|
|
|
|
{ |
|
|
|
|
if ( FT_READ_BYTE(tp) ) |
|
|
|
|
return 0; |
|
|
|
|
k = (FT_ULong) tp; |
|
|
|
|
v = v*256L + k; |
|
|
|
|
--size; |
|
|
|
|
} |
|
|
|
|
return v; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FT_Long |
|
|
|
|
vf_read_intn( FT_Stream stream, |
|
|
|
|
FT_Int size ) |
|
|
|
|
{ |
|
|
|
|
FT_Long v; |
|
|
|
|
FT_Byte tp; |
|
|
|
|
FT_Error error; |
|
|
|
|
FT_ULong z; |
|
|
|
|
|
|
|
|
|
if ( FT_READ_BYTE(tp) ) |
|
|
|
|
return 0; |
|
|
|
|
z = (FT_ULong) tp; |
|
|
|
|
v = (FT_Long) z & 0xffL; |
|
|
|
|
|
|
|
|
|
if( v & 0x80L ) |
|
|
|
|
v = v - 256L; |
|
|
|
|
--size; |
|
|
|
|
|
|
|
|
|
while ( size >= 1 ) |
|
|
|
|
{ |
|
|
|
|
if ( FT_READ_BYTE(tp) ) |
|
|
|
|
return 0; |
|
|
|
|
z = (FT_ULong) tp; |
|
|
|
|
v = v*256L + z; |
|
|
|
|
--size; |
|
|
|
|
} |
|
|
|
|
return v; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FT_ULong |
|
|
|
|
vf_get_uintn( FT_Byte *p, |
|
|
|
|
FT_Int size ) |
|
|
|
|
{ |
|
|
|
|
FT_ULong v; |
|
|
|
|
|
|
|
|
|
v = 0L; |
|
|
|
|
while (size >= 1) |
|
|
|
|
{ |
|
|
|
|
v = v*256L + (FT_ULong) *(p++); |
|
|
|
|
--size; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return v; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
FT_Long |
|
|
|
|
vf_get_intn( FT_Byte *p, |
|
|
|
|
FT_Int size ) |
|
|
|
|
{ |
|
|
|
|
FT_Long v; |
|
|
|
|
|
|
|
|
|
v = (FT_Long)*(p++) & 0xffL; |
|
|
|
|
if (v & 0x80L) |
|
|
|
|
v = v - 256L; |
|
|
|
|
--size; |
|
|
|
|
while (size >= 1) |
|
|
|
|
{ |
|
|
|
|
v = v*256L + (FT_ULong) *(p++); |
|
|
|
|
--size; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return v; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
|
* |
|
|
|
|