]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/paletteg.cpp
Fixes #10432 (wxDataObjectComposite::GetAllFormats() does not work)
[wxWidgets.git] / src / generic / paletteg.cpp
index edb03362102f0a73ea7bf4bb6c09ebb177fd1bdf..5b89e26230204dac5565cb4acc93ed37e2cb5bd9 100644 (file)
@@ -1,20 +1,23 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        palette.cpp
+// Name:        src/generic/paletteg.cpp
 // Purpose:
 // Author:      Robert Roebling
 // Created:     01/02/97
-// Id:
-// Copyright:   (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
-// Licence:    wxWindows licence
+// RCS-ID:      $Id$
+// Copyright:   (c) 1998 Robert Roebling and Julian Smart
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
 
-#ifdef __GNUG__
-#pragma implementation "paletteg.h"
+#if defined(__BORLANDC__)
+    #pragma hdrstop
 #endif
 
-#include "wx/palette.h"
+#if wxUSE_PALETTE
 
+#include "wx/palette.h"
 
 //-----------------------------------------------------------------------------
 // wxPalette
@@ -25,12 +28,12 @@ struct wxPaletteEntry
     unsigned char red, green, blue;
 };
 
-class wxPaletteRefData: public wxObjectRefData
+class wxPaletteRefData : public wxGDIRefData
 {
-  public:
-
-    wxPaletteRefData(void);
-    ~wxPaletteRefData(void);
+public:
+    wxPaletteRefData();
+    wxPaletteRefData(const wxPaletteRefData& palette);
+    virtual ~wxPaletteRefData();
 
     int m_count;
     wxPaletteEntry *m_entries;
@@ -42,6 +45,14 @@ wxPaletteRefData::wxPaletteRefData()
     m_entries = NULL;
 }
 
+wxPaletteRefData::wxPaletteRefData(const wxPaletteRefData& palette)
+{
+    m_count = palette.m_count;
+    m_entries = new wxPaletteEntry[m_count];
+    for ( int i = 0; i < m_count; i++ )
+        m_entries[i] = palette.m_entries[i];
+}
+
 wxPaletteRefData::~wxPaletteRefData()
 {
     delete[] m_entries;
@@ -63,46 +74,27 @@ wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green
     Create(n, red, green, blue);
 }
 
-wxPalette::wxPalette(const wxPalette& palette)
-{
-    Ref(palette);
-}
-
 wxPalette::~wxPalette()
 {
 }
 
-wxPalette& wxPalette::operator = (const wxPalette& palette)
-{
-    if (*this == palette) return (*this);
-    Ref(palette);
-    return *this;
-}
-
-bool wxPalette::operator == (const wxPalette& palette)
-{
-    return m_refData == palette.m_refData;
-}
-
-bool wxPalette::operator != (const wxPalette& palette)
-{
-    return m_refData != palette.m_refData;
-}
-
-bool wxPalette::Ok(void) const
+int wxPalette::GetColoursCount() const
 {
-    return (m_refData != NULL);
+    if (m_refData)
+        return M_PALETTEDATA->m_count;
+    
+    return 0;    
 }
 
 bool wxPalette::Create(int n,
                        const unsigned char *red,
-                       const unsigned char *green, 
+                       const unsigned char *green,
                        const unsigned char *blue)
 {
     UnRef();
     m_refData = new wxPaletteRefData();
-    
-    M_PALETTEDATA->m_count = n;    
+
+    M_PALETTEDATA->m_count = n;
     M_PALETTEDATA->m_entries = new wxPaletteEntry[n];
 
     wxPaletteEntry *e = M_PALETTEDATA->m_entries;
@@ -113,17 +105,17 @@ bool wxPalette::Create(int n,
         e->blue = blue[i];
     }
 
-    return TRUE;
+    return true;
 }
 
-int wxPalette::GetPixel( const unsigned char red,
-                         const unsigned char green,
-                         const unsigned char blue ) const
+int wxPalette::GetPixel( unsigned char red,
+                         unsigned char green,
+                         unsigned char blue ) const
 {
-    if (!m_refData) return FALSE;
+    if (!m_refData) return wxNOT_FOUND;
 
-       int closest = 0;
-       double d,distance = 1000.0; // max. dist is 256
+    int closest = 0;
+    double d,distance = 1000.0; // max. dist is 256
 
     wxPaletteEntry *e = M_PALETTEDATA->m_entries;
     for (int i = 0; i < M_PALETTEDATA->m_count; i++, e++)
@@ -135,22 +127,32 @@ int wxPalette::GetPixel( const unsigned char red,
             closest = i;
         }
     }
-       return closest;
+    return closest;
 }
 
-bool wxPalette::GetRGB(int pixel, 
+bool wxPalette::GetRGB(int pixel,
                        unsigned char *red,
-                       unsigned char *green, 
+                       unsigned char *green,
                        unsigned char *blue) const
 {
-    if (!m_refData) return FALSE;
-    if (pixel >= M_PALETTEDATA->m_count) return FALSE;
-    
+    if (!m_refData) return false;
+    if (pixel >= M_PALETTEDATA->m_count) return false;
+
     wxPaletteEntry& p = M_PALETTEDATA->m_entries[pixel];
     if (red) *red = p.red;
     if (green) *green = p.green;
     if (blue) *blue = p.blue;
-    return TRUE;
+    return true;
 }
 
+wxGDIRefData *wxPalette::CreateGDIRefData() const
+{
+    return new wxPaletteRefData;
+}
+
+wxGDIRefData *wxPalette::CloneGDIRefData(const wxGDIRefData *data) const
+{
+    return new wxPaletteRefData(*static_cast<const wxPaletteRefData *>(data));
+}
 
+#endif // wxUSE_PALETTE