25#include FT_INTERNAL_MEMORY_H
26#include FT_INTERNAL_STREAM_H
27#include FT_INTERNAL_DEBUG_H
29#include FT_CONFIG_STANDARD_LIBRARY_H
32#include FT_MODULE_ERRORS_H
37#define FT_ERR_PREFIX LZW_Err_
38#define FT_ERR_BASE FT_Mod_Err_LZW
43#ifdef FT_CONFIG_OPTION_USE_LZW
45#ifdef FT_CONFIG_OPTION_PIC
46#error "lzw code does not support PIC yet"
68#define FT_LZW_BUFFER_SIZE 4096
70 typedef struct FT_LZWFileRec_
82 } FT_LZWFileRec, *FT_LZWFile;
98 if (
head[0] != 0x1F ||
108 ft_lzw_file_init( FT_LZWFile zip,
118 zip->memory =
stream->memory;
120 zip->limit = zip->buffer + FT_LZW_BUFFER_SIZE;
121 zip->cursor = zip->limit;
138 ft_lzw_file_done( FT_LZWFile zip )
150 ft_lzw_file_reset( FT_LZWFile zip )
160 zip->limit = zip->buffer + FT_LZW_BUFFER_SIZE;
161 zip->cursor = zip->limit;
170 ft_lzw_file_fill_output( FT_LZWFile zip )
177 zip->cursor = zip->buffer;
181 zip->limit = zip->cursor +
count;
192 ft_lzw_file_skip_output( FT_LZWFile zip,
203 if ( delta >=
count )
206 zip->cursor += delta;
215 FT_ULong delta = FT_LZW_BUFFER_SIZE;
223 if ( numread < delta )
239 ft_lzw_file_io( FT_LZWFile zip,
249 if ( pos < zip->
pos )
253 if ( ( zip->pos -
pos ) <= (
FT_ULong)( zip->cursor - zip->buffer ) )
255 zip->cursor -= zip->pos -
pos;
260 error = ft_lzw_file_reset( zip );
267 if (
pos > zip->pos )
283 delta = (
FT_ULong)( zip->limit - zip->cursor );
284 if ( delta >=
count )
289 zip->cursor += delta;
296 error = ft_lzw_file_fill_output( zip );
317 FT_LZWFile zip = (FT_LZWFile)
stream->descriptor.pointer;
324 ft_lzw_file_done( zip );
337 unsigned long count )
339 FT_LZWFile zip = (FT_LZWFile)
stream->descriptor.pointer;
352 FT_LZWFile zip =
NULL;
386 stream->descriptor.pointer = zip;
392 stream->read = ft_lzw_stream_io;
393 stream->close = ft_lzw_stream_close;
413 return FT_THROW( Unimplemented_Feature );
struct outqueuenode * head
FT_Stream_OpenLZW(FT_Stream stream, FT_Stream source)
#define FT_MEM_COPY(dest, source, count)
#define FT_STREAM_SEEK(position)
#define FT_STREAM_READ(buffer, count)
typedefFT_BEGIN_HEADER struct FT_MemoryRec_ * FT_Memory
ft_lzwstate_init(FT_LzwState state, FT_Stream source)
ft_lzwstate_io(FT_LzwState state, FT_Byte *buffer, FT_ULong out_size)
ft_lzwstate_reset(FT_LzwState state)
ft_lzwstate_done(FT_LzwState state)
GLuint GLuint GLsizei count
static char memory[1024 *256]