+ // get the key in the histogram for the given RGB values
+ static unsigned long MakeKey(unsigned char r,
+ unsigned char g,
+ unsigned char b)
+ {
+ return (r << 16) | (g << 8) | b;
+ }
+
+ // find first colour that is not used in the image and has higher
+ // RGB values than RGB(startR, startG, startB)
+ //
+ // returns true and puts this colour in r, g, b (each of which may be NULL)
+ // on success or returns false if there are no more free colours
+ bool FindFirstUnusedColour(unsigned char *r,
+ unsigned char *g,
+ unsigned char *b,
+ unsigned char startR = 1,
+ unsigned char startG = 0,
+ unsigned char startB = 0 ) const;
+};
+
+//-----------------------------------------------------------------------------
+// wxImage
+//-----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxImage: public wxObject
+{
+public:
+ // red, green and blue are 8 bit unsigned integers in the range of 0..255
+ // We use the identifier RGBValue instead of RGB, since RGB is #defined
+ class RGBValue
+ {
+ public:
+ RGBValue(unsigned char r=0, unsigned char g=0, unsigned char b=0)
+ : red(r), green(g), blue(b) {}
+ unsigned char red;
+ unsigned char green;
+ unsigned char blue;
+ };
+
+ // hue, saturation and value are doubles in the range 0.0..1.0
+ class HSVValue
+ {
+ public:
+ HSVValue(double h=0.0, double s=0.0, double v=0.0)
+ : hue(h), saturation(s), value(v) {}
+ double hue;
+ double saturation;
+ double value;
+ };
+
+ wxImage() {}
+ wxImage( int width, int height, bool clear = true );
+ wxImage( int width, int height, unsigned char* data, bool static_data = false );
+ wxImage( int width, int height, unsigned char* data, unsigned char* alpha, bool static_data = false );
+ wxImage( const wxString& name, wxBitmapType type = wxBITMAP_TYPE_ANY, int index = -1 );
+ wxImage( const wxString& name, const wxString& mimetype, int index = -1 );
+ wxImage( const char* const* xpmData );
+
+#if wxUSE_STREAMS
+ wxImage( wxInputStream& stream, wxBitmapType type = wxBITMAP_TYPE_ANY, int index = -1 );
+ wxImage( wxInputStream& stream, const wxString& mimetype, int index = -1 );
+#endif // wxUSE_STREAMS
+
+ bool Create( int width, int height, bool clear = true );
+ bool Create( int width, int height, unsigned char* data, bool static_data = false );
+ bool Create( int width, int height, unsigned char* data, unsigned char* alpha, bool static_data = false );
+ bool Create( const char* const* xpmData );
+#ifdef __BORLANDC__
+ // needed for Borland 5.5
+ wxImage( char** xpmData ) { Create(wx_const_cast(const char* const*, xpmData)); }
+ bool Create( char** xpmData ) { return Create(wx_const_cast(const char* const*, xpmData)); }
+#endif