From 89d38f8c3a336544fd374e53a2b52d00e7f8f531 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Fri, 31 Oct 2003 15:58:58 +0000 Subject: [PATCH] added resolution option to JPEG handler (patch #833234) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/imagjpeg.h | 10 ++++++++++ src/common/imagjpeg.cpp | 15 +++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index a043a783f8..633b904564 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -93,6 +93,7 @@ All (GUI): - bug in wxWindow::RemoveEventHandler() fixed (Yingjun Zhang) - make it possible to use wxRTTI macros with namespaces (Benjamin I. Williams) - wxColourDatabase API now uses objects instead of pointers +- added resolution option to JPEG image handler (Jeff Burton) wxMSW: diff --git a/include/wx/imagjpeg.h b/include/wx/imagjpeg.h index 70e9541d59..07a1095c1b 100644 --- a/include/wx/imagjpeg.h +++ b/include/wx/imagjpeg.h @@ -16,6 +16,16 @@ #include "wx/image.h" +// defines for wxImage::SetOption +#define wxIMAGE_OPTION_RESOLUTION wxString(_T("Resolution")) +#define wxIMAGE_OPTION_RESOLUTIONUNIT wxString(_T("ResolutionUnit")) + +enum +{ + wxIMAGE_RESOLUTION_INCHES = 1, + wxIMAGE_RESOLUTION_CM = 2 +}; + //----------------------------------------------------------------------------- // wxJPEGHandler //----------------------------------------------------------------------------- diff --git a/src/common/imagjpeg.cpp b/src/common/imagjpeg.cpp index a35e1e57e5..7590cee417 100644 --- a/src/common/imagjpeg.cpp +++ b/src/common/imagjpeg.cpp @@ -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 */ -- 2.47.2