xref: /plan9/sys/src/cmd/gs/src/spdiffx.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
17dd7cddfSDavid du Colombier /* Copyright (C) 1994, 1995, 1999 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: spdiffx.h,v 1.5 2004/03/13 22:31:19 ray Exp $ */
187dd7cddfSDavid du Colombier /* Definitions for PixelDifference filters */
197dd7cddfSDavid du Colombier /* Requires strimpl.h */
207dd7cddfSDavid du Colombier 
217dd7cddfSDavid du Colombier #ifndef spdiffx_INCLUDED
227dd7cddfSDavid du Colombier #  define spdiffx_INCLUDED
237dd7cddfSDavid du Colombier 
247dd7cddfSDavid du Colombier /*
257dd7cddfSDavid du Colombier  * Define the maximum value for Colors.  This must be at least 4, but can
267dd7cddfSDavid du Colombier  * be arbitrarily large: the only cost is a larger stream state structure.
277dd7cddfSDavid du Colombier  */
287dd7cddfSDavid du Colombier #define s_PDiff_max_Colors 16
297dd7cddfSDavid du Colombier 
307dd7cddfSDavid du Colombier /* PixelDifferenceDecode / PixelDifferenceEncode */
317dd7cddfSDavid du Colombier typedef struct stream_PDiff_state_s {
327dd7cddfSDavid du Colombier     stream_state_common;
337dd7cddfSDavid du Colombier     /* The client sets the following before initialization. */
347dd7cddfSDavid du Colombier     int Colors;			/* # of colors, 1..s_PDiff_max_Colors */
357dd7cddfSDavid du Colombier     int BitsPerComponent;	/* 1, 2, 4, 8 */
367dd7cddfSDavid du Colombier     int Columns;
377dd7cddfSDavid du Colombier     /* The init procedure computes the following. */
387dd7cddfSDavid du Colombier     uint row_count;		/* # of bytes per row */
397dd7cddfSDavid du Colombier     byte end_mask;		/* mask for left-over bits in last byte */
407dd7cddfSDavid du Colombier     int case_index;		/* switch index for case dispatch */
417dd7cddfSDavid du Colombier     /* The following are updated dynamically. */
427dd7cddfSDavid du Colombier     uint row_left;		/* # of bytes left in row */
43*593dc095SDavid du Colombier     uint prev[s_PDiff_max_Colors];	/* previous sample */
447dd7cddfSDavid du Colombier } stream_PDiff_state;
457dd7cddfSDavid du Colombier 
467dd7cddfSDavid du Colombier #define private_st_PDiff_state()	/* in spdiff.c */\
477dd7cddfSDavid du Colombier   gs_private_st_simple(st_PDiff_state, stream_PDiff_state,\
487dd7cddfSDavid du Colombier     "PixelDifferenceEncode/Decode state")
497dd7cddfSDavid du Colombier #define s_PDiff_set_defaults_inline(ss)\
507dd7cddfSDavid du Colombier   ((ss)->Colors = 1, (ss)->BitsPerComponent = 8, (ss)->Columns = 1)
517dd7cddfSDavid du Colombier extern const stream_template s_PDiffD_template;
527dd7cddfSDavid du Colombier extern const stream_template s_PDiffE_template;
537dd7cddfSDavid du Colombier 
547dd7cddfSDavid du Colombier #endif /* spdiffx_INCLUDED */
55