diff options
Diffstat (limited to 'gs/src/scfx.h')
-rw-r--r-- | gs/src/scfx.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/gs/src/scfx.h b/gs/src/scfx.h new file mode 100644 index 000000000..c707a089b --- /dev/null +++ b/gs/src/scfx.h @@ -0,0 +1,122 @@ +/* Copyright (C) 1993, 1995, 1996, 1997 Aladdin Enterprises. All rights reserved. + + This file is part of Aladdin Ghostscript. + + Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author + or distributor accepts any responsibility for the consequences of using it, + or for whether it serves any particular purpose or works at all, unless he + or she says so in writing. Refer to the Aladdin Ghostscript Free Public + License (the "License") for full details. + + Every copy of Aladdin Ghostscript must include a copy of the License, + normally in a plain ASCII text file named PUBLIC. The License grants you + the right to copy, modify and redistribute Aladdin Ghostscript, but only + under certain conditions described in the License. Among other things, the + License requires that the copyright notice and this notice be preserved on + all copies. +*/ + +/* scfx.h */ +/* CCITTFax filter state definition */ +/* Requires strimpl.h */ +#include "shc.h" + +/* Common state */ +#define stream_CF_state_common\ + stream_hc_state_common;\ + /* The client sets the following before initialization. */\ + bool Uncompressed;\ + int K;\ + bool EndOfLine;\ + bool EncodedByteAlign;\ + int Columns;\ + int Rows;\ + bool EndOfBlock;\ + bool BlackIs1;\ + int DamagedRowsBeforeError; /* (Decode only) */\ + /*bool FirstBitLowOrder;*/ /* in stream_hc_state_common */\ + int DecodedByteAlign;\ + /* The init procedure sets the following. */\ + uint raster;\ + byte *lbuf; /* current scan line buffer */\ + /* (only if decoding or 2-D encoding) */\ + byte *lprev; /* previous scan line buffer (only if 2-D) */\ + /* The following are updated dynamically. */\ + int k_left; /* number of next rows to encode in 2-D */\ + /* (only if K > 0) */\ + int run_color; /* -1 if processing white run, */\ + /* 0 if between runs but white is next, */\ + /* 1 if between runs and black is next, */\ + /* 2 if processing black run */\ + int damaged_rows; /* # of consecutive damaged rows preceding */\ + /* the current row */\ + bool skipping_damage /* true if skipping a damaged row looking */\ + /* for EOL */ +typedef struct stream_CF_state_s { + stream_CF_state_common; +} stream_CF_state; +/* Define common default parameter setting. */ +#define s_CF_set_defaults_inline(ss)\ + ((ss)->Uncompressed = false,\ + (ss)->K = 0,\ + (ss)->EndOfLine = false,\ + (ss)->EncodedByteAlign = false,\ + (ss)->Columns = 1728,\ + (ss)->Rows = 0,\ + (ss)->EndOfBlock = true,\ + (ss)->BlackIs1 = false,\ + /* Added by Adobe since the Red Book */\ + (ss)->DamagedRowsBeforeError = 0,\ + (ss)->FirstBitLowOrder = false,\ + /* Added by us */\ + (ss)->DecodedByteAlign = 1) + +/* CCITTFaxEncode */ +typedef struct stream_CFE_state_s { + stream_CF_state_common; + /* The init procedure sets the following. */ + int max_line_bytes; /* max # of bytes for a 1-run line */ + int max_run2_bytes; /* max # of bytes for 2 runs */ + int max_run3_bytes; /* max # of bytes for 3 runs */ + /* The following change dynamically. */ + int count; /* # of source bits left to scan, */ + /* padded to a byte boundary */ + int run_count; /* count at start of run begin scanned */ + int copy_count; /* # of bytes to copy into lbuf */ + bool new_line; /* false if processing a line, */ + /* true if need to start new line */ +} stream_CFE_state; +#define private_st_CFE_state() /* in scfe.c */\ + gs_private_st_ptrs2(st_CFE_state, stream_CFE_state, "CCITTFaxEncode state",\ + cfe_enum_ptrs, cfe_reloc_ptrs, lbuf, lprev) +#define s_CFE_set_defaults_inline(ss)\ + s_CF_set_defaults_inline(ss) +extern const stream_template s_CFE_template; + +/* CCITTFaxDecode */ +typedef struct stream_CFD_state_s { + stream_CF_state_common; + int cbit; /* bits left to fill in current decoded */ + /* byte at lbuf[wpos] (0..7) */ + int rows_left; /* number of rows left */ + int rpos; /* rptr for copying lbuf to client */ + int wpos; /* rlimit/wptr for filling lbuf or */ + /* copying to client */ + int eol_count; /* number of EOLs seen so far */ + byte invert; /* current value of 'white' */ + /* for 2-D decoding */ + /* The following are not used yet. */ + int uncomp_run; /* non-0 iff we are in an uncompressed */ + /* run straddling a scan line (-1 if white, */ + /* 1 if black) */ + int uncomp_left; /* # of bits left in the run */ + int uncomp_exit; /* non-0 iff this is an exit run */ + /* (-1 if next run white, 1 if black) */ +} stream_CFD_state; +#define private_st_CFD_state() /* in scfd.c */\ + gs_private_st_ptrs2(st_CFD_state, stream_CFD_state, "CCITTFaxDecode state",\ + cfd_enum_ptrs, cfd_reloc_ptrs, lbuf, lprev) +#define s_CFD_set_defaults_inline(ss)\ + (s_CF_set_defaults_inline(ss),\ + (ss)->DamagedRowsBeforeError = 0) +extern const stream_template s_CFD_template; |