- 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( wxInputStream& stream, long type = wxBITMAP_TYPE_ANY );
- wxImage( const wxString& name, const wxString& mimetype );
- wxImage( wxInputStream& stream, const wxString& mimetype );
-
- wxImage( const wxImage& image );
- wxImage( const wxImage* image );
-
-#if wxUSE_GUI
- // convertion to/from wxBitmap (deprecated, use wxBitmap's methods instead):
- wxImage( const wxBitmap &bitmap );
- operator wxBitmap() const { return ConvertToBitmap(); }
- wxBitmap ConvertToBitmap() const;
-#ifdef __WXGTK__
- wxBitmap ConvertToMonoBitmap( unsigned char red, unsigned char green, unsigned char blue );
-#endif
+ wxImageHistogram() : wxImageHistogramBase(256) { }
+
+ // 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 )
+ { Create( width, height, clear ); }
+ wxImage( int width, int height, unsigned char* data, bool static_data = false )
+ { Create( width, height, data, static_data ); }
+ wxImage( int width, int height, unsigned char* data, unsigned char* alpha, bool static_data = false )
+ { Create( width, height, data, alpha, static_data ); }
+
+ // ctor variants using wxSize:
+ wxImage( const wxSize& sz, bool clear = true )
+ { Create( sz, clear ); }
+ wxImage( const wxSize& sz, unsigned char* data, bool static_data = false )
+ { Create( sz, data, static_data ); }
+ wxImage( const wxSize& sz, unsigned char* data, unsigned char* alpha, bool static_data = false )
+ { Create( sz, data, alpha, static_data ); }
+
+ wxImage( const wxString& name, wxBitmapType type = wxBITMAP_TYPE_ANY, int index = -1 )
+ { LoadFile( name, type, index ); }
+ wxImage( const wxString& name, const wxString& mimetype, int index = -1 )
+ { LoadFile( name, mimetype, index ); }
+ wxImage( const char* const* xpmData )
+ { Create(xpmData); }
+
+#if wxUSE_STREAMS
+ wxImage( wxInputStream& stream, wxBitmapType type = wxBITMAP_TYPE_ANY, int index = -1 )
+ { LoadFile( stream, type, index ); }
+ wxImage( wxInputStream& stream, const wxString& mimetype, int index = -1 )
+ { LoadFile( stream, mimetype, index ); }
+#endif // wxUSE_STREAMS
+
+ bool Create( const char* const* xpmData );
+#ifdef __BORLANDC__
+ // needed for Borland 5.5
+ wxImage( char** xpmData ) { Create(const_cast<const char* const*>(xpmData)); }
+ bool Create( char** xpmData ) { return Create(const_cast<const char* const*>(xpmData)); }