wxBitmap::LoadFile and SaveFile now uses wxImage's methods in case there is no wxBitmap handler for given type
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
169ee06c44
commit
b75dd496d2
@ -96,7 +96,11 @@ Its meaning is determined by the {\it type} parameter.}
|
||||
The validity of these flags depends on the platform and wxWindows configuration.
|
||||
If all possible wxWindows settings are used, the Windows platform supports BMP file, BMP resource,
|
||||
XPM data, and XPM. Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file.
|
||||
Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.}
|
||||
Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.
|
||||
|
||||
In addition, wxBitmap can read all formats that \helpref{wxImage}{wximage} can
|
||||
(wxBITMAP\_TYPE\_JPEG, wxBITMAP\_TYPE\_PNG, wxBITMAP\_TYPE\_GIF, wxBITMAP\_TYPE\_PCX, wxBITMAP\_TYPE\_PNM).
|
||||
(Of course you must have wxImage handlers loaded.) }
|
||||
|
||||
\wxheading{Remarks}
|
||||
|
||||
@ -356,7 +360,11 @@ The meaning of {\it name} is determined by the {\it type} parameter.}
|
||||
\twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Load an XPM bitmap file.}
|
||||
\end{twocollist}
|
||||
|
||||
The validity of these flags depends on the platform and wxWindows configuration.}
|
||||
The validity of these flags depends on the platform and wxWindows configuration.
|
||||
|
||||
In addition, wxBitmap can read all formats that \helpref{wxImage}{wximage} can
|
||||
(wxBITMAP\_TYPE\_JPEG, wxBITMAP\_TYPE\_PNG, wxBITMAP\_TYPE\_GIF, wxBITMAP\_TYPE\_PCX, wxBITMAP\_TYPE\_PNM).
|
||||
(Of course you must have wxImage handlers loaded.) }
|
||||
|
||||
\wxheading{Return value}
|
||||
|
||||
@ -415,7 +423,11 @@ Saves a bitmap in the named file.
|
||||
\twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Save an XPM bitmap file.}
|
||||
\end{twocollist}
|
||||
|
||||
The validity of these flags depends on the platform and wxWindows configuration.}
|
||||
The validity of these flags depends on the platform and wxWindows configuration.
|
||||
|
||||
In addition, wxBitmap can save all formats that \helpref{wxImage}{wximage} can
|
||||
(wxBITMAP\_TYPE\_JPEG, wxBITMAP\_TYPE\_PNG).
|
||||
(Of course you must have wxImage handlers loaded.) }
|
||||
|
||||
\docparam{palette}{An optional palette used for saving the bitmap.}
|
||||
% TODO: this parameter should
|
||||
|
@ -332,7 +332,7 @@ bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(pal
|
||||
{
|
||||
wxCHECK_MSG( Ok(), FALSE, wxT("invalid bitmap") );
|
||||
|
||||
if (type == wxBITMAP_TYPE_PNG)
|
||||
// Try to save the bitmap via wxImage handlers:
|
||||
{
|
||||
wxImage image( *this );
|
||||
if (image.Ok()) return image.SaveFile( name, type );
|
||||
@ -365,20 +365,13 @@ bool wxBitmap::LoadFile( const wxString &name, int type )
|
||||
gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
|
||||
M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth;
|
||||
}
|
||||
else if (type == wxBITMAP_TYPE_PNG)
|
||||
else // try if wxImage can load it
|
||||
{
|
||||
wxImage image;
|
||||
image.LoadFile( name, type );
|
||||
if (!image.LoadFile( name, type )) return FALSE;
|
||||
if (image.Ok()) *this = image.ConvertToBitmap();
|
||||
else return FALSE;
|
||||
}
|
||||
else if (type == wxBITMAP_TYPE_BMP)
|
||||
{
|
||||
wxImage image;
|
||||
image.LoadFile( name, type );
|
||||
if (image.Ok()) *this = image.ConvertToBitmap();
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -332,7 +332,7 @@ bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(pal
|
||||
{
|
||||
wxCHECK_MSG( Ok(), FALSE, wxT("invalid bitmap") );
|
||||
|
||||
if (type == wxBITMAP_TYPE_PNG)
|
||||
// Try to save the bitmap via wxImage handlers:
|
||||
{
|
||||
wxImage image( *this );
|
||||
if (image.Ok()) return image.SaveFile( name, type );
|
||||
@ -365,20 +365,13 @@ bool wxBitmap::LoadFile( const wxString &name, int type )
|
||||
gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
|
||||
M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth;
|
||||
}
|
||||
else if (type == wxBITMAP_TYPE_PNG)
|
||||
else // try if wxImage can load it
|
||||
{
|
||||
wxImage image;
|
||||
image.LoadFile( name, type );
|
||||
if (!image.LoadFile( name, type )) return FALSE;
|
||||
if (image.Ok()) *this = image.ConvertToBitmap();
|
||||
else return FALSE;
|
||||
}
|
||||
else if (type == wxBITMAP_TYPE_BMP)
|
||||
{
|
||||
wxImage image;
|
||||
image.LoadFile( name, type );
|
||||
if (image.Ok()) *this = image.ConvertToBitmap();
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "wx/log.h"
|
||||
#include "wx/control.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/image.h"
|
||||
|
||||
#include <Xm/Xm.h>
|
||||
|
||||
@ -197,9 +198,14 @@ bool wxBitmap::LoadFile(const wxString& filename, long type)
|
||||
wxBitmapHandler *handler = FindHandler(type);
|
||||
|
||||
if ( handler == NULL ) {
|
||||
wxLogWarning("%s: no bitmap handler for type %d defined.", (const char*) filename, type);
|
||||
|
||||
return FALSE;
|
||||
wxImage image;
|
||||
if (!image.LoadFile( filename, type )) return FALSE;
|
||||
if (image.Ok())
|
||||
{
|
||||
*this = image.ConvertToBitmap();
|
||||
return TRUE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
return handler->LoadFile(this, filename, type, -1, -1);
|
||||
@ -226,10 +232,10 @@ bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *pal
|
||||
{
|
||||
wxBitmapHandler *handler = FindHandler(type);
|
||||
|
||||
if ( handler == NULL ) {
|
||||
wxLogWarning("no bitmap handler for type %d defined.", type);
|
||||
|
||||
return FALSE;
|
||||
if ( handler == NULL ) { // try wxImage
|
||||
wxImage image( *this );
|
||||
if (image.Ok()) return image.SaveFile( filename, type );
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
return handler->SaveFile(this, filename, type, palette);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "wx/log.h"
|
||||
|
||||
#include "wx/msw/dib.h"
|
||||
#include "wx/image.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// macros
|
||||
@ -278,9 +279,14 @@ bool wxBitmap::LoadFile(const wxString& filename, long type)
|
||||
wxBitmapHandler *handler = FindHandler(type);
|
||||
|
||||
if ( handler == NULL ) {
|
||||
wxLogWarning(wxT("no bitmap handler for type %d defined."), type);
|
||||
|
||||
return FALSE;
|
||||
wxImage image;
|
||||
if (!image.LoadFile( filename, type )) return FALSE;
|
||||
if (image.Ok())
|
||||
{
|
||||
*this = image.ConvertToBitmap();
|
||||
return TRUE;
|
||||
}
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
return handler->LoadFile(this, filename, type, -1, -1);
|
||||
@ -307,10 +313,10 @@ bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *pal
|
||||
{
|
||||
wxBitmapHandler *handler = FindHandler(type);
|
||||
|
||||
if ( handler == NULL ) {
|
||||
wxLogWarning(wxT("no bitmap handler for type %d defined."), type);
|
||||
|
||||
return FALSE;
|
||||
if ( handler == NULL ) { // try wxImage
|
||||
wxImage image( *this );
|
||||
if (image.Ok()) return image.SaveFile( filename, type );
|
||||
else return FALSE;
|
||||
}
|
||||
|
||||
return handler->SaveFile(this, filename, type, palette);
|
||||
|
Loading…
Reference in New Issue
Block a user