X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/de022e4f1197d146e9bdd6aeb2ac0ee9cb217737..3201a1046ba71ba8e5ef2ed694fde34d12f743f3:/interface/rawbmp.h diff --git a/interface/rawbmp.h b/interface/rawbmp.h index 45b2ab1a0a..df9ac84567 100644 --- a/interface/rawbmp.h +++ b/interface/rawbmp.h @@ -1,3 +1,10 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: rawbmp.h +// Purpose: interface of wxPixelData +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// /** @class wxPixelData @@ -8,26 +15,31 @@ wxImage's internal data through a standard interface. It is possible to extend this class (interface) to other types of image content. - + Implemented on Windows, GTK+ and OS X: - wxNativePixelData: Class to access to wxBitmap's internal data without alpha channel (RGB). - wxAlphaPixelData: Class to access to wxBitmap's internal data with alpha channel (RGBA). - + @li wxNativePixelData: Class to access to wxBitmap's internal data + without alpha channel (RGB). + @li wxAlphaPixelData: Class to access to wxBitmap's internal data with + alpha channel (RGBA). + Implemented everywhere: - wxImagePixelData: Class to access to wxImage's internal data with alpha channel (RGBA). - + @li wxImagePixelData: Class to access to wxImage's internal data with + alpha channel (RGBA). + + Example: + @code wxBitmap bmp; wxNativePixelData data(bmp); if ( !data ) { - ... raw access to bitmap data unavailable, do something else ... + // ... raw access to bitmap data unavailable, do something else ... return; } if ( data.GetWidth() < 20 || data.GetHeight() < 20 ) { - ... complain: the bitmap it too small ... + // ... complain: the bitmap it too small ... return; } @@ -54,7 +66,7 @@ @library{wxcore} @category{gdi} - + @see wxBitmap, wxImage */ template > @@ -62,140 +74,142 @@ class wxPixelData : public wxPixelDataOut::template wxPixelDataIn { public: - /** - the type of the class we're working with + /** + The type of the class we're working with. */ typedef Image ImageType; - + /** - Create pixel data object representing the entire image + Create pixel data object representing the entire image. */ wxPixelData(Image& image); - - + + /** - Create pixel data object representing the area - of the image defined by @e rect. + Create pixel data object representing the area of the image defined by + @a rect. */ wxPixelData(Image& i, const wxRect& rect); - + /** - Create pixel data object representing the area - of the image defined by @e pt and @e sz. + Create pixel data object representing the area of the image defined by + @a pt and @a sz. */ wxPixelData(Image& i, const wxPoint& pt, const wxSize& sz) - + /** - Return true of if we could get access to bitmap data - successfully + Return @true of if we could get access to bitmap data successfully. */ operator bool() const: - /** - Return the iterator pointing to the origin of the image + /** + Return the iterator pointing to the origin of the image. */ Iterator GetPixels() const; /** - Returns origin of the rectangular region we represent + Returns origin of the rectangular region this wxPixelData represents. */ wxPoint GetOrigin() const; - /** - Return width of the region we represent + /** + Return width of the region this wxPixelData represents. */ int GetWidth() const; - /** - Return height of the region we represent + /** + Return height of the region this wxPixelData represents. */ int GetHeight() const; - /* - Return area which this class represents in the image + /** + Return the area which this wxPixelData represents in the image. */ wxSize GetSize() const; /** - Return the distance between two rows + Return the distance between two rows. */ int GetRowStride() const; /** - Iterator + The iterator of class wxPixelData. */ - class Iterator - { - public: - /** - go back to (0, 0) - */ - void Reset(const PixelData& data); - - /** - Initializes the iterator to point to the origin of the given - pixel data - */ - Iterator(PixelData& data); - - /** - Initializes the iterator to point to the origin of the given - Bitmap - */ - Iterator(wxBitmap& bmp, PixelData& data); - - /** - Default constructor - */ - Iterator(); - - /** - Return true if this iterator is valid - */ - bool IsOk() const; - - /** - Advance the iterator to the next pixel, prefix version - */ - Iterator& operator++(); - - /** - Postfix (hence less efficient -- don't use it unless you - absolutely must) version - */ - Iterator operator++(int); - - /** - Move x pixels to the right and y down - note that the rows don't wrap! - */ - void Offset(const PixelData& data, int x, int y); - - /** - Move x pixels to the right (again, no row wrapping) - */ - void OffsetX(const PixelData&data, int x); - - /** - Move y rows to the bottom - */ - void OffsetY(const PixelData& data, int y); - - /** - Go to the given position - */ - void MoveTo(const PixelData& data, int x, int y); - - //@{ - /** - Data access: gives access to invidividual colour components. - */ - ChannelType& Red(); - ChannelType& Green(); - ChannelType& Blue(); - ChannelType& Alpha(); - //@} - }; + class Iterator + { + public: + + /** + Reset the iterator to point to (0, 0). + */ + void Reset(const PixelData& data); + + /** + Initializes the iterator to point to the origin of the given pixel + data. + */ + Iterator(PixelData& data); + + /** + Initializes the iterator to point to the origin of the given Bitmap. + */ + Iterator(wxBitmap& bmp, PixelData& data); + + /** + Default constructor. + */ + Iterator(); + + /** + Return @true if this iterator is valid. + */ + bool IsOk() const; + + /** + Advance the iterator to the next pixel, prefix version. + */ + Iterator& operator++(); + + /** + Advance the iterator to the next pixel, postfix (hence less + efficient -- don't use it unless you absolutely must) version. + */ + Iterator operator++(int); + + /** + Move @a x pixels to the right and @a y down. + + @note The rows won't wrap automatically. + */ + void Offset(const PixelData& data, int x, int y); + + /** + Move @a x pixels to the right. + + @note The rows won't wrap automatically. + */ + void OffsetX(const PixelData&data, int x); + + /** + Move @a y rows to the bottom + */ + void OffsetY(const PixelData& data, int y); + + /** + Go to the given position + */ + void MoveTo(const PixelData& data, int x, int y); + + //@{ + /** + Data Access: Access to invidividual colour components. + */ + ChannelType& Red(); + ChannelType& Green(); + ChannelType& Blue(); + ChannelType& Alpha(); + //@} + }; };