diff options
Diffstat (limited to 'support/dktools/dk4lzwe.h')
-rw-r--r-- | support/dktools/dk4lzwe.h | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/support/dktools/dk4lzwe.h b/support/dktools/dk4lzwe.h deleted file mode 100644 index a6087f644d..0000000000 --- a/support/dktools/dk4lzwe.h +++ /dev/null @@ -1,208 +0,0 @@ -/* -Copyright (C) 2016-2020, Dirk Krause -SPDX-License-Identifier: BSD-3-Clause -*/ - -/* - WARNING: This file was generated by the dkct program (see - http://dktools.sourceforge.net/ for details). - Changes you make here will be lost if dkct is run again! - You should modify the original source and run dkct on it. - Original source: dk4lzwe.ctr -*/ - -#ifndef DK4LZWE_H_INCLUDED -/** Avoid multiple inclusions. */ -#define DK4LZWE_H_INCLUDED 1 - - -#line 8 "dk4lzwe.ctr" - -/** @file dk4lzwe.h LZW encoder to produce PS level 2 output. - -- The unit length (input data length) is 8 bits. -- Code 256 is used for table cleanup, 257 is the end of data marker. -- EarlyChange is in use: the number of bits per code is increased after - creating table entries for codes 511, 1023 and 2047. -- Table entries are created for codes up to 4093. Instead of generating - an entry for 4094, the table is cleared. -*/ - - -#ifndef DK4CONF_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4conf.h" -#else -#include <dktools-4/dk4conf.h> -#endif -#endif - -#ifndef DK4ERROR_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4error.h" -#else -#include <dktools-4/dk4error.h> -#endif -#endif - -#ifndef DK4BITSH_H_INCLUDED -#if DK4_BUILDING_DKTOOLS4 -#include "dk4bitsh.h" -#else -#include <dktools-4/dk4bitsh.h> -#endif -#endif - - - -/** Table size. - The table must be large enough to keep 4096 entries. Adding - 25 percent size significantly decreases the number of lookups. - A prime number is required to ensure traversal of the entire - table if necessary. -*/ -enum { - LZW_TABLE_SIZE = 5147 /**< Size of LZW compression table. */ -}; - - - -/** One table entry for LZW compression. -*/ -typedef struct { - unsigned short os; /**< Current (old) state or code. */ - unsigned short ns; /**< New state after applying input. */ - unsigned char in; /**< Input byte. */ -} dk4_lzw_cell_t; - - - -/** LZW encoder structure. -*/ -typedef struct { - unsigned char ob[8]; /**< Output buffer. */ - dk4_bit_shift_t bs; /**< Bit shifter. */ - dk4_lzw_cell_t *p_tbl; /**< Pointer to dynamically allocated table. */ - size_t obu; /**< Used bytes in output buffer. */ - int mret; /**< Flag: Must retrieve output data. */ - int hst; /**< Flag: Have internal state. */ - unsigned short bits; /**< Number of bits to use for output. */ - unsigned short cs; /**< Current state. */ - unsigned short ns; /**< Next state for new table entry. */ -} dk4_lzwe_t; - -#ifdef __cplusplus -extern "C" { -#endif - - -/** Initialize LZW encoder, allocate memory for resources. - @param lzwptr Encoder to initialize. - @param erp Error report, may be NULL. - @return 1 on success, 0 on error. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if lzwptr is NULL, - - DK4_E_MATH_OVERFLOW<br> - on numeric overflow when calculating the - product of elsize and nelem, - - DK4_E_MEMORY_ALLOCATION_FAILED<br> - with mem.elsize and mem.nelem - set if there is not enough memory available, - - DK4_E_BUG<br> - if the dk4bit_shift_add() call indicates an error - (should not happen as we provide a valid address to the function), - - DK4_E_BUFFER_TOO_SMALL<br> - if the output buffer is already full. Typically this means - that output was not retrieved as expected by the library. -*/ - -int -dk4lzwe_init( - dk4_lzwe_t *lzwptr, - dk4_er_t *erp -); - - -/** Add one byte to the encoder. - @param lzwptr Encoder to use. - @param uc Byte to add. - @param erp Error report, may be NULL. - @return Operation result, one from: - - DK4_EDSTM_ACCEPT<br> - if the input byte was successfully stored in the internal data - structures without completing a run. No further action - necessary. - - DK4_EDSTM_FINISHED<br> - if output was created. Use dk4lzwe_output() to obtain the - output data. - - DK4_EDSTM_ERROR<br> - if an error occured. -*/ - -int -dk4lzwe_add( - dk4_lzwe_t *lzwptr, - unsigned char uc, - dk4_er_t *erp -); - - -/** Finish encoded data stream, flush internal state and bits from - the bit shifter to output buffer and release dynamic memory. - @param lzwptr Encoder to use. - @param erp Error report, may be NULL. - @return Operation result, one from: - - DK4_EDSTM_ACCEPT<br> - if the input byte was successfully stored in the internal data - structures without completing a run. No further action - necessary. - - DK4_EDSTM_FINISHED<br> - if output was created. Use dk4lzwe_output() to obtain the - output data. - - DK4_EDSTM_ERROR<br> - if an error occured. - - Error codes: - - DK4_E_INVALID_ARGUMENTS<br> - if lzwptr is NULL or lzwptr->s_tbl or lzwptr->i_tbl is NULL, - - DK4_E_BUG<br> - if the dk4bit_shift_add() call indicates an error - (should not happen as we provide a valid address to the function), - - DK4_E_BUFFER_TOO_SMALL<br> - if the output buffer is already full. Typically this means - that output was not retrieved as expected by the library. -*/ - -int -dk4lzwe_finish( - dk4_lzwe_t *lzwptr, - dk4_er_t *erp -); - - -/** Retrieve output from encoder. - @param dptr Address of result pointer. - @param szptr Address of result size variable. - @param lzwptr Encoder to use. - @param erp Error report, may be NULL. - @return 1 if data available, 0 otherwise. -*/ - -int -dk4lzwe_output( - const unsigned char **dptr, - size_t *szptr, - dk4_lzwe_t *lzwptr, - dk4_er_t *erp -); - - -#ifdef __cplusplus -} -#endif - -/* vim: set ai sw=4 ts=4 : */ - -#endif |