2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: brush.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxBrush
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2008-03-16 20:47:38 -04:00
|
|
|
/**
|
|
|
|
The possible brush styles.
|
|
|
|
*/
|
|
|
|
enum wxBrushStyle
|
|
|
|
{
|
2008-03-25 18:06:48 -04:00
|
|
|
wxBRUSHSTYLE_INVALID = -1,
|
|
|
|
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBRUSHSTYLE_SOLID = wxSOLID,
|
|
|
|
/**< Solid. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_TRANSPARENT = wxTRANSPARENT,
|
|
|
|
/**< Transparent (no fill). */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE = wxSTIPPLE_MASK_OPAQUE,
|
|
|
|
/**< @todo WHAT's THIS?? */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_STIPPLE_MASK = wxSTIPPLE_MASK,
|
|
|
|
/**< @todo WHAT's THIS?? */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_STIPPLE = wxSTIPPLE,
|
|
|
|
/**< Uses a bitmap as a stipple. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_BDIAGONAL_HATCH = wxBDIAGONAL_HATCH,
|
|
|
|
/**< Backward diagonal hatch. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_CROSSDIAG_HATCH = wxCROSSDIAG_HATCH,
|
|
|
|
/**< Cross-diagonal hatch. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_FDIAGONAL_HATCH = wxFDIAGONAL_HATCH,
|
|
|
|
/**< Forward diagonal hatch. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_CROSS_HATCH = wxCROSS_HATCH,
|
|
|
|
/**< Cross hatch. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_HORIZONTAL_HATCH = wxHORIZONTAL_HATCH,
|
|
|
|
/**< Horizontal hatch. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_VERTICAL_HATCH = wxVERTICAL_HATCH,
|
|
|
|
/**< Vertical hatch. */
|
|
|
|
|
|
|
|
wxBRUSHSTYLE_FIRST_HATCH = wxFIRST_HATCH,
|
|
|
|
wxBRUSHSTYLE_LAST_HATCH = wxLAST_HATCH,
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxBrush
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
A brush is a drawing tool for filling in areas. It is used for painting
|
2008-03-16 20:47:38 -04:00
|
|
|
the background of rectangles, ellipses, etc. It has a colour and a style.
|
|
|
|
|
|
|
|
On a monochrome display, wxWidgets shows all brushes as white unless the
|
|
|
|
colour is really black.
|
|
|
|
|
|
|
|
Do not initialize objects on the stack before the program commences, since
|
|
|
|
other required structures may not have been set up yet. Instead, define
|
|
|
|
global pointers to objects and create them in wxApp::OnInit or when required.
|
|
|
|
|
|
|
|
An application may wish to create brushes with different characteristics
|
|
|
|
dynamically, and there is the consequent danger that a large number of
|
|
|
|
duplicate brushes will be created. Therefore an application may wish to
|
|
|
|
get a pointer to a brush by using the global list of brushes ::wxTheBrushList,
|
|
|
|
and calling the member function wxBrushList::FindOrCreateBrush().
|
|
|
|
|
|
|
|
This class uses reference counting and copy-on-write internally so that
|
|
|
|
assignments between two instances of this class are very cheap.
|
|
|
|
You can therefore use actual objects instead of pointers without efficiency problems.
|
|
|
|
If an instance of this class is changed it will create its own data internally
|
|
|
|
so that other instances, which previously shared the data using the reference
|
|
|
|
counting, are not affected.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{gdi}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@stdobjects
|
2008-03-16 20:47:38 -04:00
|
|
|
::wxNullBrush, ::wxBLUE_BRUSH, ::wxGREEN_BRUSH, ::wxWHITE_BRUSH,
|
|
|
|
::wxBLACK_BRUSH, ::wxGREY_BRUSH, ::wxMEDIUM_GREY_BRUSH, ::wxLIGHT_GREY_BRUSH,
|
|
|
|
::wxTRANSPARENT_BRUSH, ::wxCYAN_BRUSH, ::wxRED_BRUSH
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxBrushList, wxDC, wxDC::SetBrush
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxBrush : public wxGDIObject
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Default constructor.
|
|
|
|
The brush will be uninitialised, and wxBrush:IsOk() will return @false.
|
|
|
|
*/
|
|
|
|
wxBrush();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Constructs a brush from a colour object and @a style.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param colour
|
2008-03-09 08:33:59 -04:00
|
|
|
Colour object.
|
2008-03-16 20:47:38 -04:00
|
|
|
@param style
|
|
|
|
One of the ::wxBrushStyle enumeration values.
|
|
|
|
*/
|
2008-03-25 18:06:48 -04:00
|
|
|
wxBrush(const wxColour& colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
2008-03-16 20:47:38 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
Constructs a stippled brush using a bitmap.
|
|
|
|
The brush style will be set to wxBRUSHSTYLE_STIPPLE.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
wxBrush(const wxBitmap& stippleBitmap);
|
2008-03-16 20:47:38 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
Copy constructor, uses @ref overview_refcount "reference counting".
|
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
wxBrush(const wxBrush& brush);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Destructor.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
|
|
|
See @ref overview_refcount_destruct for more info.
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@remarks Although all remaining brushes are deleted when the application
|
2008-03-16 20:47:38 -04:00
|
|
|
exits, the application should try to clean up all brushes itself.
|
|
|
|
This is because wxWidgets cannot know if a pointer to the brush
|
|
|
|
object is stored in an application data structure, and there is
|
|
|
|
a risk of double deletion.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-24 18:17:25 -04:00
|
|
|
virtual ~wxBrush();
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns a reference to the brush colour.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetColour()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-28 12:47:58 -04:00
|
|
|
virtual wxColour GetColour() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Gets a pointer to the stipple bitmap. If the brush does not have a wxBRUSHSTYLE_STIPPLE
|
|
|
|
style, this bitmap may be non-@NULL but uninitialised (i.e. wxBitmap:IsOk() returns @false).
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetStipple()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-28 12:47:58 -04:00
|
|
|
virtual wxBitmap* GetStipple() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Returns the brush style, one of the ::wxBrushStyle values.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetStyle(), SetColour(), SetStipple()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-25 18:06:48 -04:00
|
|
|
virtual wxBrushStyle GetStyle() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the style of the brush is any of hatched fills.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetStyle()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-24 18:17:25 -04:00
|
|
|
virtual bool IsHatch() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the brush is initialised. It will return @false if the default
|
|
|
|
constructor has been used (for example, the brush is a member of a class, or
|
|
|
|
@NULL has been assigned to it).
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
bool IsOk() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
Sets the brush colour using red, green and blue values.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetColour()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-28 12:47:58 -04:00
|
|
|
virtual void SetColour(wxColour& colour);
|
|
|
|
virtual void SetColour(unsigned char red, unsigned char green, unsigned char blue);
|
2008-03-08 08:52:38 -05:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the stipple bitmap.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param bitmap
|
2008-03-09 08:33:59 -04:00
|
|
|
The bitmap to use for stippling.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
|
|
|
@remarks The style will be set to wxBRUSHSTYLE_STIPPLE, unless the bitmap
|
|
|
|
has a mask associated to it, in which case the style will be set
|
|
|
|
to wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see wxBitmap
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-28 12:47:58 -04:00
|
|
|
virtual void SetStipple(const wxBitmap& bitmap);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the brush style.
|
2008-03-16 20:47:38 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param style
|
2008-03-16 20:47:38 -04:00
|
|
|
One of the ::wxBrushStyle values.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetStyle()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-28 12:47:58 -04:00
|
|
|
virtual void SetStyle(wxBrushStyle style);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Inequality operator.
|
2008-03-16 20:47:38 -04:00
|
|
|
See @ref overview_refcount_equality for more info.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-25 18:06:48 -04:00
|
|
|
bool operator !=(const wxBrush& brush) const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Equality operator.
|
2008-03-16 20:47:38 -04:00
|
|
|
See @ref overview_refcount_equality for more info.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-25 18:06:48 -04:00
|
|
|
bool operator ==(const wxBrush& brush) const;
|
2008-03-08 08:52:38 -05:00
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
An empty brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
|
|
|
wxBrush wxNullBrush;
|
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Blue brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxBLUE_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Green brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxGREEN_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
White brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxWHITE_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Black brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxBLACK_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Grey brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxGREY_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Medium grey brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxMEDIUM_GREY_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Light grey brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxLIGHT_GREY_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Transparent brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxTRANSPARENT_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Cyan brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxCYAN_BRUSH;
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
Red brush.
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
wxBrush* wxRED_BRUSH;
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
|
|
|
/**
|
2008-03-16 20:47:38 -04:00
|
|
|
@class wxBrushList
|
|
|
|
|
|
|
|
A brush list is a list containing all brushes which have been created.
|
|
|
|
|
2008-03-25 18:06:48 -04:00
|
|
|
The application should not construct its own brush list: it should use the
|
|
|
|
object pointer ::wxTheBrushList.
|
|
|
|
|
2008-03-16 20:47:38 -04:00
|
|
|
@library{wxcore}
|
|
|
|
@category{gdi}
|
|
|
|
|
|
|
|
@see wxBrush
|
2008-03-10 11:24:38 -04:00
|
|
|
*/
|
2008-03-16 20:47:38 -04:00
|
|
|
class wxBrushList : public wxList
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Finds a brush with the specified attributes and returns it, else creates a new
|
|
|
|
brush, adds it to the brush list, and returns it.
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-16 20:47:38 -04:00
|
|
|
@param colour
|
|
|
|
Colour object.
|
|
|
|
@param style
|
|
|
|
Brush style. See ::wxBrushStyle for a list of styles.
|
|
|
|
*/
|
|
|
|
wxBrush* FindOrCreateBrush(const wxColour& colour,
|
|
|
|
wxBrushStyle style = wxBRUSHSTYLE_SOLID);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
The global wxBrushList instance.
|
|
|
|
*/
|
|
|
|
wxBrushList* wxTheBrushList;
|