20 #include FT_INTERNAL_STREAM_H
21 #include FT_INTERNAL_DEBUG_H
31 #define FT_COMPONENT trace_stream
51 if ( stream && stream->close )
52 stream->close( stream );
65 if ( stream->read( stream, pos, 0, 0 ) )
68 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
71 error = FT_Err_Invalid_Stream_Operation;
75 else if ( pos > stream->size )
78 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
81 error = FT_Err_Invalid_Stream_Operation;
96 return FT_Err_Invalid_Stream_Operation;
128 if ( pos >= stream->size )
131 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
132 pos, stream->size ));
134 return FT_Err_Invalid_Stream_Operation;
138 read_bytes = stream->read( stream, pos, buffer, count );
141 read_bytes = stream->size - pos;
142 if ( read_bytes > count )
145 FT_MEM_COPY( buffer, stream->base + pos, read_bytes );
148 stream->pos = pos + read_bytes;
150 if ( read_bytes < count )
153 " invalid read; expected %lu bytes, got %lu\n",
154 count, read_bytes ));
156 error = FT_Err_Invalid_Stream_Operation;
171 if ( stream->pos >= stream->size )
175 read_bytes = stream->read( stream, stream->pos, buffer, count );
178 read_bytes = stream->size - stream->pos;
179 if ( read_bytes > count )
182 FT_MEM_COPY( buffer, stream->base + stream->pos, read_bytes );
185 stream->pos += read_bytes;
203 *pbytes = (
FT_Byte*)stream->cursor;
218 if ( stream && stream->read )
222 #ifdef FT_DEBUG_MEMORY
242 FT_ASSERT( stream && stream->cursor == 0 );
251 if ( count > stream->size )
254 " frame size (%lu) larger than stream size (%lu)\n",
255 count, stream->size ));
257 error = FT_Err_Invalid_Stream_Operation;
261 #ifdef FT_DEBUG_MEMORY
263 stream->base = (
unsigned char*)
ft_mem_qalloc( memory, count, &error );
271 read_bytes = stream->read( stream, stream->pos,
272 stream->base, count );
273 if ( read_bytes < count )
276 " invalid read; expected %lu bytes, got %lu\n",
277 count, read_bytes ));
280 error = FT_Err_Invalid_Stream_Operation;
282 stream->cursor = stream->base;
283 stream->limit = stream->cursor +
count;
284 stream->pos += read_bytes;
289 if ( stream->pos >= stream->size ||
290 stream->size - stream->pos < count )
293 " invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n",
294 stream->pos, count, stream->size ));
296 error = FT_Err_Invalid_Stream_Operation;
301 stream->cursor = stream->base + stream->pos;
302 stream->limit = stream->cursor +
count;
303 stream->pos +=
count;
329 #ifdef FT_DEBUG_MEMORY
350 if ( stream->cursor < stream->limit )
351 result = *stream->cursor++;
368 if ( p + 1 < stream->limit )
387 if ( p + 1 < stream->limit )
406 if ( p + 2 < stream->limit )
424 if ( p + 3 < stream->limit )
442 if ( p + 3 < stream->limit )
462 if ( stream->read( stream, stream->pos, &result, 1L ) != 1L )
467 if ( stream->pos < stream->size )
468 result = stream->base[stream->pos];
477 *error = FT_Err_Invalid_Stream_Operation;
479 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
480 stream->pos, stream->size ));
499 if ( stream->pos + 1 < stream->size )
503 if ( stream->read( stream, stream->pos, reads, 2L ) != 2L )
510 p = stream->base + stream->pos;
524 *error = FT_Err_Invalid_Stream_Operation;
526 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
527 stream->pos, stream->size ));
546 if ( stream->pos + 1 < stream->size )
550 if ( stream->read( stream, stream->pos, reads, 2L ) != 2L )
557 p = stream->base + stream->pos;
571 *error = FT_Err_Invalid_Stream_Operation;
572 FT_ERROR((
"FT_Stream_ReadUShortLE:"
573 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
574 stream->pos, stream->size ));
593 if ( stream->pos + 2 < stream->size )
597 if (stream->read( stream, stream->pos, reads, 3L ) != 3L )
604 p = stream->base + stream->pos;
618 *error = FT_Err_Invalid_Stream_Operation;
620 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
621 stream->pos, stream->size ));
640 if ( stream->pos + 3 < stream->size )
644 if ( stream->read( stream, stream->pos, reads, 4L ) != 4L )
651 p = stream->base + stream->pos;
665 *error = FT_Err_Invalid_Stream_Operation;
667 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
668 stream->pos, stream->size ));
687 if ( stream->pos + 3 < stream->size )
691 if ( stream->read( stream, stream->pos, reads, 4L ) != 4L )
698 p = stream->base + stream->pos;
712 *error = FT_Err_Invalid_Stream_Operation;
714 " invalid i/o; pos = 0x%lx, size = 0x%lx\n",
715 stream->pos, stream->size ));
730 if ( !fields || !stream )
733 cursor = stream->cursor;
743 switch ( fields->value )
751 cursor = stream->cursor;
761 if ( cursor + len > stream->limit )
763 error = FT_Err_Invalid_Stream_Operation;
769 p = (
FT_Byte*)structure + fields->offset;
821 stream->cursor = cursor;
831 p = (
FT_Byte*)structure + fields->offset;
843 *(FT_UInt32*)p = (FT_UInt32)
value;
857 if ( frame_accessed )
FT_Stream_GetULongLE(FT_Stream stream)
FT_Stream_EnterFrame(FT_Stream stream, FT_ULong count)
FT_Stream_Seek(FT_Stream stream, FT_ULong pos)
ft_mem_free(FT_Memory memory, const void *P)
#define FT_NEXT_ULONG_LE(buffer)
return FT_Err_Invalid_Argument
FT_Stream_ReadUShort(FT_Stream stream, FT_Error *error)
FT_Stream_TryRead(FT_Stream stream, FT_Byte *buffer, FT_ULong count)
#define FT_NEXT_BYTE(buffer)
FT_Stream_GetChar(FT_Stream stream)
ft_mem_qalloc(FT_Memory memory, FT_Long size, FT_Error *p_error)
#define FT_QALLOC(ptr, size)
FT_Stream_Pos(FT_Stream stream)
FT_Stream_Close(FT_Stream stream)
FT_Stream_GetUShortLE(FT_Stream stream)
FT_Stream_ReadUShortLE(FT_Stream stream, FT_Error *error)
FT_BEGIN_HEADER typedef unsigned char FT_Bool
FT_Stream_GetUShort(FT_Stream stream)
#define FT_ERROR(varformat)
#define FT_ASSERT(condition)
EGLContext EGLenum EGLClientBuffer buffer
FT_Stream_ReadUOffset(FT_Stream stream, FT_Error *error)
FT_Stream_ReadAt(FT_Stream stream, FT_ULong pos, FT_Byte *buffer, FT_ULong count)
FT_Stream_Read(FT_Stream stream, FT_Byte *buffer, FT_ULong count)
FT_Stream_ExtractFrame(FT_Stream stream, FT_ULong count, FT_Byte **pbytes)
FT_Stream_ReadULong(FT_Stream stream, FT_Error *error)
FT_Stream_GetULong(FT_Stream stream)
FT_Stream_ReleaseFrame(FT_Stream stream, FT_Byte **pbytes)
GLsizei GLsizei GLfloat distance
#define FT_NEXT_UOFF3(buffer)
#define FT_NEXT_USHORT_LE(buffer)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
#define FT_NEXT_USHORT(buffer)
EGLSurface EGLint void ** value
#define FT_FRAME_OP_SIGNED
#define FT_NEXT_UOFF3_LE(buffer)
#define FT_NEXT_ULONG(buffer)
FT_Stream_ExitFrame(FT_Stream stream)
FT_Stream_OpenMemory(FT_Stream stream, const FT_Byte *base, FT_ULong size)
FT_Stream_Skip(FT_Stream stream, FT_Long distance)
FT_Stream_ReadULongLE(FT_Stream stream, FT_Error *error)
#define FT_MEM_COPY(dest, source, count)
FT_Stream_ReadChar(FT_Stream stream, FT_Error *error)
FT_Stream_GetUOffset(FT_Stream stream)
FT_Stream_ReadFields(FT_Stream stream, const FT_Frame_Field *fields, void *structure)