It can be necessary to compare two item attributes for equality, e.g. to check if the attributes have changed, so provide a straightforward implementation of equality and inequality operator for it.
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        wx/itemattr.h
 | |
| // Purpose:     wxItemAttr class declaration
 | |
| // Author:      Vadim Zeitlin
 | |
| // Created:     2016-04-16 (extracted from wx/listctrl.h)
 | |
| // Copyright:   (c) 2016 Vadim Zeitlin <vadim@wxwidgets.org>
 | |
| // Licence:     wxWindows licence
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef _WX_ITEMATTR_H_
 | |
| #define _WX_ITEMATTR_H_
 | |
| 
 | |
| // ----------------------------------------------------------------------------
 | |
| // wxItemAttr: a structure containing the visual attributes of an item
 | |
| // ----------------------------------------------------------------------------
 | |
| 
 | |
| class wxItemAttr
 | |
| {
 | |
| public:
 | |
|     // ctors
 | |
|     wxItemAttr() { }
 | |
|     wxItemAttr(const wxColour& colText,
 | |
|                const wxColour& colBack,
 | |
|                const wxFont& font)
 | |
|         : m_colText(colText), m_colBack(colBack), m_font(font)
 | |
|     {
 | |
|     }
 | |
| 
 | |
|     // default copy ctor, assignment operator and dtor are ok
 | |
| 
 | |
|     bool operator==(const wxItemAttr& other) const
 | |
|     {
 | |
|         return m_colText == other.m_colText &&
 | |
|                m_colBack == other.m_colBack &&
 | |
|                m_font == other.m_font;
 | |
|     }
 | |
| 
 | |
|     bool operator!=(const wxItemAttr& other) const
 | |
|     {
 | |
|         return !(*this == other);
 | |
|     }
 | |
| 
 | |
|     // setters
 | |
|     void SetTextColour(const wxColour& colText) { m_colText = colText; }
 | |
|     void SetBackgroundColour(const wxColour& colBack) { m_colBack = colBack; }
 | |
|     void SetFont(const wxFont& font) { m_font = font; }
 | |
| 
 | |
|     // accessors
 | |
|     bool HasTextColour() const { return m_colText.IsOk(); }
 | |
|     bool HasBackgroundColour() const { return m_colBack.IsOk(); }
 | |
|     bool HasFont() const { return m_font.IsOk(); }
 | |
| 
 | |
|     bool HasColours() const { return HasTextColour() || HasBackgroundColour(); }
 | |
|     bool IsDefault() const { return !HasColours() && !HasFont(); }
 | |
| 
 | |
|     const wxColour& GetTextColour() const { return m_colText; }
 | |
|     const wxColour& GetBackgroundColour() const { return m_colBack; }
 | |
|     const wxFont& GetFont() const { return m_font; }
 | |
| 
 | |
| 
 | |
|     // this is almost like assignment operator except it doesn't overwrite the
 | |
|     // fields unset in the source attribute
 | |
|     void AssignFrom(const wxItemAttr& source)
 | |
|     {
 | |
|         if ( source.HasTextColour() )
 | |
|             SetTextColour(source.GetTextColour());
 | |
|         if ( source.HasBackgroundColour() )
 | |
|             SetBackgroundColour(source.GetBackgroundColour());
 | |
|         if ( source.HasFont() )
 | |
|             SetFont(source.GetFont());
 | |
|     }
 | |
| 
 | |
| private:
 | |
|     wxColour m_colText,
 | |
|              m_colBack;
 | |
|     wxFont   m_font;
 | |
| };
 | |
| 
 | |
| #endif // _WX_ITEMATTR_H_
 |