X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/232806507ba60bd768605f0d7e8ae8e27dc17e8b..c9d01afd8237e2a63c11f5ef4050d57a8651b2db:/include/wx/image.h diff --git a/include/wx/image.h b/include/wx/image.h index 7db3f34479..04c131e040 100644 --- a/include/wx/image.h +++ b/include/wx/image.h @@ -21,7 +21,7 @@ #include "wx/bitmap.h" #if wxUSE_STREAMS - #include "wx/stream.h" +# include "wx/stream.h" #endif //----------------------------------------------------------------------------- @@ -35,7 +35,19 @@ class WXDLLEXPORT wxPNGHandler; #if wxUSE_LIBJPEG class WXDLLEXPORT wxJPEGHandler; #endif +#if wxUSE_LIBTIFF +class WXDLLEXPORT wxTIFFHandler; +#endif class WXDLLEXPORT wxBMPHandler; +#if wxUSE_GIF +class WXDLLEXPORT wxGIFHandler; +#endif +#if wxUSE_PNM +class WXDLLEXPORT wxPNMHandler; +#endif +#if wxUSE_PCX +class WXDLLEXPORT wxPCXHandler; +#endif class WXDLLEXPORT wxImage; //----------------------------------------------------------------------------- @@ -44,26 +56,33 @@ class WXDLLEXPORT wxImage; class WXDLLEXPORT wxImageHandler: public wxObject { - DECLARE_DYNAMIC_CLASS(wxImageHandler) + DECLARE_CLASS(wxImageHandler) public: wxImageHandler() { m_name = ""; m_extension = ""; m_type = 0; } #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + + virtual int GetImageCount( wxInputStream& stream ); + + bool CanRead( wxInputStream& stream ) { return DoCanRead(stream); } + bool CanRead( const wxString& name ); #endif - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline void SetMimeType(const wxString& type) { m_mime = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } - inline wxString GetMimeType() const { return m_mime; } + void SetName(const wxString& name) { m_name = name; } + void SetExtension(const wxString& ext) { m_extension = ext; } + void SetType(long type) { m_type = type; } + void SetMimeType(const wxString& type) { m_mime = type; } + wxString GetName() const { return m_name; } + wxString GetExtension() const { return m_extension; } + long GetType() const { return m_type; } + wxString GetMimeType() const { return m_mime; } protected: + virtual bool DoCanRead( wxInputStream& stream ) = 0; + wxString m_name; wxString m_extension; wxString m_mime; @@ -91,8 +110,9 @@ public: }; #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif }; #endif @@ -117,8 +137,37 @@ public: }; #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); +#endif +}; +#endif + +//----------------------------------------------------------------------------- +// wxTIFFHandler +//----------------------------------------------------------------------------- + +#if wxUSE_LIBTIFF +class WXDLLEXPORT wxTIFFHandler: public wxImageHandler +{ + DECLARE_DYNAMIC_CLASS(wxTIFFHandler) + +public: + + inline wxTIFFHandler() + { + m_name = "TIFF file"; + m_extension = "tif"; + m_type = wxBITMAP_TYPE_TIF; + m_mime = "image/tiff"; + }; + +#if wxUSE_STREAMS + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); + virtual int GetImageCount( wxInputStream& stream ); #endif }; #endif @@ -142,7 +191,8 @@ public: }; #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool DoCanRead( wxInputStream& stream ); #endif }; @@ -150,6 +200,8 @@ public: // wxGIFHandler //----------------------------------------------------------------------------- +#if wxUSE_GIF + class WXDLLEXPORT wxGIFHandler : public wxImageHandler { DECLARE_DYNAMIC_CLASS(wxGIFHandler) @@ -165,15 +217,81 @@ public: }; #if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); +#endif +}; +#endif + +//----------------------------------------------------------------------------- +// wxPNMHandler +//----------------------------------------------------------------------------- + +#if wxUSE_PNM +class WXDLLEXPORT wxPNMHandler : public wxImageHandler +{ + DECLARE_DYNAMIC_CLASS(wxPNMHandler) + +public: + + inline wxPNMHandler() + { + m_name = "PNM file"; + m_extension = "pnm"; + m_type = wxBITMAP_TYPE_PNM; + m_mime = "image/pnm"; + }; + +#if wxUSE_STREAMS + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); #endif }; +#endif + +//----------------------------------------------------------------------------- +// wxPCXHandler +//----------------------------------------------------------------------------- + +#if wxUSE_PCX +class WXDLLEXPORT wxPCXHandler : public wxImageHandler +{ + DECLARE_DYNAMIC_CLASS(wxPCXHandler) + +public: + + inline wxPCXHandler() + { + m_name = "PCX file"; + m_extension = "pcx"; + m_type = wxBITMAP_TYPE_PCX; + m_mime = "image/pcx"; + }; + +#if wxUSE_STREAMS + virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 ); + virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE ); + virtual bool DoCanRead( wxInputStream& stream ); +#endif // wxUSE_STREAMS +}; +#endif // wxUSE_PCX //----------------------------------------------------------------------------- // wxImage //----------------------------------------------------------------------------- + +// GRG: Dic/99 +class WXDLLEXPORT wxHNode +{ +public: + unsigned long index; + unsigned long value; +}; + + class WXDLLEXPORT wxImage: public wxObject { DECLARE_DYNAMIC_CLASS(wxImage) @@ -184,8 +302,8 @@ public: wxImage(); wxImage( int width, int height ); - wxImage( const wxString& name, long type = wxBITMAP_TYPE_PNG ); - wxImage( wxInputStream& stream, long type = wxBITMAP_TYPE_PNG ); + wxImage( const wxString& name, long type = wxBITMAP_TYPE_ANY ); + wxImage( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY ); wxImage( const wxString& name, const wxString& mimetype ); wxImage( wxInputStream& stream, const wxString& mimetype ); @@ -200,6 +318,9 @@ public: void Create( int width, int height ); void Destroy(); + // return the new image with size width*height + wxImage GetSubImage( const wxRect& ) const; + // return the new image with size width*height wxImage Scale( int width, int height ) const; @@ -212,11 +333,13 @@ public: unsigned char GetGreen( int x, int y ); unsigned char GetBlue( int x, int y ); - virtual bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_PNG ); + static bool CanRead( const wxString& name ); + virtual bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_ANY ); virtual bool LoadFile( const wxString& name, const wxString& mimetype ); #if wxUSE_STREAMS - virtual bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_PNG ); + static bool CanRead( wxInputStream& stream ); + virtual bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY ); virtual bool LoadFile( wxInputStream& stream, const wxString& mimetype ); #endif @@ -266,12 +389,18 @@ public: static void CleanUpHandlers(); static void InitStandardHandlers(); + // GRG: Dic/99 + unsigned long ComputeHistogram( wxHashTable &h ); + + protected: static wxList sm_handlers; }; +extern void WXDLLEXPORT wxInitAllImageHandlers(); + #endif // _WX_IMAGE_H_