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
This commit is contained in:
David Elliott 2005-01-10 18:37:36 +00:00
parent 1837499892
commit d8fdd58fa3
2 changed files with 28 additions and 3 deletions

View File

@ -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

View File

@ -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;
}