]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/rawbmp.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxPixelData
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
12 A class template with ready to use implementations for getting
13 direct and efficient access to wxBitmap's internal data and
14 wxImage's internal data through a standard interface. It is
15 possible to extend this class (interface) to other types of
18 Implemented on Windows, GTK+ and OS X:
19 @li wxNativePixelData: Class to access to wxBitmap's internal data
20 without alpha channel (RGB).
21 @li wxAlphaPixelData: Class to access to wxBitmap's internal data with
24 Implemented everywhere:
25 @li wxImagePixelData: Class to access to wxImage's internal data with
32 wxNativePixelData data(bmp);
35 // ... raw access to bitmap data unavailable, do something else ...
39 if ( data.GetWidth() < 20 || data.GetHeight() < 20 )
41 // ... complain: the bitmap it too small ...
45 wxNativePixelData::Iterator p(data);
47 // we draw a (10, 10)-(20, 20) rect manually using the given r, g, b
48 p.Offset(data, 10, 10);
50 for ( int y = 0; y < 10; ++y )
52 wxNativePixelData::Iterator rowStart = p;
54 for ( int x = 0; x < 10; ++x, ++p )
69 @see wxBitmap, wxImage
71 template <class Image
, class PixelFormat
= wxPixelFormatFor
<Image
> >
73 public wxPixelDataOut
<Image
>::template wxPixelDataIn
<PixelFormat
>
77 The type of the class we're working with.
79 typedef Image ImageType
;
82 Create pixel data object representing the entire image.
84 wxPixelData(Image
& image
);
88 Create pixel data object representing the area of the image defined by
91 wxPixelData(Image
& i
, const wxRect
& rect
);
94 Create pixel data object representing the area of the image defined by
97 wxPixelData(Image
& i
, const wxPoint
& pt
, const wxSize
& sz
);
100 Return @true of if we could get access to bitmap data successfully.
102 operator bool() const;
105 Return the iterator pointing to the origin of the image.
107 Iterator
GetPixels() const;
110 Returns origin of the rectangular region this wxPixelData represents.
112 wxPoint
GetOrigin() const;
115 Return width of the region this wxPixelData represents.
117 int GetWidth() const;
120 Return height of the region this wxPixelData represents.
122 int GetHeight() const;
125 Return the area which this wxPixelData represents in the image.
127 wxSize
GetSize() const;
130 Return the distance between two rows.
132 int GetRowStride() const;
136 The iterator of class wxPixelData.
143 Reset the iterator to point to (0, 0).
145 void Reset(const PixelData
& data
);
148 Initializes the iterator to point to the origin of the given pixel
151 Iterator(PixelData
& data
);
154 Initializes the iterator to point to the origin of the given Bitmap.
156 Iterator(wxBitmap
& bmp
, PixelData
& data
);
164 Return @true if this iterator is valid.
169 Advance the iterator to the next pixel, prefix version.
171 Iterator
& operator++();
174 Advance the iterator to the next pixel, postfix (hence less
175 efficient -- don't use it unless you absolutely must) version.
177 Iterator
operator++(int);
180 Move @a x pixels to the right and @a y down.
182 @note The rows won't wrap automatically.
184 void Offset(const PixelData
& data
, int x
, int y
);
187 Move @a x pixels to the right.
189 @note The rows won't wrap automatically.
191 void OffsetX(const PixelData
&data
, int x
);
194 Move @a y rows to the bottom
196 void OffsetY(const PixelData
& data
, int y
);
199 Go to the given position
201 void MoveTo(const PixelData
& data
, int x
, int y
);
205 Data Access: Access to invidividual colour components.
208 ChannelType
& Green();
210 ChannelType
& Alpha();