wxwidgets/interface/wx/rawbmp.h
Vadim Zeitlin 8ac10d28f8 Fix all the other comments with Doxygen grouping commands too
This is the same thing as bd92523bc5 (Fix use of Doxygen @addtogroup
command, 2022-08-03) except it fixes comments format for all the other
occurrences of "@{" and "@}" too, not just for those used with
@addtogroup which was the problem in #22572.

This fixes many different formatting problems due to attaching various
Doxygen commands to wrong elements because of broken grouping, e.g. all
overloaded functions were documented incorrectly and there were several
problems in wxString documentation.

See #22248.
2022-08-03 18:58:47 +02:00

219 lines
5.5 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// 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 macOS:
@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).
wxMSW note: efficient access is only possible to the bits of the so called
device independent bitmaps (DIB) under MSW. To ensure that wxBitmap uses a
DIB internally and not a device dependent bitmap (DDB), you need to pass an
explicit depth to its ctor, i.e. either 24 or 32, as by default wxBitmap
creates a DDB of the screen depth.
Example:
@code
wxBitmap bmp(width, size, 24); // explicit depth important under MSW
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();
///@}
};
};