X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6c0168c945eae4d70d291ae1872f26120ef90fdd..546bfbea8180aeee5a16f4abb34e721445277305:/wxPython/src/image.i diff --git a/wxPython/src/image.i b/wxPython/src/image.i index e2c116e228..ba3f7ecb15 100644 --- a/wxPython/src/image.i +++ b/wxPython/src/image.i @@ -15,6 +15,7 @@ %{ #include "helpers.h" +#include "pyistream.h" #include %} @@ -27,6 +28,7 @@ %import _defs.i %import misc.i %import gdi.i +%import streams.i //--------------------------------------------------------------------------- @@ -40,6 +42,10 @@ public: //bool LoadFile(wxImage* image, wxInputStream& stream); //bool SaveFile(wxImage* image, wxOutputStream& stream); + //virtual int GetImageCount( wxInputStream& stream ); + //bool CanRead( wxInputStream& stream ); + + bool CanRead( const wxString& name ); void SetName(const wxString& name); void SetExtension(const wxString& extension); @@ -66,6 +72,20 @@ public: wxBMPHandler(); }; +class wxICOHandler : public wxBMPHandler { +public: + wxICOHandler(); +}; + +class wxCURHandler : public wxICOHandler { +public: + wxCURHandler(); +}; + +class wxANIHandler : public wxCURHandler { +public: + wxANIHandler(); +}; class wxGIFHandler : public wxImageHandler { public: @@ -88,14 +108,15 @@ public: }; + //--------------------------------------------------------------------------- class wxImage : public wxObject { public: - wxImage( const wxString& name, long type = wxBITMAP_TYPE_ANY ); + wxImage( const wxString& name, long type = wxBITMAP_TYPE_ANY, int index = -1 ); ~wxImage(); - wxBitmap ConvertToBitmap(); + wxBitmap ConvertToBitmap(); // deprecated #ifdef __WXGTK__ wxBitmap ConvertToMonoBitmap( unsigned char red, unsigned char green, unsigned char blue ) const; #endif @@ -111,12 +132,18 @@ public: unsigned char GetBlue( int x, int y ); static bool CanRead( const wxString& name ); - bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_ANY ); - %name(LoadMimeFile)bool LoadFile( const wxString& name, const wxString& mimetype ); + static int GetImageCount( const wxString& name, long type = wxBITMAP_TYPE_ANY ); + + bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_ANY, int index = -1 ); + %name(LoadMimeFile)bool LoadFile( const wxString& name, const wxString& mimetype, int index = -1 ); bool SaveFile( const wxString& name, int type ); %name(SaveMimeFile)bool SaveFile( const wxString& name, const wxString& mimetype ); + %name(CanReadStream) static bool CanRead( wxInputStream& stream ); + %name(LoadStream) bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY, int index = -1 ); + %name(LoadMimeStream) bool LoadFile( wxInputStream& stream, const wxString& mimetype, int index = -1 ); + bool Ok(); int GetWidth(); int GetHeight(); @@ -185,8 +212,12 @@ public: // Alternate constructors %new wxImage* wxEmptyImage(int width=0, int height=0); -%new wxImage* wxImageFromMime(const wxString& name, const wxString& mimetype); +%new wxImage* wxImageFromMime(const wxString& name, const wxString& mimetype, int index = -1); %new wxImage* wxImageFromBitmap(const wxBitmap &bitmap); +%new wxImage* wxImageFromData(int width, int height, unsigned char* data); +%new wxImage* wxImageFromStream(wxInputStream& stream, long type = wxBITMAP_TYPE_ANY, int index = -1); +%new wxImage* wxImageFromStreamMime(wxInputStream& stream, const wxString& mimetype, int index = -1 ); + %{ wxImage* wxEmptyImage(int width=0, int height=0) { if (width == 0 && height == 0) @@ -195,15 +226,43 @@ public: return new wxImage(width, height); } - wxImage* wxImageFromMime(const wxString& name, const wxString& mimetype) { - return new wxImage(name, mimetype); + + wxImage* wxImageFromMime(const wxString& name, const wxString& mimetype, int index) { + return new wxImage(name, mimetype, index); } + wxImage* wxImageFromBitmap(const wxBitmap &bitmap) { return new wxImage(bitmap); } + + + wxImage* wxImageFromData(int width, int height, unsigned char* data) { + // Copy the source data so the wxImage can clean it up later + unsigned char* copy = (unsigned char*)malloc(width*height*3); + if (copy == NULL) { + PyErr_NoMemory(); + return NULL; + } + memcpy(copy, data, width*height*3); + return new wxImage(width, height, copy, FALSE); + } + + + wxImage* wxImageFromStream(wxInputStream& stream, + long type = wxBITMAP_TYPE_ANY, int index = -1) { + return new wxImage(stream, type, index); + } + + + wxImage* wxImageFromStreamMime(wxInputStream& stream, + const wxString& mimetype, int index = -1 ) { + return new wxImage(stream, mimetype, index); + } %} + + void wxInitAllImageHandlers();