#include "wx/string.h"
#include "wx/gdicmn.h"
#include "wx/bitmap.h"
+#include "wx/hashmap.h"
#if wxUSE_STREAMS
# include "wx/stream.h"
#if wxUSE_IMAGE
+#define wxIMAGE_OPTION_FILENAME wxString(_T("FileName"))
+
//-----------------------------------------------------------------------------
// classes
//-----------------------------------------------------------------------------
wxImageHandler() { m_name = ""; m_extension = ""; m_type = 0; }
#if wxUSE_STREAMS
- virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=0 );
+ virtual bool LoadFile( wxImage *image, wxInputStream& stream, bool verbose=TRUE, int index=-1 );
virtual bool SaveFile( wxImage *image, wxOutputStream& stream, bool verbose=TRUE );
virtual int GetImageCount( wxInputStream& stream );
};
//-----------------------------------------------------------------------------
-// wxImage
+// wxImageHistogram
//-----------------------------------------------------------------------------
-class WXDLLEXPORT wxHNode
+class WXDLLEXPORT wxImageHistogramEntry
{
public:
+ wxImageHistogramEntry() : index(0), value(0) {}
unsigned long index;
unsigned long value;
};
+WX_DECLARE_EXPORTED_HASH_MAP(unsigned long, wxImageHistogramEntry,
+ wxIntegerHash, wxIntegerEqual,
+ wxImageHistogram);
+
+//-----------------------------------------------------------------------------
+// wxImage
+//-----------------------------------------------------------------------------
+
class WXDLLEXPORT wxImage: public wxObject
{
public:
wxImage();
wxImage( int width, int height );
wxImage( int width, int height, unsigned char* data, bool static_data = FALSE );
- wxImage( const wxString& name, long type = wxBITMAP_TYPE_ANY );
- wxImage( const wxString& name, const wxString& mimetype );
+ wxImage( const wxString& name, long type = wxBITMAP_TYPE_ANY, int index = -1 );
+ wxImage( const wxString& name, const wxString& mimetype, int index = -1 );
#if wxUSE_STREAMS
- wxImage( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY );
- wxImage( wxInputStream& stream, const wxString& mimetype );
+ wxImage( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY, int index = -1 );
+ wxImage( wxInputStream& stream, const wxString& mimetype, int index = -1 );
#endif // wxUSE_STREAMS
wxImage( const wxImage& image );
// RGB values than <startR,startG,startB>
bool FindFirstUnusedColour( unsigned char *r, unsigned char *g, unsigned char *b,
unsigned char startR = 1, unsigned char startG = 0,
- unsigned char startB = 0 );
+ unsigned char startB = 0 ) const;
// Set image's mask to the area of 'mask' that has <r,g,b> colour
bool SetMaskFromImage(const wxImage & mask,
unsigned char mr, unsigned char mg, unsigned char mb);
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 );
+ static int GetImageCount( const wxString& name, long type = wxBITMAP_TYPE_ANY );
+ virtual bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_ANY, int index = -1 );
+ virtual bool LoadFile( const wxString& name, const wxString& mimetype, int index = -1 );
#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 );
+ static int GetImageCount( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY );
+ virtual bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY, int index = -1 );
+ virtual bool LoadFile( wxInputStream& stream, const wxString& mimetype, int index = -1 );
#endif
- virtual bool SaveFile( const wxString& name, int type );
- virtual bool SaveFile( const wxString& name, const wxString& mimetype );
+ virtual bool SaveFile( const wxString& name, int type ) const;
+ virtual bool SaveFile( const wxString& name, const wxString& mimetype ) const;
#if wxUSE_STREAMS
- virtual bool SaveFile( wxOutputStream& stream, int type );
- virtual bool SaveFile( wxOutputStream& stream, const wxString& mimetype );
+ virtual bool SaveFile( wxOutputStream& stream, int type ) const;
+ virtual bool SaveFile( wxOutputStream& stream, const wxString& mimetype ) const;
#endif
bool Ok() const;
int GetOptionInt(const wxString& name) const;
bool HasOption(const wxString& name) const;
- unsigned long CountColours( unsigned long stopafter = (unsigned long) -1 );
- unsigned long ComputeHistogram( wxHashTable &h );
+ unsigned long CountColours( unsigned long stopafter = (unsigned long) -1 ) const;
+
+ // Computes the histogram of the image and fills a hash table, indexed
+ // with integer keys built as 0xRRGGBB, containing wxImageHistogramEntry
+ // objects. Each of them contains an 'index' (useful to build a palette
+ // with the image colours) and a 'value', which is the number of pixels
+ // in the image with that colour.
+ // Returned value: # of entries in the histogram
+ unsigned long ComputeHistogram( wxImageHistogram &h ) const;
wxImage& operator = (const wxImage& image)
{
#include "wx/imagtiff.h"
#include "wx/imagpnm.h"
#include "wx/imagxpm.h"
+#include "wx/imagiff.h"
#endif // wxUSE_IMAGE