X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/427c415b933075ab9be91d7116c6db80858e0b78..4e878f44abee3e03cf981772e9c623f0c16408c9:/interface/wx/image.h diff --git a/interface/wx/image.h b/interface/wx/image.h index f1bd3ffc02..67710f92e4 100644 --- a/interface/wx/image.h +++ b/interface/wx/image.h @@ -6,6 +6,35 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +/** + Possible values for the image resolution option. + + @see wxImage::GetOptionInt(). + */ +enum wxImageResolution +{ + /// Resolution not specified. + wxIMAGE_RESOLUTION_NONE = 0, + + /// Resolution specified in inches. + wxIMAGE_RESOLUTION_INCHES = 1, + + /// Resolution specified in centimetres. + wxIMAGE_RESOLUTION_CM = 2 +}; + +/** + Possible values for PNG image type option. + + @see wxImage::GetOptionInt(). + */ +enum wxImagePNGType +{ + wxPNG_TYPE_COLOUR = 0, ///< Colour PNG image. + wxPNG_TYPE_GREY = 2, ///< Greyscale PNG image converted from RGB. + wxPNG_TYPE_GREY_RED = 3 ///< Greyscale PNG image using red as grey. +}; + /** @class wxImageHandler @@ -109,8 +138,8 @@ public: @see wxImage::LoadFile, wxImage::SaveFile, SaveFile() */ - bool LoadFile(wxImage* image, wxInputStream& stream, - bool verbose = true, int index = 0); + virtual bool LoadFile(wxImage* image, wxInputStream& stream, + bool verbose = true, int index = -1); /** Saves a image in the output stream. @@ -119,12 +148,16 @@ public: The image object which is to be affected by this operation. @param stream Opened output stream for writing the data. + @param verbose + If set to @true, errors reported by the image handler will produce + wxLogMessages. @return @true if the operation succeeded, @false otherwise. @see wxImage::LoadFile, wxImage::SaveFile, LoadFile() */ - bool SaveFile(wxImage* image, wxOutputStream& stream); + virtual bool SaveFile(wxImage* image, wxOutputStream& stream, + bool verbose = true); /** Sets the handler extension. @@ -497,7 +530,7 @@ public: @return @false if FindFirstUnusedColour returns @false, @true otherwise. */ - bool ConvertAlphaToMask(unsigned char threshold = 128); + bool ConvertAlphaToMask(unsigned char threshold = wxIMAGE_ALPHA_THRESHOLD); /** @deprecated @@ -514,8 +547,7 @@ public: when converting to YUV, where every pixel equals (R * @a lr) + (G * @a lg) + (B * @a lb). */ - wxImage ConvertToGreyscale(double lr = 0.299, double lg = 0.587, - double lb = 0.114) const; + wxImage ConvertToGreyscale(double lr = 0.299, double lg = 0.587, double lb = 1.114) const; /** Returns monochromatic version of the image. @@ -638,7 +670,7 @@ public: does have it, this pointer may be used to directly manipulate the alpha values which are stored as the RGB ones. */ - const unsigned char * GetAlpha() const; + unsigned char* GetAlpha() const; /** Returns the blue intensity at the given coordinate. @@ -745,31 +777,74 @@ public: unsigned char GetMaskRed() const; /** - Gets a user-defined option. The function is case-insensitive to @a name. + Gets a user-defined string-valued option. - For example, when saving as a JPEG file, the option @b quality is - used, which is a number between 0 and 100 (0 is terrible, 100 is very good). + Currently the only defined string option is + @li wxIMAGE_OPTION_FILENAME: The name of the file from which the image + was loaded. @see SetOption(), GetOptionInt(), HasOption() + + @param name + The name of the option, case-insensitive. + @return + The value of the option or an empty string if not found. Use + HasOption() if an empty string can be a valid option value. */ wxString GetOption(const wxString& name) const; /** - Gets a user-defined option as an integer. + Gets a user-defined integer-valued option. + The function is case-insensitive to @a name. If the given option is not present, the function returns 0. Use HasOption() is 0 is a possibly valid value for the option. - Options for wxPNGHandler: - @li wxIMAGE_OPTION_PNG_FORMAT: Format for saving a PNG file. + Generic options: + @li wxIMAGE_OPTION_MAX_WIDTH and wxIMAGE_OPTION_MAX_HEIGHT: If either + of these options is specified, the loaded image will be scaled down + (preserving its aspect ratio) so that its width is less than the + max width given if it is not 0 @em and its height is less than the + max height given if it is not 0. This is typically used for loading + thumbnails and the advantage of using these options compared to + calling Rescale() after loading is that some handlers (only JPEG + one right now) support rescaling the image during loading which is + vastly more efficient than loading the entire huge image and + rescaling it later (if these options are not supported by the + handler, this is still what happens however). These options must be + set before calling LoadFile() to have any effect. + + @li wxIMAGE_OPTION_QUALITY: JPEG quality used when saving. This is an + integer in 0..100 range with 0 meaning very poor and 100 excellent + (but very badly compressed). This option is currently ignored for + the other formats. + + @li wxIMAGE_OPTION_RESOLUTIONUNIT: The value of this option determines + whether the resolution of the image is specified in centimetres or + inches, see wxImageResolution enum elements. + + @li wxIMAGE_OPTION_RESOLUTION, wxIMAGE_OPTION_RESOLUTIONX and + wxIMAGE_OPTION_RESOLUTIONY: These options define the resolution of + the image in the units corresponding to wxIMAGE_OPTION_RESOLUTIONUNIT + options value. The first option can be set before saving the image + to set both horizontal and vertical resolution to the same value. + The X and Y options are set by the image handlers if they support + the image resolution (currently BMP, JPEG and TIFF handlers do) and + the image provides the resolution information and can be queried + after loading the image. + + Options specific to wxPNGHandler: + @li wxIMAGE_OPTION_PNG_FORMAT: Format for saving a PNG file, see + wxImagePNGType for the supported values. @li wxIMAGE_OPTION_PNG_BITDEPTH: Bit depth for every channel (R/G/B/A). - Supported values for wxIMAGE_OPTION_PNG_FORMAT: - @li wxPNG_TYPE_COLOUR: Stores RGB image. - @li wxPNG_TYPE_GREY: Stores grey image, converts from RGB. - @li wxPNG_TYPE_GREY_RED: Stores grey image, uses red value as grey. - @see SetOption(), GetOption() + + @param name + The name of the option, case-insensitive. + @return + The value of the option or 0 if not found. Use HasOption() if 0 + can be a valid option value. */ int GetOptionInt(const wxString& name) const; @@ -777,8 +852,8 @@ public: Get the current mask colour or find a suitable unused colour that could be used as a mask colour. Returns @true if the image currently has a mask. */ - bool GetOrFindMaskColour(unsigned char r, unsigned char g, - unsigned char b) const; + bool GetOrFindMaskColour(unsigned char* r, unsigned char* g, + unsigned char* b) const; /** Returns the palette associated with the image. @@ -818,7 +893,7 @@ public: /** Converts a color in HSV color space to RGB color space. */ - wxImage::RGBValue HSVtoRGB(const wxImage::HSVValue & hsv); + static wxImage::RGBValue HSVtoRGB(const wxImage::HSVValue& hsv); /** Returns @true if this image has alpha channel, @false otherwise. @@ -882,7 +957,8 @@ public: colour if this image has a mask or if this image has alpha channel and alpha value of this pixel is strictly less than @a threshold. */ - bool IsTransparent(int x, int y, unsigned char threshold = 128) const; + bool IsTransparent(int x, int y, + unsigned char threshold = wxIMAGE_ALPHA_THRESHOLD) const; /** Loads an image from an input stream. @@ -928,7 +1004,9 @@ public: @see SaveFile() */ - bool LoadFile(wxInputStream& stream, wxBitmapType type, int index = -1); + virtual bool LoadFile(wxInputStream& stream, + wxBitmapType type = wxBITMAP_TYPE_ANY, + int index = -1); /** Loads an image from a file. @@ -941,9 +1019,9 @@ public: @param index See the description in the LoadFile(wxInputStream&, wxBitmapType, int) overload. */ - bool LoadFile(const wxString& name, - wxBitmapType type = wxBITMAP_TYPE_ANY, - int index = -1); + virtual bool LoadFile(const wxString& name, + wxBitmapType type = wxBITMAP_TYPE_ANY, + int index = -1); /** Loads an image from a file. @@ -956,8 +1034,8 @@ public: @param index See the description in the LoadFile(wxInputStream&, wxBitmapType, int) overload. */ - bool LoadFile(const wxString& name, const wxString& mimetype, - int index = -1); + virtual bool LoadFile(const wxString& name, const wxString& mimetype, + int index = -1); /** @@ -971,9 +1049,8 @@ public: @param index See the description in the LoadFile(wxInputStream&, wxBitmapType, int) overload. */ - bool LoadFile(wxInputStream& stream, - const wxString& mimetype, - int index = -1); + virtual bool LoadFile(wxInputStream& stream, const wxString& mimetype, + int index = -1); /** Returns a mirrored copy of the image. @@ -989,7 +1066,7 @@ public: /** Converts a color in RGB color space to HSV color space. */ - wxImage::HSVValue RGBtoHSV(const wxImage::RGBValue& rgb); + static wxImage::HSVValue RGBtoHSV(const wxImage::RGBValue& rgb); /** Finds the handler with the given name, and removes it. @@ -1020,7 +1097,7 @@ public: @see Scale() */ - wxImage Rescale(int width, int height, + wxImage& Rescale(int width, int height, int quality = wxIMAGE_QUALITY_NORMAL); /** @@ -1038,9 +1115,8 @@ public: @see Size() */ - wxImage Resize(const wxSize& size, const wxPoint& pos, - int red = -1, int green = -1, - int blue = -1); + wxImage& Resize(const wxSize& size, const wxPoint& pos, int red = -1, + int green = -1, int blue = -1); /** Rotates the image about the given point, by @a angle radians. @@ -1092,8 +1168,8 @@ public: @see LoadFile() */ - bool SaveFile(wxOutputStream& stream, - const wxString& mimetype) const; + virtual bool SaveFile(wxOutputStream& stream, + const wxString& mimetype) const; /** Saves an image in the named file. @@ -1115,7 +1191,7 @@ public: in 8 colors at the size supplied. @li wxBITMAP_TYPE_CUR: Save a Windows cursor file (CUR). */ - bool SaveFile(const wxString& name, wxBitmapType type) const; + virtual bool SaveFile(const wxString& name, wxBitmapType type) const; /** Saves an image in the named file. @@ -1125,8 +1201,7 @@ public: @param mimetype MIME type. */ - bool SaveFile(const wxString& name, - const wxString& mimetype) const; + virtual bool SaveFile(const wxString& name, const wxString& mimetype) const; /** Saves an image in the named file. @@ -1139,7 +1214,7 @@ public: @param name Name of the file to save the image to. */ - bool SaveFile(const wxString& name) const; + virtual bool SaveFile(const wxString& name) const; /** Saves an image in the given stream. @@ -1149,7 +1224,7 @@ public: @param type MIME type. */ - bool SaveFile(wxOutputStream& stream, wxBitmapType type) const; + virtual bool SaveFile(wxOutputStream& stream, wxBitmapType type) const; /** Returns a scaled version of the image. @@ -1220,6 +1295,7 @@ public: */ void SetAlpha(int x, int y, unsigned char alpha); + //@{ /** Sets the image data without performing checks. @@ -1234,7 +1310,10 @@ public: that will be responsible for deleting it. Do not pass to this function a pointer obtained through GetData(). */ - void SetData(unsigned char* data); + void SetData(unsigned char* data, bool static_data = false); + void SetData(unsigned char* data, int new_width, int new_height, + bool static_data = false); + //@} /** Specifies whether there is a mask or not. @@ -1302,7 +1381,8 @@ public: This routine performs bounds-checks for the coordinate so it can be considered a safe way to manipulate the data. */ - void SetRGB(wxRect& rect, unsigned char red, + void SetRGB(const wxRect& rect, + unsigned char red, unsigned char green, unsigned char blue); @@ -1351,7 +1431,7 @@ public: @return Returns 'this' object. */ - wxImage operator =(const wxImage& image); + wxImage& operator=(const wxImage& image); }; // ============================================================================