1 /* Copyright (C) 2001-2006 Artifex Software, Inc. 2 All Rights Reserved. 3 4 This software is provided AS-IS with no warranty, either express or 5 implied. 6 7 This software is distributed under license and may not be copied, modified 8 or distributed except as expressly authorized under the terms of that 9 license. Refer to licensing information at http://www.artifex.com/ 10 or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134, 11 San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information. 12 */ 13 14 /* $Id: sisparam.h 8529 2008-02-17 23:25:47Z leonardo $ */ 15 /* Generic image scaling stream definitions */ 16 /* Requires strimpl.h */ 17 18 #ifndef sisparam_INCLUDED 19 # define sisparam_INCLUDED 20 21 /* 22 * Image scaling streams all use a common set of parameters to define the 23 * input and output data. That is what we define here. 24 */ 25 26 /* Input values */ 27 /*typedef byte PixelIn; */ /* per BitsPerComponentIn */ 28 /*#define MaxValueIn 255 */ /* per MaxValueIn */ 29 30 /* Output values */ 31 /*typedef byte PixelOut; */ /* per BitsPerComponentOut */ 32 /*#define MaxValueOut 255 */ /* per MaxValueOut */ 33 34 /* 35 * The 'support' S of a digital filter is the value such that the filter is 36 * guaranteed to be zero for all arguments outside the range [-S..S]. We 37 * limit the support so that we can put an upper bound on the time required 38 * to compute an output value and on the amount of storage required for 39 * X-filtered input data; this also allows us to use pre-scaled fixed-point 40 * values for the weights if we wish. 41 * 42 * 8x8 pixels should be enough for any reasonable application.... 43 */ 44 #define LOG2_MAX_ISCALE_SUPPORT 3 45 #define MAX_ISCALE_SUPPORT (1 << LOG2_MAX_ISCALE_SUPPORT) 46 47 /* Define image scaling stream parameters. */ 48 typedef struct stream_image_scale_params_s { 49 int Colors; /* >= 1 */ 50 int BitsPerComponentIn; /* bits per input value, 8 or 16 */ 51 uint MaxValueIn; /* max value of input component, */ 52 /* 0 < MaxValueIn < 1 << BitsPerComponentIn */ 53 int WidthIn, HeightIn; /* > 0 */ 54 int BitsPerComponentOut; /* bits per output value, 8 or 16 */ 55 uint MaxValueOut; /* max value of output component, */ 56 /* 0 < MaxValueOut < 1 << BitsPerComponentOut*/ 57 int WidthOut, HeightOut; /* > 0 */ 58 bool ColorPolarityAdditive; /* needed by SpecialDownScale filter */ 59 int src_y_offset; /* Offset of the subimage in the source image. */ 60 int EntireWidthIn; /* Height of entire input image. */ 61 int EntireHeightIn; /* Height of entire input image. */ 62 int EntireWidthOut; /* Height of entire output image. */ 63 int EntireHeightOut; /* Height of entire output image. */ 64 } stream_image_scale_params_t; 65 66 /* Define a generic image scaling stream state. */ 67 68 #define stream_image_scale_state_common\ 69 stream_state_common;\ 70 stream_image_scale_params_t params 71 72 typedef struct stream_image_scale_state_s { 73 stream_image_scale_state_common; 74 } stream_image_scale_state; 75 76 #endif /* sisparam_INCLUDED */ 77