]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/colour.cpp
more fixes to radio menu items: fixed Check() for them; allow separators inside the...
[wxWidgets.git] / src / x11 / colour.cpp
index cf8302dd51c967fe68647ed9ef6c53b0c33f8bbb..cf8431a8cc19e7dee3d20340a589b9903a6675ed 100644 (file)
@@ -15,6 +15,7 @@
 #endif
 
 #include "wx/gdicmn.h"
+#include "wx/app.h"
 
 #include "wx/x11/private.h"
 
@@ -34,6 +35,13 @@ public:
         m_colormap = (WXColormap *) NULL;
         m_hasPixel = FALSE;
     }
+    wxColourRefData(const wxColourRefData& data):
+        wxObjectRefData()
+    {
+        m_color = data.m_color;
+        m_colormap = data.m_colormap;
+        m_hasPixel = data.m_hasPixel;
+    }
     
     ~wxColourRefData()
     {
@@ -136,9 +144,15 @@ IMPLEMENT_DYNAMIC_CLASS(wxColour,wxGDIObject)
 wxColour::wxColour( unsigned char red, unsigned char green, unsigned char blue )
 {
     m_refData = new wxColourRefData();
+#if wxUSE_NANOX
+    M_COLDATA->m_color.red = ((unsigned short)red) ;
+    M_COLDATA->m_color.green = ((unsigned short)green) ;
+    M_COLDATA->m_color.blue = ((unsigned short)blue) ;
+#else    
     M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT;
     M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT;
     M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT;
+#endif
     M_COLDATA->m_color.pixel = 0;
 }
 
@@ -154,6 +168,9 @@ void wxColour::InitFromName( const wxString &colourName )
     else
     {
         m_refData = new wxColourRefData();
+        
+        M_COLDATA->m_colormap = wxTheApp->GetMainColormap( wxGlobalDisplay() );
+        
         if (!XParseColor( wxGlobalDisplay(), (Colormap) M_COLDATA->m_colormap, colourName.mb_str(), &M_COLDATA->m_color ))
         {
             // VZ: asserts are good in general but this one is triggered by
@@ -205,9 +222,15 @@ void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue )
     AllocExclusive();
     
     m_refData = new wxColourRefData();
+#if wxUSE_NANOX
+    M_COLDATA->m_color.red = ((unsigned short)red) ;
+    M_COLDATA->m_color.green = ((unsigned short)green) ;
+    M_COLDATA->m_color.blue = ((unsigned short)blue) ;
+#else
     M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT;
     M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT;
     M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT;
+#endif
     M_COLDATA->m_color.pixel = 0;
 }
 
@@ -215,26 +238,40 @@ unsigned char wxColour::Red() const
 {
     wxCHECK_MSG( Ok(), 0, wxT("invalid colour") );
 
+#if wxUSE_NANOX
+    return (unsigned char) M_COLDATA->m_color.red ;
+#else
     return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
+#endif
 }
 
 unsigned char wxColour::Green() const
 {
     wxCHECK_MSG( Ok(), 0, wxT("invalid colour") );
 
+#if wxUSE_NANOX
+    return (unsigned char) M_COLDATA->m_color.green ;
+#else
     return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
+#endif
 }
 
 unsigned char wxColour::Blue() const
 {
     wxCHECK_MSG( Ok(), 0, wxT("invalid colour") );
 
+#if wxUSE_NANOX
+    return (unsigned char) M_COLDATA->m_color.blue ;
+#else
     return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
+#endif
 }
 
 void wxColour::CalcPixel( WXColormap cmap )
 {
-    if (!Ok()) return;
+    wxCHECK_RET( Ok(), wxT("invalid colour") );
+
+    wxCHECK_RET( cmap, wxT("invalid colormap") );
 
     M_COLDATA->AllocColour( cmap );
 }