]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagjpeg.cpp
wxMac needs the scroll styles
[wxWidgets.git] / src / common / imagjpeg.cpp
index 4173a9b5e7e58829e426222535325b0433321a2b..d2d50a0e5d8e9104a95ea0eea1e64b3c30f1f82d 100644 (file)
@@ -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 */