X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0241477aee59c769cb6c8a29dd78e3c91d831199..6eefca4fb7793a8d6bc02e69694735cb3e5fc230:/interface/wx/image.h diff --git a/interface/wx/image.h b/interface/wx/image.h index 4a9f0fd13f..5efb33a5d6 100644 --- a/interface/wx/image.h +++ b/interface/wx/image.h @@ -3,7 +3,7 @@ // Purpose: interface of wxImageHandler and wxImage // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @@ -23,6 +23,29 @@ enum wxImageResolution wxIMAGE_RESOLUTION_CM = 2 }; +/** + Image resize algorithm. + + This is used with wxImage::Scale() and wxImage::Rescale(). + */ +enum wxImageResizeQuality +{ + /// Simplest and fastest algorithm. + wxIMAGE_QUALITY_NEAREST, + + /// Compromise between wxIMAGE_QUALITY_NEAREST and wxIMAGE_QUALITY_BICUBIC. + wxIMAGE_QUALITY_BILINEAR, + + /// Highest quality but slowest execution time. + wxIMAGE_QUALITY_BICUBIC, + + /// Default image resizing algorithm used by wxImage::Scale(). + wxIMAGE_QUALITY_NORMAL, + + /// Best image resizing algorithm, currently same as wxIMAGE_QUALITY_BICUBIC. + wxIMAGE_QUALITY_HIGH +}; + /** Possible values for PNG image type option. @@ -86,23 +109,23 @@ public: /** Returns @true if this handler supports the image format contained in the given stream. - + This function doesn't modify the current stream position (because it restores the original position before returning; this however requires the stream to be seekable; see wxStreamBase::IsSeekable). */ - bool CanRead( wxInputStream& stream ); + bool CanRead( wxInputStream& stream ); /** Returns @true if this handler supports the image format contained in the file with the given name. - + This function doesn't modify the current stream position (because it restores the original position before returning; this however requires the stream to be seekable; see wxStreamBase::IsSeekable). */ bool CanRead( const wxString& filename ); - + /** Gets the preferred file extension associated with this handler. @@ -231,6 +254,20 @@ public: Handler name. */ void SetName(const wxString& name); + + /** + Retrieve the version information about the image library used by this + handler. + + This method is not present in wxImageHandler class itself but is + present in a few of the classes deriving from it, currently + wxJPEGHandler, wxPNGHandler and wxTIFFHandler. It returns the + information about the version of the image library being used for the + corresponding handler implementation. + + @since 2.9.2 + */ + static wxVersionInfo GetLibraryVersionInfo(); }; @@ -325,7 +362,7 @@ class wxImage : public wxObject { public: /** - A simple class which stores red, green and blue values as 8 bit unsigned integers + A simple class which stores red, green and blue values as 8 bit unsigned integers in the range of 0-255. */ class RGBValue @@ -375,7 +412,7 @@ public: If @true, initialize the image to black. */ wxImage(int width, int height, bool clear = true); - + /** @overload */ @@ -402,7 +439,7 @@ public: @overload */ wxImage(const wxSize& sz, unsigned char* data, bool static_data = false); - + /** Creates an image from data in memory. If @a static_data is @false then the wxImage will take ownership of the data and free it @@ -428,12 +465,16 @@ public: */ wxImage(const wxSize& sz, unsigned char* data, unsigned char* data, unsigned char* alpha, bool static_data = false); - + /** Creates an image from XPM data. @param xpmData A pointer to XPM image data. + + @beginWxPerlOnly + Not supported by wxPerl. + @endWxPerlOnly */ wxImage(const char* const* xpmData); @@ -526,13 +567,13 @@ public: */ virtual ~wxImage(); - - + + /** @name Image creation, initialization and deletion functions */ //@{ - + /** Returns an identical copy of this image. */ @@ -554,7 +595,7 @@ public: /** Creates a fresh image. See wxImage::wxImage(int,int,unsigned char*,bool) for more info. - + @return @true if the call succeeded, @false otherwise. */ bool Create( int width, int height, unsigned char* data, bool static_data = false ); @@ -567,16 +608,16 @@ public: /** Creates a fresh image. See wxImage::wxImage(int,int,unsigned char*,unsigned char*,bool) for more info. - + @return @true if the call succeeded, @false otherwise. */ bool Create( int width, int height, unsigned char* data, unsigned char* alpha, bool static_data = false ); - + /** @overload */ bool Create( const wxSize& sz, unsigned char* data, unsigned char* alpha, bool static_data = false ); - + /** Initialize the image data with zeroes (the default) or with the byte value given as @a value. @@ -589,7 +630,7 @@ public: Destroys the image data. */ void Destroy(); - + /** Initializes the image alpha channel data. @@ -661,7 +702,7 @@ public: @see Scale() */ wxImage& Rescale(int width, int height, - int quality = wxIMAGE_QUALITY_NORMAL); + wxImageResizeQuality quality = wxIMAGE_QUALITY_NORMAL); /** Changes the size of the image in-place without scaling it by adding either a @@ -701,6 +742,13 @@ public: */ wxImage Rotate90(bool clockwise = true) const; + /** + Returns a copy of the image rotated by 180 degrees. + + @since 2.9.2 + */ + wxImage Rotate180() const; + /** Rotates the hue of each pixel in the image by @e angle, which is a double in the range of -1.0 to +1.0, where -1.0 corresponds to -360 degrees and +1.0 @@ -714,12 +762,8 @@ public: This is also useful for scaling bitmaps in general as the only other way to scale bitmaps is to blit a wxMemoryDC into another wxMemoryDC. - The parameter @a quality determines what method to use for resampling the image. - Can be one of the following: - - wxIMAGE_QUALITY_NORMAL: Uses the normal default scaling method of pixel - replication - - wxIMAGE_QUALITY_HIGH: Uses bicubic and box averaging resampling methods - for upsampling and downsampling respectively + The parameter @a quality determines what method to use for resampling + the image, see wxImageResizeQuality documentation. It should be noted that although using @c wxIMAGE_QUALITY_HIGH produces much nicer looking results it is a slower method. Downsampling will use the box averaging @@ -753,8 +797,8 @@ public: @see Rescale() */ wxImage Scale(int width, int height, - int quality = wxIMAGE_QUALITY_NORMAL) const; - + wxImageResizeQuality quality = wxIMAGE_QUALITY_NORMAL) const; + /** Returns a resized version of this image without scaling it by adding either a border with the given colour or cropping as necessary. @@ -792,7 +836,7 @@ public: FindFirstUnusedColour() by this function, see the overload below if you this is not appropriate. - @return @false if FindFirstUnusedColour returns @false, @true otherwise. + @return Returns @true on success, @false on error. */ bool ConvertAlphaToMask(unsigned char threshold = wxIMAGE_ALPHA_THRESHOLD); @@ -818,8 +862,9 @@ public: are set. Pixels with the alpha values above the threshold are considered to be opaque. + @return Returns @true on success, @false on error. */ - void ConvertAlphaToMask(unsigned char mr, unsigned char mg, unsigned char mb, + bool ConvertAlphaToMask(unsigned char mr, unsigned char mg, unsigned char mb, unsigned char threshold = wxIMAGE_ALPHA_THRESHOLD); /** @@ -828,9 +873,15 @@ public: The returned image uses the luminance component of the original to calculate the greyscale. Defaults to using the standard ITU-T BT.601 when converting to YUV, where every pixel equals - (R * @a lr) + (G * @a lg) + (B * @a lb). + (R * @a weight_r) + (G * @a weight_g) + (B * @a weight_b). */ - wxImage ConvertToGreyscale(double lr = 0.299, double lg = 0.587, double lb = 1.114) const; + wxImage ConvertToGreyscale(double weight_r, double weight_g, double weight_b) const; + + /** + Returns a greyscale version of the image. + @since 2.9.0 + */ + wxImage ConvertToGreyscale() const; /** Returns monochromatic version of the image. @@ -839,15 +890,21 @@ public: colour and black colour everywhere else. */ wxImage ConvertToMono(unsigned char r, unsigned char g, unsigned char b) const; - + + /** + Returns disabled (dimmed) version of the image. + @since 2.9.0 + */ + wxImage ConvertToDisabled(unsigned char brightness = 255) const; + //@} - - + + /** @name Miscellaneous functions */ //@{ - + /** Computes the histogram of the image. @a histogram is a reference to wxImageHistogram object. wxImageHistogram is a specialization of @@ -870,7 +927,7 @@ public: @return Returns number of colours in the histogram. */ unsigned long ComputeHistogram(wxImageHistogram& histogram) const; - + /** Finds the first colour that is never used in the image. The search begins at given initial colour and continues by increasing @@ -903,10 +960,10 @@ public: @return Returns 'this' object. */ wxImage& operator=(const wxImage& image); - + //@} - - + + /** @name Getters */ @@ -992,7 +1049,7 @@ public: @see GetHeight(), GetWidth() */ wxSize GetSize() const; - + /** Gets a user-defined string-valued option. @@ -1361,6 +1418,16 @@ public: */ void SetAlpha(int x, int y, unsigned char alpha); + /** + Removes the alpha channel from the image. + + This function should only be called if the image has alpha channel data, + use HasAlpha() to check for this. + + @since 2.9.1 + */ + void ClearAlpha(); + /** Sets the image data without performing checks. @@ -1371,12 +1438,12 @@ public: The data must have been allocated with @c malloc(), @b NOT with @c operator new. - If @a static_data is @false, after this call the pointer to the data is + If @a static_data is @false, after this call the pointer to the data is owned by the wxImage object, that will be responsible for deleting it. Do not pass to this function a pointer obtained through GetData(). */ void SetData(unsigned char* data, bool static_data = false); - + /** @overload */ @@ -1434,8 +1501,8 @@ public: @see GetOption(), GetOptionInt(), HasOption() */ void SetOption(const wxString& name, const wxString& value); - - /** + + /** @overload */ void SetOption(const wxString& name, int value); @@ -1479,14 +1546,14 @@ public: void SetType(wxBitmapType type); //@} - - - + + + /** @name Handler management functions */ //@{ - + /** Register an image handler. See @ref image_handlers for a list of the available handlers. @@ -1498,7 +1565,7 @@ public: This function is called by wxWidgets on exit. */ static void CleanUpHandlers(); - + /** Finds the handler with the given name. @@ -1591,22 +1658,22 @@ public: @see wxImageHandler */ static bool RemoveHandler(const wxString& name); - + //@} - - + + /** - Returns @true if at least one of the available image handlers can read + Returns @true if at least one of the available image handlers can read the file with the given name. - + See wxImageHandler::CanRead for more info. */ static bool CanRead(const wxString& filename); - + /** - Returns @true if at least one of the available image handlers can read + Returns @true if at least one of the available image handlers can read the data in the given stream. - + See wxImageHandler::CanRead for more info. */ static bool CanRead(wxInputStream& stream); @@ -1621,7 +1688,7 @@ public: of the file to query. For the overload taking the parameter @a stream, that's the opened input stream with image data. - + See wxImageHandler::GetImageCount() for more info. The parameter @a type may be one of the following values: @@ -1667,12 +1734,12 @@ public: @see wxImageHandler */ static wxString GetImageExtWildcard(); - + /** Converts a color in RGB color space to HSV color space. */ static wxImage::HSVValue RGBtoHSV(const wxImage::RGBValue& rgb); - + /** Converts a color in HSV color space to RGB color space. */ @@ -1695,7 +1762,7 @@ wxImage wxNullImage; /** Initializes all available image handlers. For a list of available handlers, see wxImage. - If you don't need/want all image handlers loaded + If you don't need/want all image handlers loaded @see wxImage, wxImageHandler