| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        rawbmp.h
 
- // Purpose:     interface of wxPixelData
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     @class wxPixelData
 
-     A class template with ready to use implementations for getting
 
-     direct and efficient access to wxBitmap's internal data and
 
-     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:
 
-        @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:
 
-        @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 ...
 
-         return;
 
-     }
 
-     if ( data.GetWidth() < 20 || data.GetHeight() < 20 )
 
-     {
 
-         // ... complain: the bitmap it too small ...
 
-         return;
 
-     }
 
-     wxNativePixelData::Iterator p(data);
 
-     // we draw a (10, 10)-(20, 20) rect manually using the given r, g, b
 
-     p.Offset(data, 10, 10);
 
-     for ( int y = 0; y < 10; ++y )
 
-     {
 
-         wxNativePixelData::Iterator rowStart = p;
 
-         for ( int x = 0; x < 10; ++x, ++p )
 
-         {
 
-             p.Red() = r;
 
-             p.Green() = g;
 
-             p.Blue() = b;
 
-         }
 
-         p = rowStart;
 
-         p.OffsetY(data, 1);
 
-     }
 
-     @endcode
 
-     @library{wxcore}
 
-     @category{gdi}
 
-     @see wxBitmap, wxImage
 
- */
 
- template <class Image, class PixelFormat = wxPixelFormatFor<Image> >
 
- class wxPixelData :
 
-     public wxPixelDataOut<Image>::template wxPixelDataIn<PixelFormat>
 
- {
 
- public:
 
-     /**
 
-         The type of the class we're working with.
 
-     */
 
-     typedef Image ImageType;
 
-     /**
 
-         Create pixel data object representing the entire image.
 
-     */
 
-     wxPixelData(Image& image);
 
-     /**
 
-         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
 
-         @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.
 
-     */
 
-     operator bool() const;
 
-     /**
 
-         Return the iterator pointing to the origin of the image.
 
-     */
 
-     Iterator GetPixels() const;
 
-     /**
 
-         Returns origin of the rectangular region this wxPixelData represents.
 
-     */
 
-     wxPoint GetOrigin() const;
 
-     /**
 
-         Return width of the region this wxPixelData represents.
 
-     */
 
-     int GetWidth() const;
 
-     /**
 
-         Return height of the region this wxPixelData represents.
 
-     */
 
-     int GetHeight() const;
 
-     /**
 
-         Return the area which this wxPixelData represents in the image.
 
-     */
 
-     wxSize GetSize() const;
 
-     /**
 
-         Return the distance between two rows.
 
-     */
 
-     int GetRowStride() const;
 
-     /**
 
-         The iterator of class wxPixelData.
 
-     */
 
-     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 individual colour components.
 
-         */
 
-         ChannelType& Red();
 
-         ChannelType& Green();
 
-         ChannelType& Blue();
 
-         ChannelType& Alpha();
 
-         //@}
 
-     };
 
- };
 
 
  |