#if wxUSE_LIBJPEG
class WXDLLEXPORT wxJPEGHandler;
#endif
+#if wxUSE_LIBTIFF
+class WXDLLEXPORT wxTIFFHandler;
+#endif
class WXDLLEXPORT wxBMPHandler;
#if wxUSE_GIF
class WXDLLEXPORT wxGIFHandler;
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, bool verbose=TRUE );
+ 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 );
- virtual bool CanRead( wxInputStream& stream );
- virtual bool CanRead( const wxString& name );
+ 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;
};
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE );
+ 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 CanRead( wxInputStream& stream );
-private:
- // hiding base class virtuals again!
- inline bool CanRead( const wxString& name ) { return(wxImageHandler::CanRead(name)); };
+ virtual bool DoCanRead( wxInputStream& stream );
#endif
};
#endif
};
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE );
+ 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 CanRead( wxInputStream& stream );
-private:
- // hiding base class virtuals again!
- inline bool CanRead( const wxString& name ) { return(wxImageHandler::CanRead(name)); };
+ 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
};
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE );
- virtual bool CanRead( wxInputStream& stream );
-private:
- // hiding base class virtuals again!
- inline bool CanRead( const wxString& name ) { return(wxImageHandler::CanRead(name)); };
+ virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 );
+ virtual bool DoCanRead( wxInputStream& stream );
#endif
};
// wxGIFHandler
//-----------------------------------------------------------------------------
-#if wxUSE_LIBGIF
+#if wxUSE_GIF
+
class WXDLLEXPORT wxGIFHandler : public wxImageHandler
{
DECLARE_DYNAMIC_CLASS(wxGIFHandler)
};
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE );
+ 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 CanRead( wxInputStream& stream );
-private:
- // hiding base class virtuals again!
- inline bool CanRead( const wxString& name ) { return(wxImageHandler::CanRead(name)); };
+ virtual bool DoCanRead( wxInputStream& stream );
#endif
};
#endif
};
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE );
+ 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 CanRead( wxInputStream& stream );
-private:
- // hiding base class virtuals again!
- inline bool CanRead( const wxString& name ) { return(wxImageHandler::CanRead(name)); };
+ virtual bool DoCanRead( wxInputStream& stream );
#endif
};
#endif
};
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE );
+ 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 CanRead( wxInputStream& stream );
-#endif
+ virtual bool DoCanRead( wxInputStream& stream );
+#endif // wxUSE_STREAMS
};
-#endif
+#endif // wxUSE_PCX
//-----------------------------------------------------------------------------
// wxImage
unsigned char GetGreen( int x, int y );
unsigned char GetBlue( int x, int y );
+ 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
+ static bool CanRead( wxInputStream& stream );
virtual bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY );
virtual bool LoadFile( wxInputStream& stream, const wxString& mimetype );
#endif
};
+extern void WXDLLEXPORT wxInitAllImageHandlers();
+
#endif
// _WX_IMAGE_H_