X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/48889bca6f8b2504f78c0f47b32f5e95c64d915d..e5805c0fde8bfabee79b155fbea761398efa4fc0:/include/wx/image.h diff --git a/include/wx/image.h b/include/wx/image.h index 20fb50f5f6..cb602383d1 100644 --- a/include/wx/image.h +++ b/include/wx/image.h @@ -28,17 +28,17 @@ // which breaks the compilation below #undef index -#define wxIMAGE_OPTION_QUALITY wxString(_T("quality")) -#define wxIMAGE_OPTION_FILENAME wxString(_T("FileName")) +#define wxIMAGE_OPTION_QUALITY wxString(wxT("quality")) +#define wxIMAGE_OPTION_FILENAME wxString(wxT("FileName")) -#define wxIMAGE_OPTION_RESOLUTION wxString(_T("Resolution")) -#define wxIMAGE_OPTION_RESOLUTIONX wxString(_T("ResolutionX")) -#define wxIMAGE_OPTION_RESOLUTIONY wxString(_T("ResolutionY")) +#define wxIMAGE_OPTION_RESOLUTION wxString(wxT("Resolution")) +#define wxIMAGE_OPTION_RESOLUTIONX wxString(wxT("ResolutionX")) +#define wxIMAGE_OPTION_RESOLUTIONY wxString(wxT("ResolutionY")) -#define wxIMAGE_OPTION_RESOLUTIONUNIT wxString(_T("ResolutionUnit")) +#define wxIMAGE_OPTION_RESOLUTIONUNIT wxString(wxT("ResolutionUnit")) -#define wxIMAGE_OPTION_MAX_WIDTH wxString(_T("MaxWidth")) -#define wxIMAGE_OPTION_MAX_HEIGHT wxString(_T("MaxHeight")) +#define wxIMAGE_OPTION_MAX_WIDTH wxString(wxT("MaxWidth")) +#define wxIMAGE_OPTION_MAX_HEIGHT wxString(wxT("MaxHeight")) // constants used with wxIMAGE_OPTION_RESOLUTIONUNIT // @@ -56,10 +56,18 @@ enum wxImageResolution }; // Constants for wxImage::Scale() for determining the level of quality -enum +enum wxImageResizeQuality { - wxIMAGE_QUALITY_NORMAL = 0, - wxIMAGE_QUALITY_HIGH = 1 + // different image resizing algorithms used by Scale() and Rescale() + wxIMAGE_QUALITY_NEAREST = 0, + wxIMAGE_QUALITY_BILINEAR = 1, + wxIMAGE_QUALITY_BICUBIC = 2, + + // default quality is low (but fast) + wxIMAGE_QUALITY_NORMAL = wxIMAGE_QUALITY_NEAREST, + + // highest (but best) quality + wxIMAGE_QUALITY_HIGH = wxIMAGE_QUALITY_BICUBIC }; // alpha channel values: fully transparent, default threshold separating @@ -100,10 +108,10 @@ public: #if wxUSE_STREAMS // NOTE: LoadFile and SaveFile are not pure virtuals to allow derived classes // to implement only one of the two - virtual bool LoadFile( wxImage *WXUNUSED(image), wxInputStream& WXUNUSED(stream), + virtual bool LoadFile( wxImage *WXUNUSED(image), wxInputStream& WXUNUSED(stream), bool WXUNUSED(verbose)=true, int WXUNUSED(index)=-1 ) { return false; } - virtual bool SaveFile( wxImage *WXUNUSED(image), wxOutputStream& WXUNUSED(stream), + virtual bool SaveFile( wxImage *WXUNUSED(image), wxOutputStream& WXUNUSED(stream), bool WXUNUSED(verbose)=true ) { return false; } @@ -135,9 +143,9 @@ protected: #if wxUSE_STREAMS // NOTE: this function is allowed to change the current stream position // since GetImageCount() will take care of restoring it later - virtual int DoGetImageCount( wxInputStream& WXUNUSED(stream) ) + virtual int DoGetImageCount( wxInputStream& WXUNUSED(stream) ) { return 1; } // default return value is 1 image - + // NOTE: this function is allowed to change the current stream position // since CallDoCanRead() will take care of restoring it later virtual bool DoCanRead( wxInputStream& stream ) = 0; @@ -275,7 +283,7 @@ public: 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); } @@ -285,7 +293,7 @@ public: { return Create(sz.GetWidth(), sz.GetHeight(), data, alpha, static_data); } void Destroy(); - + // initialize the image data with zeroes void Clear(unsigned char value = 0); @@ -308,10 +316,13 @@ public: void Paste( const wxImage &image, int x, int y ); // return the new image with size width*height - wxImage Scale( int width, int height, int quality = wxIMAGE_QUALITY_NORMAL ) const; + wxImage Scale( int width, int height, + wxImageResizeQuality quality = wxIMAGE_QUALITY_NORMAL ) const; // box averager and bicubic filters for up/down sampling + wxImage ResampleNearest(int width, int height) const; wxImage ResampleBox(int width, int height) const; + wxImage ResampleBilinear(int width, int height) const; wxImage ResampleBicubic(int width, int height) const; // blur the image according to the specified pixel radius @@ -322,7 +333,9 @@ public: wxImage ShrinkBy( int xFactor , int yFactor ) const ; // rescales the image in place - wxImage& Rescale( int width, int height, int quality = wxIMAGE_QUALITY_NORMAL ) { return *this = Scale(width, height, quality); } + wxImage& Rescale( int width, int height, + wxImageResizeQuality quality = wxIMAGE_QUALITY_NORMAL ) + { return *this = Scale(width, height, quality); } // resizes the image in place wxImage& Resize( const wxSize& size, const wxPoint& pos, @@ -341,13 +354,17 @@ public: unsigned char r2, unsigned char g2, unsigned char b2 ); // Convert to greyscale image. Uses the luminance component (Y) of the image. - // The luma value (YUV) is calculated using (R * lr) + (G * lg) + (B * lb), defaults to ITU-T BT.601 - wxImage ConvertToGreyscale( double lr = 0.299, double lg = 0.587, double lb = 0.114 ) const; + // The luma value (YUV) is calculated using (R * weight_r) + (G * weight_g) + (B * weight_b), defaults to ITU-T BT.601 + wxImage ConvertToGreyscale(double weight_r, double weight_g, double weight_b) const; + wxImage ConvertToGreyscale(void) const; // convert to monochrome image ( will be replaced by white, // everything else by black) wxImage ConvertToMono( unsigned char r, unsigned char g, unsigned char b ) const; + // Convert to disabled (dimmed) image. + wxImage ConvertToDisabled(unsigned char brightness = 255) const; + // these routines are slow but safe void SetRGB( int x, int y, unsigned char r, unsigned char g, unsigned char b ); void SetRGB( const wxRect& rect, unsigned char r, unsigned char g, unsigned char b ); @@ -434,6 +451,7 @@ public: bool HasAlpha() const { return GetAlpha() != NULL; } void SetAlpha(unsigned char *alpha = NULL, bool static_data=false); void InitAlpha(); + void ClearAlpha(); // return true if this pixel is masked or has alpha less than specified // threshold