| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: brush.h
- // Purpose: interface of wxBrush
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- The possible brush styles.
- */
- enum wxBrushStyle
- {
- wxBRUSHSTYLE_INVALID = -1,
- wxBRUSHSTYLE_SOLID = wxSOLID,
- /**< Solid. */
- wxBRUSHSTYLE_TRANSPARENT = wxTRANSPARENT,
- /**< Transparent (no fill). */
- wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE = wxSTIPPLE_MASK_OPAQUE,
- /**< Uses a bitmap as a stipple; the mask is used for blitting monochrome
- using text foreground and background colors. */
- wxBRUSHSTYLE_STIPPLE_MASK = wxSTIPPLE_MASK,
- /**< Uses a bitmap as a stipple; mask is used for masking areas in the
- stipple bitmap. */
- wxBRUSHSTYLE_STIPPLE = wxSTIPPLE,
- /**< Uses a bitmap as a stipple. */
- wxBRUSHSTYLE_BDIAGONAL_HATCH,
- /**< Backward diagonal hatch. */
- wxBRUSHSTYLE_CROSSDIAG_HATCH,
- /**< Cross-diagonal hatch. */
- wxBRUSHSTYLE_FDIAGONAL_HATCH,
- /**< Forward diagonal hatch. */
- wxBRUSHSTYLE_CROSS_HATCH,
- /**< Cross hatch. */
- wxBRUSHSTYLE_HORIZONTAL_HATCH,
- /**< Horizontal hatch. */
- wxBRUSHSTYLE_VERTICAL_HATCH,
- /**< Vertical hatch. */
- wxBRUSHSTYLE_FIRST_HATCH,
- /**< First of the hatch styles (inclusive). */
- wxBRUSHSTYLE_LAST_HATCH
- /**< Last of the hatch styles (inclusive). */
- };
- /**
- @class wxBrush
- A brush is a drawing tool for filling in areas. It is used for painting
- 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.
- @library{wxcore}
- @category{gdi}
- @stdobjects
- @li ::wxNullBrush
- @li ::wxBLACK_BRUSH
- @li ::wxBLUE_BRUSH
- @li ::wxCYAN_BRUSH
- @li ::wxGREEN_BRUSH
- @li ::wxYELLOW_BRUSH
- @li ::wxGREY_BRUSH
- @li ::wxLIGHT_GREY_BRUSH
- @li ::wxMEDIUM_GREY_BRUSH
- @li ::wxRED_BRUSH
- @li ::wxTRANSPARENT_BRUSH
- @li ::wxWHITE_BRUSH
- @see wxBrushList, wxDC, wxDC::SetBrush
- */
- class wxBrush : public wxGDIObject
- {
- public:
- /**
- Default constructor.
- The brush will be uninitialised, and wxBrush:IsOk() will return @false.
- */
- wxBrush();
- /**
- Constructs a brush from a colour object and @a style.
- @param colour
- Colour object.
- @param style
- One of the ::wxBrushStyle enumeration values.
- */
- wxBrush(const wxColour& colour, wxBrushStyle style = wxBRUSHSTYLE_SOLID);
- /**
- Constructs a stippled brush using a bitmap.
- The brush style will be set to @c wxBRUSHSTYLE_STIPPLE.
- */
- wxBrush(const wxBitmap& stippleBitmap);
- /**
- Copy constructor, uses @ref overview_refcount "reference counting".
- */
- wxBrush(const wxBrush& brush);
- /**
- Destructor.
- See @ref overview_refcount_destruct for more info.
- @remarks Although all remaining brushes are deleted when the application
- 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.
- */
- virtual ~wxBrush();
- /**
- Returns a reference to the brush colour.
- @see SetColour()
- */
- virtual wxColour GetColour() const;
- /**
- Gets a pointer to the stipple bitmap. If the brush does not have a @c wxBRUSHSTYLE_STIPPLE
- style, this bitmap may be non-@NULL but uninitialised (i.e. wxBitmap:IsOk() returns @false).
- @see SetStipple()
- */
- virtual wxBitmap* GetStipple() const;
- /**
- Returns the brush style, one of the ::wxBrushStyle values.
- @see SetStyle(), SetColour(), SetStipple()
- */
- virtual wxBrushStyle GetStyle() const;
- /**
- Returns @true if the style of the brush is any of hatched fills.
- @see GetStyle()
- */
- virtual bool IsHatch() const;
- /**
- Returns @true if the brush is initialised.
- Notice that an uninitialized brush object can't be queried for any
- brush properties and all calls to the accessor methods on it will
- result in an assert failure.
- */
- virtual bool IsOk() const;
- /**
- Returns @true if the brush is a valid non-transparent brush.
- This method returns @true if the brush object is initialized and has a
- non-transparent style. Notice that this should be used instead of
- simply testing whether GetStyle() returns a style different from
- wxBRUSHSTYLE_TRANSPARENT if the brush may be invalid as GetStyle()
- would assert in this case.
- @see IsTransparent()
- @since 2.9.2.
- */
- bool IsNonTransparent() const;
- /**
- Returns @true if the brush is transparent.
- A transparent brush is simply a brush with wxBRUSHSTYLE_TRANSPARENT
- style.
- Notice that this function works even for non-initialized brushes (for
- which it returns @false) unlike tests of the form <code>GetStyle() ==
- wxBRUSHSTYLE_TRANSPARENT</code> which would assert if the brush is
- invalid.
- @see IsNonTransparent()
- @since 2.9.2.
- */
- bool IsTransparent() const;
- //@{
- /**
- Sets the brush colour using red, green and blue values.
- @see GetColour()
- */
- virtual void SetColour(const wxColour& colour);
- virtual void SetColour(unsigned char red, unsigned char green, unsigned char blue);
- //@}
- /**
- Sets the stipple bitmap.
- @param bitmap
- The bitmap to use for stippling.
- @remarks The style will be set to @c wxBRUSHSTYLE_STIPPLE, unless the bitmap
- has a mask associated to it, in which case the style will be set
- to @c wxBRUSHSTYLE_STIPPLE_MASK_OPAQUE.
- @see wxBitmap
- */
- virtual void SetStipple(const wxBitmap& bitmap);
- /**
- Sets the brush style.
- @param style
- One of the ::wxBrushStyle values.
- @see GetStyle()
- */
- virtual void SetStyle(wxBrushStyle style);
- /**
- Inequality operator.
- See @ref overview_refcount_equality for more info.
- */
- bool operator !=(const wxBrush& brush) const;
- /**
- Equality operator.
- See @ref overview_refcount_equality for more info.
- */
- bool operator ==(const wxBrush& brush) const;
- };
- /**
- An empty brush.
- wxBrush::IsOk() always returns @false for this object.
- */
- wxBrush wxNullBrush;
- /**
- Blue brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxBLUE_BRUSH;
- /**
- Green brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxGREEN_BRUSH;
- /**
- Yellow brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxYELLOW_BRUSH;
- /**
- White brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxWHITE_BRUSH;
- /**
- Black brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxBLACK_BRUSH;
- /**
- Grey brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxGREY_BRUSH;
- /**
- Medium grey brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxMEDIUM_GREY_BRUSH;
- /**
- Light grey brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxLIGHT_GREY_BRUSH;
- /**
- Transparent brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxTRANSPARENT_BRUSH;
- /**
- Cyan brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxCYAN_BRUSH;
- /**
- Red brush.
- Except for the color it has all standard attributes
- (@c wxBRUSHSTYLE_SOLID, no stipple bitmap, etc...).
- */
- wxBrush* wxRED_BRUSH;
- /**
- @class wxBrushList
- A brush list is a list containing all brushes which have been created.
- The application should not construct its own brush list: it should use the
- object pointer ::wxTheBrushList.
- @library{wxcore}
- @category{gdi}
- @see wxBrush
- */
- class wxBrushList
- {
- 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.
- @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;
|