// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "imagjpeg.h"
#endif
#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 <windows.h>
+ #include "wx/msw/wrapwin.h"
#endif
extern "C"
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 */
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 */