X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..c0e7c9a98bb5cdfaccf4df3d13da846d022957f8:/src/common/imagjpeg.cpp diff --git a/src/common/imagjpeg.cpp b/src/common/imagjpeg.cpp index 76d85bf4f6..776a84482b 100644 --- a/src/common/imagjpeg.cpp +++ b/src/common/imagjpeg.cpp @@ -4,7 +4,7 @@ // Author: Vaclav Slavik // RCS-ID: $Id$ // Copyright: (c) Vaclav Slavik -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) @@ -28,7 +28,7 @@ #include "wx/log.h" #include "wx/app.h" -// NB: Some compilers define boolean type in Windows headers +// 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 @@ -226,7 +226,7 @@ bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbos (cinfo.src->term_source)(&cinfo); jpeg_destroy_decompress(&cinfo); if (image->Ok()) image->Destroy(); - return FALSE; + return false; } jpeg_create_decompress( &cinfo ); @@ -239,9 +239,9 @@ bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbos if (!image->Ok()) { jpeg_finish_decompress( &cinfo ); jpeg_destroy_decompress( &cinfo ); - return FALSE; + return false; } - image->SetMask( FALSE ); + image->SetMask( false ); ptr = image->GetData(); stride = cinfo.output_width * 3; tempbuf = (*cinfo.mem->alloc_sarray) @@ -254,7 +254,7 @@ bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbos } jpeg_finish_decompress( &cinfo ); jpeg_destroy_decompress( &cinfo ); - return TRUE; + return true; } typedef struct { @@ -338,7 +338,7 @@ bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbo if (verbose) wxLogError(_("JPEG: Couldn't save image.")); jpeg_destroy_compress(&cinfo); - return FALSE; + return false; } jpeg_create_compress(&cinfo); @@ -356,22 +356,41 @@ bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbo // 'Quality' is a number between 0 (terrible) and 100 (very good). // The default (in jcparam.c, jpeg_set_defaults) is 75, // and force_baseline is TRUE. - if (image->HasOption(wxT("quality"))) - jpeg_set_quality(&cinfo, image->GetOptionInt(wxT("quality")), TRUE); + if (image->HasOption(wxIMAGE_OPTION_QUALITY)) + jpeg_set_quality(&cinfo, image->GetOptionInt(wxIMAGE_OPTION_QUALITY), TRUE); + + // set the resolution fields in the output file + UINT16 resX, + resY; + if ( image->HasOption(wxIMAGE_OPTION_RESOLUTIONX) && + image->HasOption(wxIMAGE_OPTION_RESOLUTIONY) ) + { + resX = (UINT16)image->GetOptionInt(wxIMAGE_OPTION_RESOLUTIONX); + resY = (UINT16)image->GetOptionInt(wxIMAGE_OPTION_RESOLUTIONY); + } + else if ( image->HasOption(wxIMAGE_OPTION_RESOLUTION) ) + { + resX = + resY = (UINT16)image->GetOptionInt(wxIMAGE_OPTION_RESOLUTION); + } + else + { + resX = + resY = 0; + } - // sets the resolution fields in the output file - if (image->HasOption(wxIMAGE_OPTION_RESOLUTION)) + if ( resX && resY ) { - cinfo.X_density = - cinfo.Y_density = image->GetOptionInt(wxIMAGE_OPTION_RESOLUTION); + cinfo.X_density = resX; + cinfo.Y_density = resY; } // 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)) + if ( image->HasOption(wxIMAGE_OPTION_RESOLUTIONUNIT) ) { - cinfo.density_unit = image->GetOptionInt(wxIMAGE_OPTION_RESOLUTIONUNIT); + cinfo.density_unit = (UINT8)image->GetOptionInt(wxIMAGE_OPTION_RESOLUTIONUNIT); } jpeg_start_compress(&cinfo, TRUE); @@ -385,7 +404,7 @@ bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbo jpeg_finish_compress(&cinfo); jpeg_destroy_compress(&cinfo); - return TRUE; + return true; } #ifdef __VISUALC__ @@ -397,7 +416,7 @@ bool wxJPEGHandler::DoCanRead( wxInputStream& stream ) unsigned char hdr[2]; if ( !stream.Read(hdr, WXSIZEOF(hdr)) ) - return FALSE; + return false; return hdr[0] == 0xFF && hdr[1] == 0xD8; }