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