diff options
Diffstat (limited to 'Build/source/texk/web2c/pdftexdir/writeimg.c')
-rw-r--r-- | Build/source/texk/web2c/pdftexdir/writeimg.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/Build/source/texk/web2c/pdftexdir/writeimg.c b/Build/source/texk/web2c/pdftexdir/writeimg.c index 982eca48a40..080ab3a37a6 100644 --- a/Build/source/texk/web2c/pdftexdir/writeimg.c +++ b/Build/source/texk/web2c/pdftexdir/writeimg.c @@ -1,5 +1,5 @@ /* -Copyright (c) 1996-2007 Han The Thanh, <thanh@pdftex.org> +Copyright (c) 1996-2008 Han The Thanh, <thanh@pdftex.org> This file is part of pdfTeX. @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with pdfTeX; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -$Id: writeimg.c 170 2007-07-06 21:00:55Z oneiros $ +$Id$ */ #include "ptexlib.h" @@ -38,6 +38,7 @@ integer epdf_selected_page; integer epdf_num_pages; integer epdf_page_box; void *epdf_doc; +integer epdf_lastGroupObjectNum; static integer new_image_entry(void) { @@ -50,6 +51,7 @@ static integer new_image_entry(void) image_ptr->width = 0; image_ptr->height = 0; image_ptr->colorspace_ref = 0; + image_ptr->group_ref = 0; return image_ptr++ - image_array; } @@ -83,6 +85,11 @@ boolean ispdfimage(integer img) return img_type(img) == IMAGE_TYPE_PDF; } +boolean ispngimage(integer img) +{ + return img_type(img) == IMAGE_TYPE_PNG; +} + boolean checkimageb(integer procset) { return procset & IMAGE_COLOR_B; @@ -135,6 +142,11 @@ integer imagecolordepth(integer img) } } +integer imagegroupref(integer img) +{ + return img_group_ref(img); +} + /* Patch ImageTypeDetection 2003/02/08 by Heiko Oberdiek. @@ -301,6 +313,7 @@ integer readimage(strnumber s, integer page_num, strnumber page_name, pdf_ptr(img)->orig_y = bp2int(epdf_orig_y); pdf_ptr(img)->selected_page = page_num; pdf_ptr(img)->doc = epdf_doc; + img_group_ref(img) = epdf_lastGroupObjectNum; break; case IMAGE_TYPE_PNG: img_pages(img) = 1; @@ -348,12 +361,20 @@ void writeimage(integer img) epdf_doc = pdf_ptr(img)->doc; epdf_selected_page = pdf_ptr(img)->selected_page; epdf_page_box = pdf_ptr(img)->page_box; + epdf_lastGroupObjectNum = img_group_ref(img); write_epdf(); break; default: pdftex_fail("unknown type of image"); } tex_printf(">"); + if (img_type(img) == IMAGE_TYPE_PDF) { + write_additional_epdf_objects(); + } else { + if (img_type(img) == IMAGE_TYPE_PNG) { + write_additional_png_objects(); + } + } cur_file_name = NULL; } @@ -462,6 +483,7 @@ void dumpimagemeta() dumpinteger(img_yres(img)); dumpinteger(img_pages(img)); dumpinteger(img_colorspace_ref(img)); + dumpinteger(img_group_ref(img)); /* the image_struct is not dumped at all, except for a few variables that are needed to restore the contents */ @@ -496,6 +518,7 @@ void undumpimagemeta(integer pdfversion, integer pdfinclusionerrorlevel) undumpinteger(img_yres(img)); undumpinteger(img_pages(img)); undumpinteger(img_colorspace_ref(img)); + undumpinteger(img_group_ref(img)); /* if img_name(img)==NULL -- which it shouldn't be -- the next line will trigger an assertion failure. */ |