X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e54c96f187f46c06bd36be8cd52b35c19884aa2b..3877c17eeb72b6ff6eb7670d06b47cef9037dcbc:/interface/brush.h diff --git a/interface/brush.h b/interface/brush.h index d644b1e19b..f98b98525f 100644 --- a/interface/brush.h +++ b/interface/brush.h @@ -6,237 +6,160 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +/** + 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, + /**< @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, +}; + + + /** @class wxBrush @wxheader{brush.h} 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. + 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 - ::Objects:, ::wxNullBrush, ::Pointers:, ::wxBLUE_BRUSH, ::wxGREEN_BRUSH, - ::wxWHITE_BRUSH, ::wxBLACK_BRUSH, ::wxGREY_BRUSH, ::wxMEDIUM_GREY_BRUSH, ::wxLIGHT_GREY_BRUSH, ::wxTRANSPARENT_BRUSH, ::wxCYAN_BRUSH, ::wxRED_BRUSH, + ::wxNullBrush, ::wxBLUE_BRUSH, ::wxGREEN_BRUSH, ::wxWHITE_BRUSH, + ::wxBLACK_BRUSH, ::wxGREY_BRUSH, ::wxMEDIUM_GREY_BRUSH, ::wxLIGHT_GREY_BRUSH, + ::wxTRANSPARENT_BRUSH, ::wxCYAN_BRUSH, ::wxRED_BRUSH @see wxBrushList, wxDC, wxDC::SetBrush */ class wxBrush : public wxGDIObject { public: - //@{ /** - Copy constructor, uses @ref overview_trefcount "reference counting". - + 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 colourName - Colour name. The name will be looked up in the colour database. @param style - One of: - - - - - - - wxTRANSPARENT - - - - - Transparent (no fill). - - - - - - wxSOLID - - - - - Solid. - - - - - - wxSTIPPLE - - - - - Uses a bitmap as a stipple. - - - - - - wxBDIAGONAL_HATCH - - - - - Backward diagonal hatch. - - - - - - wxCROSSDIAG_HATCH - - - - - Cross-diagonal hatch. - - - - - - wxFDIAGONAL_HATCH - - - - - Forward diagonal hatch. - - - - - - wxCROSS_HATCH - - - - - Cross hatch. - - - - - - wxHORIZONTAL_HATCH - - - - - Horizontal hatch. - - - - - - wxVERTICAL_HATCH - - - - - Vertical hatch. - @param brush - Pointer or reference to a brush to copy. - @param stippleBitmap - A bitmap to use for stippling. - - @remarks If a stipple brush is created, the brush style will be set to - wxSTIPPLE. - - @see wxBrushList, wxColour, wxColourDatabase + 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 wxBRUSHSTYLE_STIPPLE. */ - wxBrush(); - wxBrush(const wxColour& colour, int style = wxSOLID); - wxBrush(const wxString& colourName, int style); wxBrush(const wxBitmap& stippleBitmap); + + /** + Copy constructor, uses @ref overview_refcount "reference counting". + */ wxBrush(const wxBrush& brush); - //@} /** Destructor. - See @ref overview_refcountdestruct "reference-counted object destruction" for - more info. - + + 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. + 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. */ - ~wxBrush(); + virtual ~wxBrush(); /** Returns a reference to the brush colour. - + @see SetColour() */ - wxColour GetColour() const; + virtual wxColour GetColour() const; /** - Gets a pointer to the stipple bitmap. If the brush does not have a wxSTIPPLE - style, - this bitmap may be non-@NULL but uninitialised (@ref wxBitmap::isok - wxBitmap:IsOk returns @false). - + 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). + @see SetStipple() */ - wxBitmap* GetStipple() const; + virtual wxBitmap* GetStipple() const; /** - Returns the brush style, one of: - - @b wxTRANSPARENT - - Transparent (no fill). - - @b wxSOLID - - Solid. - - @b wxBDIAGONAL_HATCH - - Backward diagonal hatch. - - @b wxCROSSDIAG_HATCH - - Cross-diagonal hatch. - - @b wxFDIAGONAL_HATCH - - Forward diagonal hatch. - - @b wxCROSS_HATCH - - Cross hatch. - - @b wxHORIZONTAL_HATCH - - Horizontal hatch. - - @b wxVERTICAL_HATCH - - Vertical hatch. - - @b wxSTIPPLE - - Stippled using a bitmap. - - @b wxSTIPPLE_MASK_OPAQUE - - Stippled using a bitmap's mask. - + Returns the brush style, one of the ::wxBrushStyle values. + @see SetStyle(), SetColour(), SetStipple() */ - int GetStyle() const; + virtual wxBrushStyle GetStyle() const; /** Returns @true if the style of the brush is any of hatched fills. - + @see GetStyle() */ - bool IsHatch() const; + virtual bool IsHatch() const; /** Returns @true if the brush is initialised. It will return @false if the default @@ -248,236 +171,138 @@ public: //@{ /** Sets the brush colour using red, green and blue values. - + @see GetColour() */ - void SetColour(wxColour& colour); - void SetColour(const wxString& colourName); - void SetColour(unsigned char red, unsigned char green, - unsigned char blue); + virtual void SetColour(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 wxSTIPPLE, unless the bitmap has a mask - associated to it, in which case the style will be set - to wxSTIPPLE_MASK_OPAQUE. - + + @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. + @see wxBitmap */ - void SetStipple(const wxBitmap& bitmap); + virtual void SetStipple(const wxBitmap& bitmap); /** Sets the brush style. - + @param style - One of: - - - - - - - wxTRANSPARENT - - - - - Transparent (no fill). - - - - - - wxSOLID - - - - - Solid. - - - - - - wxBDIAGONAL_HATCH - - - - - Backward diagonal hatch. - - - - - - wxCROSSDIAG_HATCH - - - - - Cross-diagonal hatch. - - - - - - wxFDIAGONAL_HATCH - - - - - Forward diagonal hatch. - - - - - - wxCROSS_HATCH - - - - - Cross hatch. - - - - - - wxHORIZONTAL_HATCH - - - - - Horizontal hatch. - - - - - - wxVERTICAL_HATCH - - - - - Vertical hatch. - - - - - - wxSTIPPLE - - - - - Stippled using a bitmap. - - - - - - wxSTIPPLE_MASK_OPAQUE - - - - - Stippled using a bitmap's mask. - + One of the ::wxBrushStyle values. + @see GetStyle() */ - void SetStyle(int style); + virtual void SetStyle(wxBrushStyle style); /** Inequality operator. - See @ref overview_refcountequality "reference-counted object comparison" for - more info. - */ - bool operator !=(const wxBrush& brush); - - /** - Assignment operator, using @ref overview_trefcount "reference counting". + See @ref overview_refcount_equality for more info. */ - wxBrush operator =(const wxBrush& brush); + bool operator !=(const wxBrush& brush) const; /** Equality operator. - See @ref overview_refcountequality "reference-counted object comparison" for - more info. + See @ref overview_refcount_equality for more info. */ - bool operator ==(const wxBrush& brush); + bool operator ==(const wxBrush& brush) const; }; - -/** - FIXME -*/ -wxBrush Objects: -; - /** - FIXME + An empty brush. */ wxBrush wxNullBrush; /** - FIXME + Blue brush. */ -wxBrush Pointers: -; +wxBrush* wxBLUE_BRUSH; /** - FIXME + Green brush. */ -wxBrush wxBLUE_BRUSH; +wxBrush* wxGREEN_BRUSH; /** - FIXME + White brush. */ -wxBrush wxGREEN_BRUSH; +wxBrush* wxWHITE_BRUSH; /** - FIXME + Black brush. */ -wxBrush wxWHITE_BRUSH; +wxBrush* wxBLACK_BRUSH; /** - FIXME + Grey brush. */ -wxBrush wxBLACK_BRUSH; +wxBrush* wxGREY_BRUSH; /** - FIXME + Medium grey brush. */ -wxBrush wxGREY_BRUSH; +wxBrush* wxMEDIUM_GREY_BRUSH; /** - FIXME + Light grey brush. */ -wxBrush wxMEDIUM_GREY_BRUSH; +wxBrush* wxLIGHT_GREY_BRUSH; /** - FIXME + Transparent brush. */ -wxBrush wxLIGHT_GREY_BRUSH; +wxBrush* wxTRANSPARENT_BRUSH; /** - FIXME + Cyan brush. */ -wxBrush wxTRANSPARENT_BRUSH; +wxBrush* wxCYAN_BRUSH; /** - FIXME + Red brush. */ -wxBrush wxCYAN_BRUSH; +wxBrush* wxRED_BRUSH; + + /** - FIXME + @class wxBrushList + @wxheader{gdicmn.h} + + 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 */ -wxBrush wxRED_BRUSH; +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. + @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;