diff options
author | Henry Stiles <henry.stiles@artifex.com> | 1998-07-26 07:36:41 +0000 |
---|---|---|
committer | Henry Stiles <henry.stiles@artifex.com> | 1998-07-26 07:36:41 +0000 |
commit | eec0ef527f18c5978c4476c9490f4de4c4249628 (patch) | |
tree | 5588d5e1300a245186594893c930949a19bcbbce /gs/src/gsiparam.h | |
parent | d4bdba93ef34f68d27148e1b31088d1d3e786e8c (diff) | |
download | ghostpdl-eec0ef527f18c5978c4476c9490f4de4c4249628.tar.gz |
Initial revision
git-svn-id: http://svn.ghostscript.com/ghostpcl/trunk/ghostpcl@246 06663e23-700e-0410-b217-a244a6096597
Diffstat (limited to 'gs/src/gsiparam.h')
-rw-r--r-- | gs/src/gsiparam.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/gs/src/gsiparam.h b/gs/src/gsiparam.h new file mode 100644 index 000000000..7a0adfdfb --- /dev/null +++ b/gs/src/gsiparam.h @@ -0,0 +1,167 @@ +/* Copyright (C) 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. +*/ + +/* gsiparam.h */ +/* Image parameter definition */ +/* Requires gsmatrix.h */ + +#ifndef gsiparam_INCLUDED +# define gsiparam_INCLUDED + +/* ---------------- Image parameters ---------------- */ + +/* Define an opaque type for a color space. */ +#ifndef gs_color_space_DEFINED +# define gs_color_space_DEFINED +typedef struct gs_color_space_s gs_color_space; +#endif + +/* + * Define the structure for specifying image data. It follows closely + * the discussion on pp. 219-223 of the PostScript Language Reference Manual, + * Second Edition, with the following exceptions: + * + * ColorSpace and ImageMask are added members from PDF. + * + * DataSource and MultipleDataSources are not members of this + * structure, but are arguments of gs_image_init. + * + * adjust, CombineWithColor, and HasAlpha are not PostScript or + * PDF standard (see the RasterOp section of language.doc for a + * discussion of CombineWithColor). + */ +typedef enum { + /* Single plane, chunky pixels. */ + gs_image_format_chunky = 0, + /* num_components planes, chunky components. */ + gs_image_format_component_planar = 1, + /* BitsPerComponent * num_components planes, 1 bit per plane */ + /****** NOT SUPPORTED YET, DO NOT USE ******/ + gs_image_format_bit_planar = 2 +} gs_image_format_t; + +typedef struct gs_image_s { + /* + * Define the width of source image in pixels. + */ + int Width; + /* + * Define the height of source image in pixels. + */ + int Height; + /* + * Define the transformation from user space to image space. + */ + gs_matrix ImageMatrix; + /* + * Define B, the number of bits per pixel component. + * Currently this must be 1 for masks. + */ + int BitsPerComponent; + /* + * Define the source color space (must be NULL for masks). + */ + const gs_color_space *ColorSpace; + /* + * Define the linear remapping of the input values. + * For the I'th pixel component, we start by treating + * the B bits of component data as a fraction F between + * 0 and 1; the actual component value is then + * Decode[I*2] + F * (Decode[I*2+1] - Decode[I*2]). + * For masks, only the first two entries are used; + * they must be 1,0 for write-0s masks, 0,1 for write-1s. + */ +#ifdef DPNEXT + float Decode[10]; /* 4 colors + alpha */ +#else + float Decode[8]; +#endif + /* + * Define whether to smooth the image. + */ + bool Interpolate; + /* + * Define whether this is a mask or a solid image. + */ + bool ImageMask; + /*** + *** The following are not PostScript standard. + ***/ + /* + * Define whether to expand each destination pixel, to make + * masked characters look better (only used for masks). + */ + bool adjust; + /* + * Define whether to use the drawing color as the + * "texture" for RasterOp. For more information, + * see the discussion of RasterOp in language.doc. + */ + bool CombineWithColor; +#ifdef DPNEXT + /* + * Define whether there is an additional component providing + * alpha information for each pixel, in addition to (and + * following) the components implied by the color space. + * For masks, HasAlpha must be false. + */ + bool HasAlpha; +#endif +} gs_image_t; + +/* + * Define procedures for initializing a gs_image_t to default values. + * For masks, write_1s = false paints 0s, write_1s = true paints 1s. + * This is consistent with the "polarity" operand of the PostScript + * imagemask operator. + * + * Note that because gs_image_t may add more members in the future, all + * clients constructing gs_image_t values *must* start by initializing + * the value by calling one of the following procedures. + */ +void + gs_image_t_init_gray(P1(gs_image_t *pim)), + gs_image_t_init_color(P1(gs_image_t *pim)),/* general color, initially RGB */ + gs_image_t_init_mask(P2(gs_image_t *pim, bool write_1s)); + +/****** REMAINDER OF FILE UNDER CONSTRUCTION. PROCEED AT YOUR OWN RISK. ******/ + +#if 0 + +/* ---------------- Services ---------------- */ + +/* +In order to make the driver's life easier, we provide the following callback +procedure: +*/ + +int gx_map_image_color(P5(gx_device *dev, + const gs_image_t *pim, + const gx_color_rendering_info *pcri, + const uint components[4], + gx_drawing_color *pdcolor)); + +/* +Map a source color to a drawing color. The components are simply the pixel +component values from the input data, i.e., 1 to 4 B-bit numbers from the +source data. Return 0 if the operation succeeded, or a negative error code. +*/ + +#endif /****************************************************************/ + +#endif /* gsiparam_INCLUDED */ |