X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/39d16996b7616bf8090b140db74fd0b52d50d169..77c5e9230e558873be25c8a5472b9b9038b03466:/src/common/imagjpeg.cpp diff --git a/src/common/imagjpeg.cpp b/src/common/imagjpeg.cpp index c2525bae43..7590cee417 100644 --- a/src/common/imagjpeg.cpp +++ b/src/common/imagjpeg.cpp @@ -7,7 +7,7 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "imagjpeg.h" #endif @@ -28,13 +28,14 @@ #include "wx/log.h" #include "wx/app.h" -// NB: Some compilers define boolean type in Windows headers (e.g. Watcom C++). +// NB: Some compilers define boolean type in Windows headers +// (e.g. Watcom C++, but not Open Watcom). // This causes a conflict with jmorecfg.h header from libjpeg, so we have // to make sure libjpeg won't try to define boolean itself. This is done by // defining HAVE_BOOLEAN. -#if defined(__WXMSW__) && (defined(__MWERKS__) || defined(__WATCOMC__)) +#if defined(__WXMSW__) && (defined(__MWERKS__) || defined(__DIGITALMARS__) || (defined(__WATCOMC__) && __WATCOMC__ < 1200)) #define HAVE_BOOLEAN - #include + #include "wx/msw/wrapwin.h" #endif extern "C" @@ -177,7 +178,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 */ @@ -356,6 +356,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 */