MIME support

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2088 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
1999-04-11 19:07:17 +00:00
parent 092fdc46a9
commit 9e9ee68e90
3 changed files with 148 additions and 6 deletions

View File

@@ -101,11 +101,21 @@ wxImage::wxImage( const wxString& name, long type )
LoadFile( name, type );
}
wxImage::wxImage( const wxString& name, const wxString& mimetype )
{
LoadFile( name, mimetype );
}
#if wxUSE_STREAMS
wxImage::wxImage( wxInputStream& stream, long type )
{
LoadFile( stream, type );
}
wxImage::wxImage( wxInputStream& stream, const wxString& mimetype )
{
LoadFile( stream, mimetype );
}
#endif // wxUSE_STREAMS
wxImage::wxImage( const wxImage& image )
@@ -325,6 +335,25 @@ bool wxImage::LoadFile( const wxString& filename, long type )
wxFileInputStream stream(filename);
return LoadFile(stream, type);
}
else {
wxLogError( "Can't load image from file '%s': file does not exist.", filename.c_str() );
return FALSE;
}
#else // !wxUSE_STREAMS
return FALSE;
#endif // wxUSE_STREAMS
}
bool wxImage::LoadFile( const wxString& filename, const wxString& mimetype )
{
#if wxUSE_STREAMS
if (wxFileExists(filename))
{
wxFileInputStream stream(filename);
return LoadFile(stream, mimetype);
}
else {
wxLogError( "Can't load image from file '%s': file does not exist.", filename.c_str() );
@@ -340,7 +369,7 @@ bool wxImage::SaveFile( const wxString& filename, int type )
{
#if wxUSE_STREAMS
wxFileOutputStream stream(filename);
if ( stream.LastError() == wxStream_NOERROR )
return SaveFile(stream, type);
else
@@ -348,6 +377,18 @@ bool wxImage::SaveFile( const wxString& filename, int type )
return FALSE;
}
bool wxImage::SaveFile( const wxString& filename, const wxString& mimetype )
{
#if wxUSE_STREAMS
wxFileOutputStream stream(filename);
if ( stream.LastError() == wxStream_NOERROR )
return SaveFile(stream, mimetype);
else
#endif // wxUSE_STREAMS
return FALSE;
}
#if wxUSE_STREAMS
bool wxImage::LoadFile( wxInputStream& stream, long type )
{
@@ -367,15 +408,49 @@ bool wxImage::LoadFile( wxInputStream& stream, long type )
return handler->LoadFile( this, stream );
}
bool wxImage::LoadFile( wxInputStream& stream, const wxString& mimetype )
{
UnRef();
m_refData = new wxImageRefData;
wxImageHandler *handler = FindHandlerMime(mimetype);
if (handler == NULL)
{
wxLogWarning( "No image handler for type %s defined.", mimetype.GetData() );
return FALSE;
}
return handler->LoadFile( this, stream );
}
bool wxImage::SaveFile( wxOutputStream& stream, int type )
{
wxCHECK_MSG( Ok(), FALSE, "invalid image" );
wxImageHandler *handler = FindHandler(type);
if (handler == NULL)
{
wxLogWarning( "No image handler for type %d defined.", type );
return FALSE;
}
return handler->SaveFile( this, stream );
}
bool wxImage::SaveFile( wxOutputStream& stream, const wxString& mimetype )
{
wxCHECK_MSG( Ok(), FALSE, "invalid image" );
wxImageHandler *handler = FindHandlerMime(mimetype);
if (handler == NULL)
{
wxLogWarning( "No image handler for type %s defined.", mimetype.GetData() );
return FALSE;
}
@@ -451,6 +526,18 @@ wxImageHandler *wxImage::FindHandler( long bitmapType )
return NULL;
}
wxImageHandler *wxImage::FindHandlerMime( const wxString& mimetype )
{
wxNode *node = sm_handlers.First();
while (node)
{
wxImageHandler *handler = (wxImageHandler *)node->Data();
if (handler->GetMimeType().IsSameAs(mimetype, FALSE)) return handler;
node = node->Next();
}
return NULL;
}
void wxImage::InitStandardHandlers()
{
AddHandler( new wxBMPHandler );