X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32d4c30a13f65b7c8cb66f813a0b8c606ad8480b..9f4cc34f375fbff74006f3057e90dd01c426f580:/src/common/image.cpp diff --git a/src/common/image.cpp b/src/common/image.cpp index 9ce814f683..2117d2a209 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -20,16 +20,15 @@ #include "wx/log.h" #include "wx/app.h" #include "wx/hash.h" + #include "wx/utils.h" #endif #include "wx/image.h" #include "wx/bitmap.h" -#include "wx/debug.h" #include "wx/filefn.h" #include "wx/wfstream.h" #include "wx/intl.h" #include "wx/module.h" -#include "wx/utils.h" #include "wx/math.h" #if wxUSE_XPM @@ -708,6 +707,10 @@ wxImage wxImage::Size( const wxSize& size, const wxPoint& pos, wxRect subRect(pos.x, pos.y, width, height); wxRect finalRect(0, 0, size.GetWidth(), size.GetHeight()); + if (pos.x < 0) + finalRect.width -= pos.x; + if (pos.y < 0) + finalRect.height -= pos.y; subRect.Intersect(finalRect); @@ -863,6 +866,16 @@ wxImage wxImage::ConvertToGreyscale( double lr, double lg, double lb ) const } } + // copy the alpha channel, if any + if (HasAlpha()) + { + const size_t alphaSize = GetWidth() * GetHeight(); + unsigned char *alpha = (unsigned char*)malloc(alphaSize); + memcpy(alpha, GetAlpha(), alphaSize); + image.InitAlpha(); + image.SetAlpha(alpha); + } + return image; } @@ -1446,7 +1459,9 @@ bool wxImage::HasOption(const wxString& name) const // image I/O // ---------------------------------------------------------------------------- -bool wxImage::LoadFile( const wxString& filename, long type, int index ) +bool wxImage::LoadFile( const wxString& WXUNUSED_UNLESS_STREAMS(filename), + long WXUNUSED_UNLESS_STREAMS(type), + int WXUNUSED_UNLESS_STREAMS(index) ) { #if wxUSE_STREAMS if (wxFileExists(filename)) @@ -1466,7 +1481,9 @@ bool wxImage::LoadFile( const wxString& filename, long type, int index ) #endif // wxUSE_STREAMS } -bool wxImage::LoadFile( const wxString& filename, const wxString& mimetype, int index ) +bool wxImage::LoadFile( const wxString& WXUNUSED_UNLESS_STREAMS(filename), + const wxString& WXUNUSED_UNLESS_STREAMS(mimetype), + int WXUNUSED_UNLESS_STREAMS(index) ) { #if wxUSE_STREAMS if (wxFileExists(filename)) @@ -1504,7 +1521,8 @@ bool wxImage::SaveFile( const wxString& filename ) const return false; } -bool wxImage::SaveFile( const wxString& filename, int type ) const +bool wxImage::SaveFile( const wxString& WXUNUSED_UNLESS_STREAMS(filename), + int WXUNUSED_UNLESS_STREAMS(type) ) const { #if wxUSE_STREAMS wxCHECK_MSG( Ok(), false, wxT("invalid image") ); @@ -1523,7 +1541,8 @@ bool wxImage::SaveFile( const wxString& filename, int type ) const return false; } -bool wxImage::SaveFile( const wxString& filename, const wxString& mimetype ) const +bool wxImage::SaveFile( const wxString& WXUNUSED_UNLESS_STREAMS(filename), + const wxString& WXUNUSED_UNLESS_STREAMS(mimetype) ) const { #if wxUSE_STREAMS wxCHECK_MSG( Ok(), false, wxT("invalid image") ); @@ -1542,22 +1561,23 @@ bool wxImage::SaveFile( const wxString& filename, const wxString& mimetype ) con return false; } -bool wxImage::CanRead( const wxString &name ) +bool wxImage::CanRead( const wxString& WXUNUSED_UNLESS_STREAMS(name) ) { #if wxUSE_STREAMS - wxFileInputStream stream(name); - return CanRead(stream); + wxFileInputStream stream(name); + return CanRead(stream); #else - return false; + return false; #endif } -int wxImage::GetImageCount( const wxString &name, long type ) +int wxImage::GetImageCount( const wxString& WXUNUSED_UNLESS_STREAMS(name), + long WXUNUSED_UNLESS_STREAMS(type) ) { #if wxUSE_STREAMS - wxFileInputStream stream(name); - if (stream.Ok()) - return GetImageCount(stream, type); + wxFileInputStream stream(name); + if (stream.Ok()) + return GetImageCount(stream, type); #endif return 0;