#include "wx/list.h"
#include "wx/gdiobj.h"
#include "wx/gdicmn.h"
+#include "wx/bitmap.h"
#include "wx/os2/private.h"
class WXDLLEXPORT wxRect;
class WXDLLEXPORT wxPoint;
-enum wxRegionContain {
- wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2
-};
-
// So far, for internal use only
enum wxRegionOp { wxRGN_AND // Creates the intersection of the two combined regions.
,wxRGN_COPY // Creates a copy of the region identified by hrgnSrc1.
);
wxRegion(const wxRect& rRect);
wxRegion(WXHRGN hRegion, WXHDC hPS); // Hangs on to this region
+ wxRegion( const wxBitmap& bmp)
+ {
+ Union(bmp);
+ }
+ wxRegion( const wxBitmap& bmp,
+ const wxColour& transColour, int tolerance = 0)
+ {
+ Union(bmp, transColour, tolerance);
+ }
wxRegion();
- ~wxRegion();
-
- //
- // Copying
- //
- inline wxRegion(const wxRegion& rSrc)
- { Ref(rSrc); }
- inline wxRegion& operator = (const wxRegion& rSrc)
- { Ref(rSrc); return (*this); }
+ virtual ~wxRegion();
//
// Modify region
// Tests
// Does the region contain the point (x,y)?
//
- wxRegionContain Contains( wxCoord lX
- ,wxCoord lY
- ) const;
-
+ inline wxRegionContain Contains( wxCoord lX, wxCoord lY ) const{
+ return Contains( wxPoint( lX, lY ) );
+ }
//
// Convert the region to a B&W bitmap with the black pixels being inside
// the region.
wxBitmap ConvertToBitmap(void) const;
// Use the non-transparent pixels of a wxBitmap for the region to combine
- // with this region. If the bitmap has a mask then it will be used,
- // otherwise the colour to be treated as transparent may be specified,
+ // with this region. First version takes transparency from bitmap's mask,
+ // second lets the user specify the colour to be treated as transparent
// along with an optional tolerance value.
- bool Union( const wxBitmap& rBmp
- ,const wxColour& rTransColour = wxNullColour
- ,int nTolerance = 0
- );
+ // NOTE: implemented in common/rgncmn.cpp
+ bool Union(const wxBitmap& bmp);
+ bool Union(const wxBitmap& bmp,
+ const wxColour& transColour, int tolerance = 0);
//
// Does the region contain the point pt?
//
// Does the region contain the rectangle rect?
//
- wxRegionContain Contains(const wxRect& rRect) const;
+ inline wxRegionContain Contains(const wxRect& rRect) const{
+ return Contains( rRect.x, rRect.y,
+ rRect.GetWidth(), rRect.GetHeight());
+ }
//
// Internal
public:
wxRegionIterator();
wxRegionIterator(const wxRegion& rRegion);
- ~wxRegionIterator();
+ virtual ~wxRegionIterator();
void Reset(void) { m_lCurrent = 0; }
void Reset(const wxRegion& rRegion);