]> git.saurik.com Git - wxWidgets.git/commitdiff
Add constructor and Set taking NSColor.
authorDavid Elliott <dfe@tgwbd.org>
Mon, 10 Jan 2005 18:37:36 +0000 (18:37 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Mon, 10 Jan 2005 18:37:36 +0000 (18:37 +0000)
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
src/cocoa/colour.mm

index 8d8671f060744a55dff8b6dadf7ee37e510d3353..9200c35502de1e401ead3c53994613f49b517e51 100644 (file)
@@ -31,6 +31,9 @@ public:
     :   m_cocoaNSColor(NULL)
     {   Set(colRGB); }
 
     :   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); }
     // implicit conversion from the colour name
     wxColour( const wxString &colourName )
     {   InitFromName(colourName); }
@@ -57,11 +60,11 @@ public:
     // comparison
     bool operator == (const wxColour& colour) const
     {
     // 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
         return (m_cocoaNSColor == colour.m_cocoaNSColor
-            && m_red == colour.m_red
+            || (m_red == colour.m_red
             && m_green == colour.m_green
             && m_green == colour.m_green
-            && m_blue == colour.m_blue);
+            && m_blue == colour.m_blue));
     }
     bool operator != (const wxColour& colour) const
     {   return !(*this == colour); }
     }
     bool operator != (const wxColour& colour) const
     {   return !(*this == colour); }
@@ -76,6 +79,7 @@ public:
             (unsigned char)(colRGB >> 8),
             (unsigned char)(colRGB >> 16));
     }
             (unsigned char)(colRGB >> 8),
             (unsigned char)(colRGB >> 16));
     }
+    void Set( WX_NSColor aColor );
 
 protected:
     // puts the object in an invalid, uninitialized state
 
 protected:
     // puts the object in an invalid, uninitialized state
index 598fad8e00baa1e6614a7bebfd722d2eebd3cc1d..b1aa432a3ceb56ec387be30391d84900bf1fd068 100644 (file)
@@ -39,6 +39,12 @@ wxColour::wxColour (const wxColour& col)
     [m_cocoaNSColor retain];
 }
 
     [m_cocoaNSColor retain];
 }
 
+wxColour::wxColour( WX_NSColor aColor )
+:   m_cocoaNSColor(nil)
+{
+    Set(aColor);
+}
+
 wxColour& wxColour::operator =(const wxColour& col)
 {
     m_cocoaNSColor = col.m_cocoaNSColor;
 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;
 }
 
     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;
+}
+