Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_tlsv12/sys/src/cmd/gs/src/gdevpsds.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Copyright (C) 1997, 2000 Aladdin Enterprises.  All rights reserved.
2
 
3
  This software is provided AS-IS with no warranty, either express or
4
  implied.
5
 
6
  This software is distributed under license and may not be copied,
7
  modified or distributed except as expressly authorized under the terms
8
  of the license contained in the file LICENSE in this distribution.
9
 
10
  For more information about licensing, please refer to
11
  http://www.ghostscript.com/licensing/. For information on
12
  commercial licensing, go to http://www.artifex.com/licensing/ or
13
  contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14
  San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
*/
16
 
17
/* $Id: gdevpsds.h,v 1.12 2005/02/26 18:07:43 igor Exp $ */
18
/* Image processing stream interface for PostScript and PDF writers */
19
 
20
#ifndef gdevpsds_INCLUDED
21
#  define gdevpsds_INCLUDED
22
 
23
#include "strimpl.h"
24
#include "gsiparam.h"
25
 
26
/* ---------------- Depth conversion ---------------- */
27
 
28
/* Convert between 1/2/4/12 bits and 8 bits. */
29
typedef struct stream_1248_state_s {
30
    stream_state_common;
31
    /* The following are set at initialization time. */
32
    uint samples_per_row;	/* >0 */
33
    int bits_per_sample;	/* 1, 2, 4, 12 */
34
    /* The following are updated dynamically. */
35
    uint left;			/* # of samples left in current row */
36
} stream_1248_state;
37
 
38
/* Convert N (1, 2, 4, 12) bits to 8. */
39
extern const stream_template s_1_8_template;
40
extern const stream_template s_2_8_template;
41
extern const stream_template s_4_8_template;
42
extern const stream_template s_12_8_template;
43
 
44
/* Reduce 8 bits to N (1, 2, 4). */
45
/* We do not currently support converting 8 bits to 12. */
46
extern const stream_template s_8_1_template;
47
extern const stream_template s_8_2_template;
48
extern const stream_template s_8_4_template;
49
 
50
/* Initialize an expansion or reduction stream. */
51
int s_1248_init(stream_1248_state *ss, int Columns, int samples_per_pixel);
52
 
53
/* ---------------- Color space conversion ---------------- */
54
 
55
/* Convert (8-bit) CMYK to RGB. */
56
typedef struct stream_C2R_state_s {
57
    stream_state_common;
58
    /* The following are set at initialization time. */
59
    const gs_imager_state *pis;	/* for UCR & BG */
60
} stream_C2R_state;
61
 
62
#define private_st_C2R_state()	/* in gdevpsds.c */\
63
  gs_private_st_ptrs1(st_C2R_state, stream_C2R_state, "stream_C2R_state",\
64
    c2r_enum_ptrs, c2r_reloc_ptrs, pis)
65
extern const stream_template s_C2R_template;
66
 
67
/* Initialize a CMYK => RGB conversion stream. */
68
int s_C2R_init(stream_C2R_state *ss, const gs_imager_state *pis);
69
 
70
/* Convert an image to indexed form (IndexedEncode filter). */
71
typedef struct stream_IE_state_s {
72
    stream_state_common;
73
    /* The client sets the following before initializing the stream. */
74
    int BitsPerComponent;	/* 1, 2, 4, 8 */
75
    int NumComponents;
76
    int Width;			/* pixels per scan line, > 0 */
77
    int BitsPerIndex;		/* 1, 2, 4, 8 */
78
    /*
79
     * Note: this is not quite the same as the Decode array for images:
80
     * [0..1] designates the range of the corresponding component of the
81
     * color space, not the literal values 0..1.  This is the same for
82
     * all color spaces except Lab, where the default values here are
83
     * [0 1 0 1 0 1] rather than [0 100 amin amax bmin bmax].
84
     */
85
    const float *Decode;
86
    /*
87
     * The client must provide a Table whose size is at least
88
     * ((1 << BitsPerIndex) + 1) * NumComponents.  After the stream is
89
     * closed, the first (N + 1) * NumComponents bytes of the Table
90
     * will hold the palette, where N is the contents of the last byte of
91
     * the Table.
92
     */
93
    gs_bytestring Table;
94
    /* The following change dynamically. */
95
    int hash_table[400];	/* holds byte offsets in Table */
96
    int next_index;		/* next Table offset to assign */
97
    uint byte_in;
98
    int in_bits_left;
99
    int next_component;
100
    uint byte_out;
101
    int x;
102
} stream_IE_state;
103
 
104
#define private_st_IE_state()	/* in gdevpsds.c */\
105
  gs_public_st_composite(st_IE_state, stream_IE_state, "stream_IE_state",\
106
    ie_state_enum_ptrs, ie_state_reloc_ptrs)
107
 
108
extern const stream_template s_IE_template;
109
 
110
/* ---------------- Downsampling ---------------- */
111
 
112
/* Downsample, possibly with anti-aliasing. */
113
#define stream_Downsample_state_common\
114
	stream_state_common;\
115
		/* The client sets the following before initialization. */\
116
	int Colors;\
117
	int WidthIn, HeightIn;\
118
	int XFactor, YFactor;\
119
	bool AntiAlias;\
120
	bool padX, padY;	/* keep excess samples */\
121
		/* The following are updated dynamically. */\
122
	int x, y		/* position within input image */
123
#define s_Downsample_set_defaults_inline(ss)\
124
  ((ss)->AntiAlias = (ss)->padX = (ss)->padY = false)
125
typedef struct stream_Downsample_state_s {
126
    stream_Downsample_state_common;
127
} stream_Downsample_state;
128
 
129
/* Return the number of samples after downsampling. */
130
int s_Downsample_size_out(int size_in, int factor, bool pad);
131
 
132
/* Subsample */
133
typedef struct stream_Subsample_state_s {
134
    stream_Downsample_state_common;
135
} stream_Subsample_state;
136
extern const stream_template s_Subsample_template;
137
 
138
/* Average */
139
typedef struct stream_Average_state_s {
140
    stream_Downsample_state_common;
141
    uint sum_size;
142
    uint copy_size;
143
    uint *sums;			/* accumulated sums for average */
144
} stream_Average_state;
145
 
146
#define private_st_Average_state()	/* in gdevpsds.c */\
147
  gs_private_st_ptrs1(st_Average_state, stream_Average_state,\
148
    "stream_Average_state", avg_enum_ptrs, avg_reloc_ptrs, sums)
149
extern const stream_template s_Average_template;
150
 
151
/* ---------------- Image compression chooser ---------------- */
152
 
153
typedef struct stream_compr_chooser_state_s {
154
    stream_state_common;
155
    uint choice;
156
    uint width, height, depth, bits_per_sample;
157
    uint samples_count, bits_left;
158
    ulong packed_data;
159
    byte *sample;
160
    ulong upper_plateaus, lower_plateaus;
161
    ulong gradients;
162
} stream_compr_chooser_state;
163
 
164
#define private_st_compr_chooser_state()	/* in gdevpsds.c */\
165
  gs_private_st_ptrs1(st_compr_chooser_state, stream_compr_chooser_state, \
166
    "stream_compr_chooser_state",\
167
    compr_chooser_enum_ptrs, compr_chooser_reloc_ptrs, sample)
168
 
169
extern const stream_template s_compr_chooser_template;
170
 
171
/* Set image dimensions. */
172
int
173
s_compr_chooser_set_dimensions(stream_compr_chooser_state * st, int width, 
174
			       int height, int depth, int bits_per_sample);
175
 
176
/* Get choice */
177
uint s_compr_chooser__get_choice(stream_compr_chooser_state *st, bool force);
178
 
179
/* ---------------- Am image color conversion filter ---------------- */
180
 
181
#ifndef gx_device_DEFINED
182
#  define gx_device_DEFINED
183
typedef struct gx_device_s gx_device;
184
#endif
185
 
186
typedef struct stream_image_colors_state_s stream_image_colors_state;
187
 
188
struct stream_image_colors_state_s {
189
    stream_state_common;
190
    uint width, height, depth, bits_per_sample;
191
    byte output_bits_buffer;
192
    uint output_bits_buffered;
193
    uint output_component_bits_written;
194
    uint output_component_index;
195
    uint output_depth, output_bits_per_sample;
196
    uint raster;
197
    uint row_bits;
198
    uint row_bits_passed;
199
    uint row_alignment_bytes;
200
    uint row_alignment_bytes_left;
201
    uint input_component_index;
202
    uint input_bits_buffer;
203
    uint input_bits_buffered;
204
    uint input_color[GS_IMAGE_MAX_COLOR_COMPONENTS];
205
    uint output_color[GS_IMAGE_MAX_COLOR_COMPONENTS];
206
    uint MaskColor[GS_IMAGE_MAX_COLOR_COMPONENTS * 2];
207
    float Decode[GS_IMAGE_MAX_COLOR_COMPONENTS * 2];
208
    const gs_color_space *pcs;
209
    gx_device *pdev;
210
    const gs_imager_state *pis;
211
    int (*convert_color)(stream_image_colors_state *);
212
};
213
 
214
#define private_st_image_colors_state()	/* in gdevpsds.c */\
215
  gs_private_st_ptrs3(st_stream_image_colors_state, stream_image_colors_state,\
216
    "stream_image_colors_state", stream_image_colors_enum_ptrs,\
217
    stream_image_colors_reloc_ptrs, pcs, pdev, pis)
218
 
219
extern const stream_template s_image_colors_template;
220
 
221
void s_image_colors_set_dimensions(stream_image_colors_state * st, 
222
			       int width, int height, int depth, int bits_per_sample);
223
 
224
void s_image_colors_set_mask_colors(stream_image_colors_state * ss, uint *MaskColor);
225
 
226
void s_image_colors_set_color_space(stream_image_colors_state * ss, gx_device *pdev,
227
			       const gs_color_space *pcs, const gs_imager_state *pis,
228
			       float *Decode);
229
 
230
extern const stream_template s__image_colors_template;
231
 
232
#endif /* gdevpsds_INCLUDED */