| 1 | ///////////////////////////////////////////////////////////////////////////// |
| 2 | // Name: brush.h |
| 3 | // Purpose: wxBrush class |
| 4 | // Author: David Webster |
| 5 | // Modified by: |
| 6 | // Created: 10/13/99 |
| 7 | // RCS-ID: $Id$ |
| 8 | // Copyright: (c) David Webster |
| 9 | // Licence: wxWindows licence |
| 10 | ///////////////////////////////////////////////////////////////////////////// |
| 11 | |
| 12 | #ifndef _WX_BRUSH_H_ |
| 13 | #define _WX_BRUSH_H_ |
| 14 | |
| 15 | #include "wx/gdicmn.h" |
| 16 | #include "wx/gdiobj.h" |
| 17 | #include "wx/bitmap.h" |
| 18 | |
| 19 | class WXDLLEXPORT wxBrush; |
| 20 | |
| 21 | class WXDLLEXPORT wxBrushRefData: public wxGDIRefData |
| 22 | { |
| 23 | friend class WXDLLEXPORT wxBrush; |
| 24 | public: |
| 25 | wxBrushRefData(); |
| 26 | wxBrushRefData(const wxBrushRefData& rData); |
| 27 | ~wxBrushRefData(); |
| 28 | |
| 29 | protected: |
| 30 | int m_nStyle; |
| 31 | wxBitmap m_vStipple ; |
| 32 | wxColour m_vColour; |
| 33 | WXHBRUSH m_hBrush; // in OS/2 GPI this will be the PS the pen is associated with |
| 34 | AREABUNDLE m_vBundle; |
| 35 | }; |
| 36 | |
| 37 | #define M_BRUSHDATA ((wxBrushRefData *)m_refData) |
| 38 | |
| 39 | // Brush |
| 40 | class WXDLLEXPORT wxBrush: public wxBrushBase |
| 41 | { |
| 42 | DECLARE_DYNAMIC_CLASS(wxBrush) |
| 43 | |
| 44 | public: |
| 45 | wxBrush(); |
| 46 | wxBrush( const wxColour& rCol |
| 47 | ,int nStyle = wxSOLID |
| 48 | ); |
| 49 | wxBrush(const wxBitmap& rStipple); |
| 50 | inline wxBrush(const wxBrush& rBrush) { Ref(rBrush); } |
| 51 | ~wxBrush(); |
| 52 | |
| 53 | inline wxBrush& operator = (const wxBrush& rBrush) { if (*this == rBrush) return (*this); Ref(rBrush); return *this; } |
| 54 | inline bool operator == (const wxBrush& rBrush) const { return m_refData == rBrush.m_refData; } |
| 55 | inline bool operator != (const wxBrush& rBrush) const { return m_refData != rBrush.m_refData; } |
| 56 | |
| 57 | virtual void SetColour(const wxColour& rColour); |
| 58 | virtual void SetColour( unsigned char cRed |
| 59 | ,unsigned char cGreen |
| 60 | ,unsigned char cBrush |
| 61 | ); |
| 62 | virtual void SetPS(HPS hPS); |
| 63 | virtual void SetStyle(int nStyle) ; |
| 64 | virtual void SetStipple(const wxBitmap& rStipple); |
| 65 | |
| 66 | inline wxColour& GetColour(void) const { return (M_BRUSHDATA ? M_BRUSHDATA->m_vColour : wxNullColour); }; |
| 67 | virtual int GetStyle(void) const { return (M_BRUSHDATA ? M_BRUSHDATA->m_nStyle : 0); }; |
| 68 | inline wxBitmap* GetStipple(void) const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_vStipple : 0); }; |
| 69 | inline int GetPS(void) const { return (M_BRUSHDATA ? M_BRUSHDATA->m_hBrush : 0); }; |
| 70 | |
| 71 | inline virtual bool Ok(void) const { return (m_refData != NULL) ; } |
| 72 | |
| 73 | // |
| 74 | // Implementation |
| 75 | // |
| 76 | |
| 77 | // |
| 78 | // Useful helper: create the brush resource |
| 79 | // |
| 80 | bool RealizeResource(void); |
| 81 | WXHANDLE GetResourceHandle(void) ; |
| 82 | bool FreeResource(bool bForce = false); |
| 83 | bool IsFree(void) const; |
| 84 | void Unshare(void); |
| 85 | }; // end of CLASS wxBrush |
| 86 | |
| 87 | #endif |
| 88 | // _WX_BRUSH_H_ |