+ if (cinfo.out_color_space == JCS_RGB)
+ {
+ memcpy( ptr, tempbuf[0], stride );
+ ptr += stride;
+ }
+ else // CMYK
+ {
+ const unsigned char* inptr = (const unsigned char*) tempbuf[0];
+ for (size_t i = 0; i < cinfo.output_width; i++)
+ {
+ wx_cmyk_to_rgb(ptr, inptr);
+ ptr += 3;
+ inptr += 4;
+ }
+ }
+ }
+
+ // set up resolution if available: it's part of optional JFIF APP0 chunk
+ if ( cinfo.saw_JFIF_marker )
+ {
+ image->SetOption(wxIMAGE_OPTION_RESOLUTIONX, cinfo.X_density);
+ image->SetOption(wxIMAGE_OPTION_RESOLUTIONY, cinfo.Y_density);
+
+ // we use the same values for this option as libjpeg so we don't need
+ // any conversion here
+ image->SetOption(wxIMAGE_OPTION_RESOLUTIONUNIT, cinfo.density_unit);
+ }
+
+ if ( cinfo.image_width != cinfo.output_width || cinfo.image_height != cinfo.output_height )
+ {
+ // save the original image size
+ image->SetOption(wxIMAGE_OPTION_ORIGINAL_WIDTH, cinfo.image_width);
+ image->SetOption(wxIMAGE_OPTION_ORIGINAL_HEIGHT, cinfo.image_height);