#include "wx/bitmap.h"
#if wxUSE_STREAMS
- #include "wx/stream.h"
+# include "wx/stream.h"
#endif
//-----------------------------------------------------------------------------
#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;
//-----------------------------------------------------------------------------
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 );
+
+ 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 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 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 LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 );
+ virtual bool DoCanRead( wxInputStream& stream );
#endif
};
// wxGIFHandler
//-----------------------------------------------------------------------------
+#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 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)
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;
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
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_