X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/591d3fa2106eae93a22829c7b2665dec524b4c00..d0f063020e6fb1b1a660952d0844071e0df24324:/include/wx/image.h diff --git a/include/wx/image.h b/include/wx/image.h index 60aff69ce6..49ea7b2229 100644 --- a/include/wx/image.h +++ b/include/wx/image.h @@ -36,6 +36,9 @@ #define wxIMAGE_OPTION_RESOLUTIONUNIT wxString(_T("ResolutionUnit")) +#define wxIMAGE_OPTION_MAX_WIDTH wxString(_T("MaxWidth")) +#define wxIMAGE_OPTION_MAX_HEIGHT wxString(_T("MaxHeight")) + // constants used with wxIMAGE_OPTION_RESOLUTIONUNIT // // NB: don't change these values, they correspond to libjpeg constants @@ -105,13 +108,21 @@ public: void SetName(const wxString& name) { m_name = name; } void SetExtension(const wxString& ext) { m_extension = ext; } + void SetAltExtensions(const wxArrayString& exts) { m_altExtensions = exts; } void SetType(wxBitmapType type) { m_type = type; } void SetMimeType(const wxString& type) { m_mime = type; } const wxString& GetName() const { return m_name; } const wxString& GetExtension() const { return m_extension; } + const wxArrayString& GetAltExtensions() const { return m_altExtensions; } wxBitmapType GetType() const { return m_type; } const wxString& GetMimeType() const { return m_mime; } +#if WXWIN_COMPATIBILITY_2_8 + wxDEPRECATED( + void SetType(long type) { SetType((wxBitmapType)type); } + ) +#endif // WXWIN_COMPATIBILITY_2_8 + protected: #if wxUSE_STREAMS virtual bool DoCanRead( wxInputStream& stream ) = 0; @@ -129,6 +140,7 @@ protected: wxString m_name; wxString m_extension; + wxArrayString m_altExtensions; wxString m_mime; wxBitmapType m_type; @@ -209,28 +221,58 @@ public: }; 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 ); + 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 ); - wxImage( wxInputStream& stream, const wxString& mimetype, int index = -1 ); + 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( 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)); } + wxImage( char** xpmData ) { Create(const_cast(xpmData)); } + bool Create( char** xpmData ) { return Create(const_cast(xpmData)); } #endif + + 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 ); + + // Create() variants using wxSize: + bool Create( const wxSize& sz, bool clear = true ) + { return Create(sz.GetWidth(), sz.GetHeight(), clear); } + bool Create( const wxSize& sz, unsigned char* data, bool static_data = false ) + { return Create(sz.GetWidth(), sz.GetHeight(), data, static_data); } + bool Create( const wxSize& sz, unsigned char* data, unsigned char* alpha, bool static_data = false ) + { return Create(sz.GetWidth(), sz.GetHeight(), data, alpha, static_data); } + void Destroy(); + + // initialize the image data with zeroes + void Clear(unsigned char value = 0); // creates an identical copy of the image (the = operator // just raises the ref count) @@ -274,7 +316,7 @@ public: // Rotates the image about the given point, 'angle' radians. // Returns the rotated image, leaving this image intact. wxImage Rotate(double angle, const wxPoint & centre_of_rotation, - bool interpolating = true, wxPoint * offset_after_rotation = (wxPoint*) NULL) const; + bool interpolating = true, wxPoint * offset_after_rotation = NULL) const; wxImage Rotate90( bool clockwise = true ) const; wxImage Mirror( bool horizontally = true ) const; @@ -310,9 +352,13 @@ public: bool SetMaskFromImage(const wxImage & mask, unsigned char mr, unsigned char mg, unsigned char mb); - // converts image's alpha channel to mask, if it has any, does nothing - // otherwise: + // converts image's alpha channel to mask (choosing mask colour + // automatically or using the specified colour for the mask), if it has + // any, does nothing otherwise: bool ConvertAlphaToMask(unsigned char threshold = wxIMAGE_ALPHA_THRESHOLD); + void ConvertAlphaToMask(unsigned char mr, unsigned char mg, unsigned char mb, + unsigned char threshold = wxIMAGE_ALPHA_THRESHOLD); + // This method converts an image where the original alpha // information is only available as a shades of a colour @@ -352,9 +398,17 @@ public: int GetWidth() const; int GetHeight() const; + wxSize GetSize() const + { return wxSize(GetWidth(), GetHeight()); } + // Gets the type of image found by LoadFile or specified with SaveFile wxBitmapType GetType() const; + // Set the image type, this is normally only called if the image is being + // created from data in the given format but not using LoadFile() (e.g. + // wxGIFDecoder uses this) + void SetType(wxBitmapType type); + // these functions provide fastest access to wxImage data but should be // used carefully as no checks are done unsigned char *GetData() const; @@ -417,6 +471,7 @@ public: static wxImageHandler *FindHandler( const wxString& name ); static wxImageHandler *FindHandler( const wxString& extension, wxBitmapType imageType ); static wxImageHandler *FindHandler( wxBitmapType imageType ); + static wxImageHandler *FindHandlerMime( const wxString& mimetype ); static wxString GetImageExtWildcard(); @@ -427,6 +482,65 @@ public: static HSVValue RGBtoHSV(const RGBValue& rgb); static RGBValue HSVtoRGB(const HSVValue& hsv); +#if WXWIN_COMPATIBILITY_2_8 + wxDEPRECATED_CONSTRUCTOR( + wxImage(const wxString& name, long type, int index = -1) + { + LoadFile(name, (wxBitmapType)type, index); + } + ) + +#if wxUSE_STREAMS + wxDEPRECATED_CONSTRUCTOR( + wxImage(wxInputStream& stream, long type, int index = -1) + { + LoadFile(stream, (wxBitmapType)type, index); + } + ) + + wxDEPRECATED( + bool LoadFile(wxInputStream& stream, long type, int index = -1) + { + return LoadFile(stream, (wxBitmapType)type, index); + } + ) + + wxDEPRECATED( + bool SaveFile(wxOutputStream& stream, long type) const + { + return SaveFile(stream, (wxBitmapType)type); + } + ) +#endif // wxUSE_STREAMS + + wxDEPRECATED( + bool LoadFile(const wxString& name, long type, int index = -1) + { + return LoadFile(name, (wxBitmapType)type, index); + } + ) + + wxDEPRECATED( + bool SaveFile(const wxString& name, long type) const + { + return SaveFile(name, (wxBitmapType)type); + } + ) + + wxDEPRECATED( + static wxImageHandler *FindHandler(const wxString& ext, long type) + { + return FindHandler(ext, (wxBitmapType)type); + } + ) + + wxDEPRECATED( + static wxImageHandler *FindHandler(long imageType) + { + return FindHandler((wxBitmapType)imageType); + } + ) +#endif // WXWIN_COMPATIBILITY_2_8 protected: static wxList sm_handlers;