diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/image/image.h')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/image/image.h | 94 |
1 files changed, 48 insertions, 46 deletions
diff --git a/Build/source/texk/web2c/luatexdir/image/image.h b/Build/source/texk/web2c/luatexdir/image/image.h index a2d47f6a471..c4d0c3963f7 100644 --- a/Build/source/texk/web2c/luatexdir/image/image.h +++ b/Build/source/texk/web2c/luatexdir/image/image.h @@ -1,7 +1,7 @@ /* image.h Copyright 1996-2006 Han The Thanh <thanh@pdftex.org> - Copyright 2006-2009 Taco Hoekwater <taco@luatex.org> + Copyright 2006-2010 Taco Hoekwater <taco@luatex.org> This file is part of LuaTeX. @@ -18,23 +18,20 @@ You should have received a copy of the GNU General Public License along with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */ -/* $Id: image.h 2336 2009-04-19 08:38:24Z hhenkel $ */ +/* $Id: image.h 3388 2010-01-26 10:59:04Z taco $ */ #ifndef IMAGE_H # define IMAGE_H # include <png.h> +# include "pdf/pdftypes.h" /* for scaled_whd */ # define JPG_UINT16 unsigned int # define JPG_UINT32 unsigned long # define JPG_UINT8 unsigned char -# define IMAGE_COLOR_B 1 -# define IMAGE_COLOR_C 2 -# define IMAGE_COLOR_I 4 - -extern integer zround(double); /* from zround.c */ -# define bp2int(p) zround(p * (one_hundred_bp / 100.0)) +extern int do_zround(double r); /* from utils.c */ +# define bp2int(p) do_zround(p * (one_hundred_bp / 100.0)) # define int2bp(i) (i * 100.0 / one_hundred_bp) # define TYPE_IMG "image" @@ -83,31 +80,33 @@ typedef enum { PDF_BOX_SPEC_NONE, PDF_BOX_SPEC_MEDIA, PDF_BOX_SPEC_CROP, /**********************************************************************/ typedef struct { - integer objnum; - integer index; /* /Im1, /Im2, ... */ - integer x_size; /* dimensions in pixel counts as in JPG/PNG/JBIG2 file */ - integer y_size; - integer x_orig; /* origin in sp for PDF files */ - integer y_orig; - integer x_res; /* pixel resolution as in JPG/PNG/JBIG2 file */ - integer y_res; - integer rotation; /* rotation (multiples of 90 deg.) for PDF files */ - integer colorspace; /* number of /ColorSpace object */ - integer group_ref; /* if it's <=0, the page has no group */ - integer total_pages; - integer page_num; /* requested page (by number) */ + int objnum; + int index; /* /Im1, /Im2, ... */ + scaled_whd dimen; /* TeX dimensions given to \pdfximage */ + int transform; /* transform given to \pdfximage */ + int x_size; /* dimensions in pixel counts as in JPG/PNG/JBIG2 file */ + int y_size; + int x_orig; /* origin in sp for PDF files */ + int y_orig; + int x_res; /* pixel resolution as in JPG/PNG/JBIG2 file */ + int y_res; + int rotation; /* rotation (multiples of 90 deg.) for PDF files */ + int colorspace; /* number of /ColorSpace object */ + int group_ref; /* if it's <=0, the page has no group */ + int total_pages; + int page_num; /* requested page (by number) */ char *pagename; /* requested page (by name) */ char *filename; /* requested raw file name */ char *filepath; /* full file path after kpathsea */ char *attr; /* additional image dict entries */ FILE *file; imgtype_e image_type; - int color_space; /* used color space. See JPG_ constants */ + int procset; /* /ProcSet flags */ int color_depth; /* color depth */ pdfboxspec_e page_box_spec; /* PDF page box spec.: media/crop/bleed/trim/art */ - integer bbox[4]; + int bbox[4]; dict_state state; - integer flags; + int flags; union { pdf_stream_struct *pdfstream; png_img_struct *png; @@ -118,6 +117,11 @@ typedef struct { # define img_objnum(N) ((N)->objnum) # define img_index(N) ((N)->index) +# define img_dimen(N) ((N)->dimen) +# define img_width(N) ((N)->dimen.wd) +# define img_height(N) ((N)->dimen.ht) +# define img_depth(N) ((N)->dimen.dp) +# define img_transform(N) ((N)->transform) # define img_xsize(N) ((N)->x_size) # define img_ysize(N) ((N)->y_size) # define img_xorig(N) ((N)->x_orig) @@ -135,11 +139,12 @@ typedef struct { # define img_attr(N) ((N)->attr) # define img_file(N) ((N)->file) # define img_type(N) ((N)->image_type) -# define img_color(N) ((N)->color_space) +# define img_procset(N) ((N)->procset) # define img_colordepth(N) ((N)->color_depth) # define img_pagebox(N) ((N)->page_box_spec) # define img_bbox(N) ((N)->bbox) # define img_state(N) ((N)->state) +# define img_flags(N) ((N)->flags) # define img_pdfstream_ptr(N) ((N)->img_struct.pdfstream) # define img_pdfstream_stream(N) ((N)->img_struct.pdfstream->stream) @@ -154,42 +159,39 @@ typedef struct { # define img_jb2_ptr(N) ((N)->img_struct.jb2) # define F_FLAG_BBOX (1 << 0) +# define F_FLAG_GROUP (1 << 1) # define img_set_bbox(N) (img_flags(N) |= F_FLAG_BBOX) # define img_unset_bbox(N) (img_flags(N) &= ~F_FLAG_BBOX) # define img_is_bbox(N) ((img_flags(N) & F_FLAG_BBOX) != 0) +# define img_set_group(N) (img_flags(N) |= F_FLAG_GROUP) +# define img_unset_group(N) (img_flags(N) &= ~F_FLAG_GROUP) +# define img_is_group(N) ((img_flags(N) & F_FLAG_GROUP) != 0) + +# define epdf_xsize(a) img_xsize(idict_array[a]) +# define epdf_ysize(a) img_ysize(idict_array[a]) +# define epdf_orig_x(a) img_xorig(idict_array[a]) +# define epdf_orig_y(a) img_yorig(idict_array[a]) + +# define is_pdf_image(a) (img_type(idict_array[a]) == IMG_TYPE_PDF) +# define is_png_image(a) (img_type(idict_array[a]) == IMG_TYPE_PNG) + +# define img_is_refered(N) (img_index(N) != -1) + /**********************************************************************/ +/* image structure corresponds to pdfrefximage node */ typedef struct { - integer width; /* requested/actual TeX dimensions */ - integer height; - integer depth; - integer transform; - integer flags; + scaled_whd dimen; /* requested/actual TeX dimensions */ + int transform; image_dict *dict; - int array_idx; /* index within img_array */ int dict_ref; /* luaL_ref() reference */ } image; -# define img_width(N) ((N)->width) -# define img_height(N) ((N)->height) -# define img_depth(N) ((N)->depth) -# define img_transform(N) ((N)->transform) -# define img_flags(N) ((N)->flags) # define img_dict(N) ((N)->dict) -# define img_arrayidx(N) ((N)->array_idx) # define img_dictref(N) ((N)->dict_ref) -# define img_is_refered(N) (img_arrayidx(N) != -1) - -# define F_FLAG_SCALED (1 << 0) - -# define img_flags(N) ((N)->flags) -# define img_set_scaled(N) (img_flags(N) |= F_FLAG_SCALED) -# define img_unset_scaled(N) (img_flags(N) &= ~F_FLAG_SCALED) -# define img_is_scaled(N) ((img_flags(N) & F_FLAG_SCALED) != 0) - # define set_wd_running(N) (img_width(N) = null_flag) # define set_ht_running(N) (img_height(N) = null_flag) # define set_dp_running(N) (img_depth(N) = null_flag) |