2 * "$Id: image-private.h 4742 2005-10-02 23:01:43Z mike $"
4 * Private image library definitions for the Common UNIX Printing
7 * Copyright 1993-2005 by Easy Software Products.
9 * These coded instructions, statements, and computer programs are the
10 * property of Easy Software Products and are protected by Federal
11 * copyright law. Distribution and use rights are outlined in the file
12 * "LICENSE.txt" which should have been included with this file. If this
13 * file is missing or damaged please contact Easy Software Products
16 * Attn: CUPS Licensing Information
17 * Easy Software Products
18 * 44141 Airport View Drive, Suite 204
19 * Hollywood, Maryland 20636 USA
21 * Voice: (301) 373-9600
22 * EMail: cups-info@cups.org
23 * WWW: http://www.cups.org
25 * This file is subject to the Apple OS-Developed Software exception.
28 #ifndef _CUPS_IMAGE_PRIVATE_H_
29 # define _CUPS_IMAGE_PRIVATE_H_
32 * Include necessary headers...
36 # include <cups/cups.h>
37 # include <cups/debug.h>
38 # include <cups/string.h>
50 # define CUPS_IMAGE_MAX_WIDTH 0x07ffffff
51 /* 2^27-1 to allow for 15-channel data */
52 # define CUPS_IMAGE_MAX_HEIGHT 0x7fffffff
55 # define CUPS_TILE_SIZE 256 /* 256x256 pixel tiles */
56 # define CUPS_TILE_MINIMUM 10 /* Minimum number of tiles */
60 * min/max/abs macros...
64 # define max(a,b) ((a) > (b) ? (a) : (b))
67 # define min(a,b) ((a) < (b) ? (a) : (b))
70 # define abs(a) ((a) < 0 ? -(a) : (a))
75 * Types and structures...
80 typedef struct cups_itile_s
/**** Image tile ****/
82 int dirty
; /* True if tile is dirty */
83 long pos
; /* Position of tile on disk (-1 if not written) */
84 struct cups_ic_s
*ic
; /* Pixel data */
87 typedef struct cups_ic_s
/**** Image tile cache ****/
89 struct cups_ic_s
*prev
, /* Previous tile in cache */
90 *next
; /* Next tile in cache */
91 cups_itile_t
*tile
; /* Tile this is attached to */
92 cups_ib_t
*pixels
; /* Pixel data */
95 struct cups_image_s
/**** Image file data ****/
97 cups_icspace_t colorspace
; /* Colorspace of image */
98 unsigned xsize
, /* Width of image in pixels */
99 ysize
, /* Height of image in pixels */
100 xppi
, /* X resolution in pixels-per-inch */
101 yppi
, /* Y resolution in pixels-per-inch */
102 num_ics
, /* Number of cached tiles */
103 max_ics
; /* Maximum number of cached tiles */
104 cups_itile_t
**tiles
; /* Tiles in image */
105 cups_ic_t
*first
, /* First cached tile in image */
106 *last
; /* Last cached tile in image */
107 FILE *cachefile
; /* Tile cache file */
108 char cachename
[256]; /* Tile cache filename */
111 struct cups_izoom_s
/**** Image zoom data ****/
113 cups_image_t
*img
; /* Image to zoom */
114 cups_iztype_t type
; /* Type of zooming */
115 unsigned xorig
, /* X origin */
116 yorig
, /* Y origin */
117 width
, /* Width of input area */
118 height
, /* Height of input area */
119 depth
, /* Number of bytes per pixel */
120 rotated
, /* Non-zero if image needs to be rotated */
121 xsize
, /* Width of output image */
122 ysize
, /* Height of output image */
123 xmax
, /* Maximum input image X position */
124 ymax
, /* Maximum input image Y position */
125 xmod
, /* Threshold for Bresenheim rounding */
127 int xstep
, /* Amount to step for each pixel along X */
129 instep
, /* Amount to step pixel pointer along X */
131 ystep
, /* Amount to step for each pixel along Y */
133 row
; /* Current row */
134 cups_ib_t
*rows
[2], /* Horizontally scaled pixel data */
135 *in
; /* Unscaled input pixel data */
143 extern int _cupsImagePutCol(cups_image_t
*img
, int x
, int y
,
144 int height
, const cups_ib_t
*pixels
);
145 extern int _cupsImagePutRow(cups_image_t
*img
, int x
, int y
,
146 int width
, const cups_ib_t
*pixels
);
147 extern int _cupsImageReadBMP(cups_image_t
*img
, FILE *fp
,
148 cups_icspace_t primary
,
149 cups_icspace_t secondary
,
150 int saturation
, int hue
,
151 const cups_ib_t
*lut
);
152 extern int _cupsImageReadFPX(cups_image_t
*img
, FILE *fp
,
153 cups_icspace_t primary
,
154 cups_icspace_t secondary
,
155 int saturation
, int hue
,
156 const cups_ib_t
*lut
);
157 extern int _cupsImageReadGIF(cups_image_t
*img
, FILE *fp
,
158 cups_icspace_t primary
,
159 cups_icspace_t secondary
,
160 int saturation
, int hue
,
161 const cups_ib_t
*lut
);
162 extern int _cupsImageReadJPEG(cups_image_t
*img
, FILE *fp
,
163 cups_icspace_t primary
,
164 cups_icspace_t secondary
,
165 int saturation
, int hue
,
166 const cups_ib_t
*lut
);
167 extern int _cupsImageReadPIX(cups_image_t
*img
, FILE *fp
,
168 cups_icspace_t primary
,
169 cups_icspace_t secondary
,
170 int saturation
, int hue
,
171 const cups_ib_t
*lut
);
172 extern int _cupsImageReadPNG(cups_image_t
*img
, FILE *fp
,
173 cups_icspace_t primary
,
174 cups_icspace_t secondary
,
175 int saturation
, int hue
,
176 const cups_ib_t
*lut
);
177 extern int _cupsImageReadPNM(cups_image_t
*img
, FILE *fp
,
178 cups_icspace_t primary
,
179 cups_icspace_t secondary
,
180 int saturation
, int hue
,
181 const cups_ib_t
*lut
);
182 extern int _cupsImageReadPhotoCD(cups_image_t
*img
, FILE *fp
,
183 cups_icspace_t primary
,
184 cups_icspace_t secondary
,
185 int saturation
, int hue
,
186 const cups_ib_t
*lut
);
187 extern int _cupsImageReadSGI(cups_image_t
*img
, FILE *fp
,
188 cups_icspace_t primary
,
189 cups_icspace_t secondary
,
190 int saturation
, int hue
,
191 const cups_ib_t
*lut
);
192 extern int _cupsImageReadSunRaster(cups_image_t
*img
, FILE *fp
,
193 cups_icspace_t primary
,
194 cups_icspace_t secondary
,
195 int saturation
, int hue
,
196 const cups_ib_t
*lut
);
197 extern int _cupsImageReadTIFF(cups_image_t
*img
, FILE *fp
,
198 cups_icspace_t primary
,
199 cups_icspace_t secondary
,
200 int saturation
, int hue
,
201 const cups_ib_t
*lut
);
204 #endif /* !_CUPS_IMAGE_PRIVATE_H_ */
207 * End of "$Id: image-private.h 4742 2005-10-02 23:01:43Z mike $".