]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagpng.cpp
Rework the wxCusor ctor taking wx stock number to provide as many cursors as
[wxWidgets.git] / src / common / imagpng.cpp
index 009f133de98c46fc8d432c4f03ae92d27987c8ba..bb081b809a5e532d0679a7854c43bdb5e7163e33 100644 (file)
@@ -748,6 +748,33 @@ bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbos
     if ( iBitDepth == 16 )
         iElements *= 2;
 
+    // save the image resolution if we have it
+    int resX, resY;
+    switch ( GetResolutionFromOptions(*image, &resX, &resY) )
+    {
+        case wxIMAGE_RESOLUTION_INCHES:
+            {
+                const double INCHES_IN_METER = 10000.0 / 254;
+                resX = int(resX * INCHES_IN_METER);
+                resY = int(resY * INCHES_IN_METER);
+            }
+            break;
+
+        case wxIMAGE_RESOLUTION_CM:
+            resX *= 100;
+            resY *= 100;
+            break;
+
+        case wxIMAGE_RESOLUTION_NONE:
+            break;
+
+        default:
+            wxFAIL_MSG( _T("unsupported image resolution units") );
+    }
+
+    if ( resX && resY )
+        png_set_pHYs( png_ptr, info_ptr, resX, resY, PNG_RESOLUTION_METER );
+
     png_set_sBIT( png_ptr, info_ptr, &sig_bit );
     png_write_info( png_ptr, info_ptr );
     png_set_shift( png_ptr, &sig_bit );