17
16
along with pdfTeX; if not, write to the Free Software
18
17
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
$Id: //depot/Build/source.development/TeX/texk/web2c/pdftexdir/image.h#10 $
19
$Id: image.h 1125 2008-03-25 19:36:52Z hhenkel $
25
/* JPG_IMAGE_INFO is main structure for interchange of image data */
27
#define JPG_UINT16 unsigned int
28
#define JPG_UINT32 unsigned long
29
#define JPG_UINT8 unsigned char
32
int color_space; /* used color space. See JPG_ constants */
33
JPG_UINT8 bits_per_component; /* bits per component */
34
JPG_UINT32 length; /* length of file/data */
35
FILE *file; /* jpg file */
25
# include <../libpng/png.h>
27
# define JPG_UINT16 unsigned int
28
# define JPG_UINT32 unsigned long
29
# define JPG_UINT8 unsigned char
31
# define IMAGE_COLOR_B 1
32
# define IMAGE_COLOR_C 2
33
# define IMAGE_COLOR_I 4
35
extern integer zround(double); /* from zround.c */
36
# define bp2int(p) zround(p * (one_hundred_bp / 100.0))
38
# define TYPE_IMG "image"
39
# define TYPE_IMG_DICT "image-dict"
41
# define scaled integer
43
/**********************************************************************/
39
46
png_structp png_ptr;
40
47
png_infop info_ptr;
46
integer selected_page;
52
integer selected_page;
51
int color_space; /* used color space. See JPG_ constants */
52
JPG_UINT32 length; /* length of file/data */
55
typedef struct { /* currently unused */
58
typedef enum { DICT_NEW, /* fresh dictionary */
59
DICT_FILESCANNED, /* image file scanned */
60
DICT_REFERED, /* pdf_refximage_node in node list --> read-only dict */
61
DICT_OUTIMG, /* /Im* appears in pagestream */
62
DICT_SCHEDULED, /* image dict scheduled for writing */
63
DICT_WRITTEN /* image dict written to file */
66
typedef enum { IMAGE_TYPE_NONE, IMAGE_TYPE_PDF, IMAGE_TYPE_PNG, IMAGE_TYPE_JPG,
67
IMAGE_TYPE_JBIG2, IMAGE_TYPE_SENTINEL
70
typedef enum { IMG_KEEPOPEN, IMG_CLOSEINBETWEEN } img_readtype_e;
72
typedef enum { PDF_BOX_SPEC_NONE, PDF_BOX_SPEC_MEDIA, PDF_BOX_SPEC_CROP,
73
PDF_BOX_SPEC_BLEED, PDF_BOX_SPEC_TRIM, PDF_BOX_SPEC_ART,
77
/**********************************************************************/
81
integer index; /* /Im1, /Im2, ... */
82
integer x_size; /* dimensions in pixel counts as in JPG/PNG/JBIG2 file */
84
integer x_orig; /* origin in sp for PDF files */
86
integer x_res; /* pixel resolution as in JPG/PNG/JBIG2 file */
65
integer colorspace_ref;
88
integer colorspace; /* number of /ColorSpace object */
90
integer page_num; /* requested page (by number) */
91
char *pagename; /* requested page (by name) */
92
char *filename; /* requested raw file name */
93
char *filepath; /* full file path after kpathsea */
94
char *attr; /* additional image dict entries */
97
int color_space; /* used color space. See JPG_ constants */
98
int color_depth; /* color depth */
99
pdfboxspec_e page_box_spec; /* PDF page box spec.: media/crop/bleed/trim/art */
67
pdf_image_struct *pdf;
70
JBIG2_IMAGE_INFO *jbig2;
74
extern image_entry *image_ptr, *image_array;
75
extern integer image_max;
77
#define IMAGE_TYPE_NONE 0
78
#define IMAGE_TYPE_PDF 1
79
#define IMAGE_TYPE_PNG 2
80
#define IMAGE_TYPE_JPG 3
81
#define IMAGE_TYPE_TIF 4
82
#define IMAGE_TYPE_JBIG2 5
84
#define IMAGE_COLOR_B 1
85
#define IMAGE_COLOR_C 2
86
#define IMAGE_COLOR_I 4
88
#define img_ptr(N) (image_array + (N))
89
#define img_name(N) (img_ptr(N)->image_name)
90
#define img_type(N) (img_ptr(N)->image_type)
91
#define img_color(N) (img_ptr(N)->color_type)
92
#define img_colorspace_ref(N) (img_ptr(N)->colorspace_ref)
93
#define img_pages(N) (img_ptr(N)->num_pages)
94
#define img_width(N) (img_ptr(N)->width)
95
#define img_height(N) (img_ptr(N)->height)
96
#define img_xres(N) (img_ptr(N)->x_res)
97
#define img_yres(N) (img_ptr(N)->y_res)
98
#define png_ptr(N) (img_ptr(N)->image_struct.png.png_ptr)
99
#define png_info(N) (img_ptr(N)->image_struct.png.info_ptr)
100
#define pdf_ptr(N) (img_ptr(N)->image_struct.pdf)
101
#define jpg_ptr(N) (img_ptr(N)->image_struct.jpg)
102
#define jbig2_ptr(N) (img_ptr(N)->image_struct.jbig2)
103
#define tif_ptr(N) (img_ptr(N)->image_struct.tif)
105
extern integer read_pdf_info (char *, char *, integer, integer, integer,
107
extern void write_epdf (void);
108
extern void epdf_delete (void);
109
extern void read_png_info (integer);
110
extern void write_png (integer);
111
extern void read_jpg_info (integer);
112
extern void write_jpg (integer);
113
extern void read_jbig2_info(integer);
114
extern void write_jbig2(integer);
108
# define img_objnum(N) ((N)->objnum)
109
# define img_index(N) ((N)->index)
110
# define img_xsize(N) ((N)->x_size)
111
# define img_ysize(N) ((N)->y_size)
112
# define img_xorig(N) ((N)->x_orig)
113
# define img_yorig(N) ((N)->y_orig)
114
# define img_xres(N) ((N)->x_res)
115
# define img_yres(N) ((N)->y_res)
116
# define img_colorspace(N) ((N)->colorspace)
117
# define img_totalpages(N) ((N)->total_pages)
118
# define img_pagenum(N) ((N)->page_num)
119
# define img_pagename(N) ((N)->pagename)
120
# define img_filename(N) ((N)->filename)
121
# define img_filepath(N) ((N)->filepath)
122
# define img_attr(N) ((N)->attr)
123
# define img_file(N) ((N)->file)
124
# define img_type(N) ((N)->image_type)
125
# define img_color(N) ((N)->color_space)
126
# define img_colordepth(N) ((N)->color_depth)
127
# define img_pagebox(N) ((N)->page_box_spec)
128
# define img_state(N) ((N)->state)
130
# define img_png_ptr(N) ((N)->img_struct.png)
131
# define img_png_png_ptr(N) ((N)->img_struct.png->png_ptr)
132
# define img_png_info_ptr(N) ((N)->img_struct.png->info_ptr)
134
# define img_jpg_ptr(N) ((N)->img_struct.jpg)
135
# define img_jpg_color(N) ((N)->img_struct.jpg->color_space)
137
# define img_jb2_ptr(N) ((N)->img_struct.jb2)
139
/**********************************************************************/
142
integer width; /* requested/actual TeX dimensions */
148
int dict_ref; /* luaL_ref() reference */
151
# define img_width(N) ((N)->width)
152
# define img_height(N) ((N)->height)
153
# define img_depth(N) ((N)->depth)
154
# define img_transform(N) ((N)->transform)
155
# define img_flags(N) ((N)->flags)
156
# define img_dict(N) ((N)->dict)
157
# define img_dictref(N) ((N)->dict_ref)
159
# define F_FLAG_SCALED 0x01
160
# define F_FLAG_REFERED 0x02
162
# define img_flags(N) ((N)->flags)
163
# define img_set_scaled(N) (img_flags(N) |= F_FLAG_SCALED)
164
# define img_set_refered(N) (img_flags(N) |= F_FLAG_REFERED)
165
# define img_unset_scaled(N) (img_flags(N) &= ~F_FLAG_SCALED)
166
# define img_unset_refered(N) (img_flags(N) &= ~F_FLAG_REFERED)
167
# define img_is_scaled(N) ((img_flags(N) & F_FLAG_SCALED) != 0)
168
# define img_is_refered(N) ((img_flags(N) & F_FLAG_REFERED) != 0)
170
# define set_wd_running(N) (img_width(N) = null_flag)
171
# define set_ht_running(N) (img_height(N) = null_flag)
172
# define set_dp_running(N) (img_depth(N) = null_flag)
173
# define is_wd_running(N) (img_width(N) == null_flag)
174
# define is_ht_running(N) (img_height(N) == null_flag)
175
# define is_dp_running(N) (img_depth(N) == null_flag)
177
/**********************************************************************/
182
image_dict *new_image_dict();
183
void init_image(image *);
184
void init_image_dict(image_dict *);
185
void scale_img(image *);
186
integer img_to_array(image *);
187
void delete_image(image *);
188
void free_image_dict(image_dict * p);
189
void read_img(image_dict *, integer, integer);
193
# ifndef boolean /* TODO: from where to get the original definition? */
197
void read_png_info(image_dict *, img_readtype_e);
198
void read_jpg_info(image_dict *, img_readtype_e);
199
void read_jbig2_info(image_dict *);
200
void read_pdf_info(image_dict *, integer, integer);
201
void write_img(image_dict *);
202
void write_png(image_dict *);
203
void write_jpg(image_dict *);
204
void write_jbig2(image_dict *);
205
void write_epdf(image_dict *);
209
void unrefPdfDocument(char *);