X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14f355c2b5c71fc7c3d680aea366582d2ac60f7b..2659dad3209167f248dcae39a7ee25d2f8c91ff9:/src/common/imagjpeg.cpp?ds=sidebyside diff --git a/src/common/imagjpeg.cpp b/src/common/imagjpeg.cpp index 4173a9b5e7..d2d50a0e5d 100644 --- a/src/common/imagjpeg.cpp +++ b/src/common/imagjpeg.cpp @@ -40,6 +40,9 @@ extern "C" { + #if defined(__WXMSW__) + #define XMD_H + #endif #include "jpeglib.h" } @@ -178,7 +181,6 @@ void jpeg_wxio_src( j_decompress_ptr cinfo, wxInputStream& infile ) cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr)); - src = (my_src_ptr) cinfo->src; } src = (my_src_ptr) cinfo->src; src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ @@ -357,6 +359,21 @@ bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbo if (image->HasOption(wxT("quality"))) jpeg_set_quality(&cinfo, image->GetOptionInt(wxT("quality")), TRUE); + // sets the resolution fields in the output file + if (image->HasOption(wxIMAGE_OPTION_RESOLUTION)) + { + cinfo.X_density = + cinfo.Y_density = image->GetOptionInt(wxIMAGE_OPTION_RESOLUTION); + } + + // sets the resolution unit field in the output file + // wxIMAGE_RESOLUTION_INCHES for inches + // wxIMAGE_RESOLUTION_CM for centimeters + if (image->HasOption(wxIMAGE_OPTION_RESOLUTIONUNIT)) + { + cinfo.density_unit = image->GetOptionInt(wxIMAGE_OPTION_RESOLUTIONUNIT); + } + jpeg_start_compress(&cinfo, TRUE); stride = cinfo.image_width * 3; /* JSAMPLEs per row in image_buffer */