diff options
Diffstat (limited to 'Build/source/texk/xdvipdfmx/src/pngimage.c')
-rw-r--r-- | Build/source/texk/xdvipdfmx/src/pngimage.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Build/source/texk/xdvipdfmx/src/pngimage.c b/Build/source/texk/xdvipdfmx/src/pngimage.c index 9d680b73afd..0176411e514 100644 --- a/Build/source/texk/xdvipdfmx/src/pngimage.c +++ b/Build/source/texk/xdvipdfmx/src/pngimage.c @@ -1,4 +1,4 @@ -/* $Header: /home/cvsroot/dvipdfmx/src/pngimage.c,v 1.24 2004/09/11 14:50:29 hirata Exp $ +/* $Header: /home/cvsroot/dvipdfmx/src/pngimage.c,v 1.25 2007/05/18 05:19:01 chofchof Exp $ This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks. @@ -165,8 +165,8 @@ png_include_image (pdf_ximage *ximage, FILE *png_file) png_structp png_ptr; png_infop png_info_ptr; png_byte bpc, color_type; - png_uint_32 width, height, rowbytes; - + png_uint_32 width, height, rowbytes, xppm, yppm; + pdf_ximage_init_image_info(&info); stream = NULL; @@ -192,9 +192,8 @@ png_include_image (pdf_ximage *ximage, FILE *png_file) width = png_get_image_width (png_ptr, png_info_ptr); height = png_get_image_height(png_ptr, png_info_ptr); bpc = png_get_bit_depth (png_ptr, png_info_ptr); - - info.xdpi = png_get_x_pixels_per_meter(png_ptr, png_info_ptr) * 0.0254; - info.ydpi = png_get_y_pixels_per_meter(png_ptr, png_info_ptr) * 0.0254; + xppm = png_get_x_pixels_per_meter(png_ptr, png_info_ptr); + yppm = png_get_y_pixels_per_meter(png_ptr, png_info_ptr); /* We do not need 16-bpc color. Ask libpng to convert down to 8-bpc. */ if (bpc > 8) { @@ -214,6 +213,10 @@ png_include_image (pdf_ximage *ximage, FILE *png_file) info.width = width; info.height = height; info.bits_per_component = bpc; + if (xppm > 0) + info.xdensity = 72.0 / 0.0254 / xppm; + if (yppm > 0) + info.ydensity = 72.0 / 0.0254 / yppm; stream_data_ptr = (png_bytep) NEW(rowbytes*height, png_byte); read_image_data(png_ptr, png_info_ptr, stream_data_ptr, height, rowbytes); |