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:
Václav Slavík 1999-11-17 22:33:52 +00:00
parent 169ee06c44
commit b75dd496d2
5 changed files with 49 additions and 39 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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);