]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/colour.cpp
More Motif additions: mdi and sashtest samples now just about work!
[wxWidgets.git] / src / motif / colour.cpp
index 4aa74d14c07443ced73acbde4dad3c71cc4571fd..a6a1287ff6471440fc67cef6b940dee1bec34cd9 100644 (file)
@@ -73,6 +73,7 @@ wxColour::wxColour (const wxString& col)
         m_red = the_colour->Red ();
         m_green = the_colour->Green ();
         m_blue = the_colour->Blue ();
+        m_pixel = the_colour->m_pixel;
         m_isInit = TRUE;
     }
     else
@@ -82,9 +83,6 @@ wxColour::wxColour (const wxString& col)
         m_blue = 0;
         m_isInit = FALSE;
     }
-/* TODO
-    m_pixel = PALETTERGB (m_red, m_green, m_blue);
-*/
 }
 
 wxColour::~wxColour ()
@@ -99,6 +97,7 @@ wxColour& wxColour::operator = (const wxString& col)
         m_red = the_colour->Red ();
         m_green = the_colour->Green ();
         m_blue = the_colour->Blue ();
+        m_pixel = the_colour->m_pixel;
         m_isInit = TRUE;
     }
     else
@@ -108,9 +107,7 @@ wxColour& wxColour::operator = (const wxString& col)
         m_blue = 0;
         m_isInit = FALSE;
     }
-/* TODO
-    m_pixel = PALETTERGB (m_red, m_green, m_blue);
-*/
+
     return (*this);
 }
 
@@ -120,23 +117,21 @@ void wxColour::Set (unsigned char r, unsigned char g, unsigned char b)
     m_green = g;
     m_blue = b;
     m_isInit = TRUE;
-/* TODO
-    m_pixel = PALETTERGB (m_red, m_green, m_blue);
-*/
+    m_pixel = -1;
 }
 
 // Allocate a colour, or nearest colour, using the given display.
 // If realloc is TRUE, ignore the existing pixel, otherwise just return
 // the existing one.
-// Returns FALSE if an exact match was not found, TRUE otherwise.
+// Returns the old or allocated pixel.
 
 // TODO: can this handle mono displays? If not, we should have an extra
 // flag to specify whether this should be black or white by default.
 
-bool wxColour::AllocColour(WXDisplay* display, bool realloc)
+int wxColour::AllocColour(WXDisplay* display, bool realloc)
 {
     if ((m_pixel != -1) && !realloc)
-       return TRUE;
+       return m_pixel;
 
     XColor color;
     color.red = (unsigned short) Red ();
@@ -153,12 +148,12 @@ bool wxColour::AllocColour(WXDisplay* display, bool realloc)
     if (!XAllocColor ((Display*) display, (Colormap) cmap, &color))
     {
        m_pixel = wxGetBestMatchingPixel((Display*) display, &color,(Colormap) cmap);
-       return FALSE;
+       return m_pixel;
     }
     else
     {
        m_pixel = (int) color.pixel;
-       return TRUE;
+       return m_pixel;
     }
 }