From d8fdd58fa32f2dba817c9608c9e61b93606897f2 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Mon, 10 Jan 2005 18:37:36 +0000 Subject: [PATCH] Add constructor and Set taking NSColor. Change eqauality operator to check if the NSColor objects are the same instance or if all of the color components (m_red/green/blue) are identical. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cocoa/colour.h | 10 +++++++--- src/cocoa/colour.mm | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/include/wx/cocoa/colour.h b/include/wx/cocoa/colour.h index 8d8671f060..9200c35502 100644 --- a/include/wx/cocoa/colour.h +++ b/include/wx/cocoa/colour.h @@ -31,6 +31,9 @@ public: : m_cocoaNSColor(NULL) { Set(colRGB); } + // initialization using existing NSColor + wxColour( WX_NSColor aColor ); + // implicit conversion from the colour name wxColour( const wxString &colourName ) { InitFromName(colourName); } @@ -57,11 +60,11 @@ public: // comparison bool operator == (const wxColour& colour) const { - // VZ: sure we want to compare NSColor objects for equality here? + // TODO: Really compare the NSColor return (m_cocoaNSColor == colour.m_cocoaNSColor - && m_red == colour.m_red + || (m_red == colour.m_red && m_green == colour.m_green - && m_blue == colour.m_blue); + && m_blue == colour.m_blue)); } bool operator != (const wxColour& colour) const { return !(*this == colour); } @@ -76,6 +79,7 @@ public: (unsigned char)(colRGB >> 8), (unsigned char)(colRGB >> 16)); } + void Set( WX_NSColor aColor ); protected: // puts the object in an invalid, uninitialized state diff --git a/src/cocoa/colour.mm b/src/cocoa/colour.mm index 598fad8e00..b1aa432a3c 100644 --- a/src/cocoa/colour.mm +++ b/src/cocoa/colour.mm @@ -39,6 +39,12 @@ wxColour::wxColour (const wxColour& col) [m_cocoaNSColor retain]; } +wxColour::wxColour( WX_NSColor aColor ) +: m_cocoaNSColor(nil) +{ + Set(aColor); +} + wxColour& wxColour::operator =(const wxColour& col) { m_cocoaNSColor = col.m_cocoaNSColor; @@ -80,3 +86,18 @@ void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) m_blue = b; } +void wxColour::Set( WX_NSColor aColor ) +{ + [aColor retain]; + [m_cocoaNSColor release]; + m_cocoaNSColor = aColor; + + /* Make a temporary color in RGB format and get the values. Note that + unless the color was actually RGB to begin with it's likely that + these will be fairly bogus. Particulary if the color is a pattern. */ + NSColor *rgbColor = [m_cocoaNSColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; + m_red = [rgbColor redComponent]*255.0; + m_green = [rgbColor greenComponent]*255.0; + m_blue = [rgbColor blueComponent]*255.0; +} + -- 2.45.2