]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/palette.cpp
MSW Caret is now destroyed and recreated when resized.
[wxWidgets.git] / src / os2 / palette.cpp
index f8db96f8d0894b7970275f7565fed661a7516cea..e0461db8af2a05703198c3dbf112277eb21bf905 100644 (file)
@@ -9,15 +9,22 @@
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "palette.h"
-#endif
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
 
+#ifndef WX_PRECOMP
+#include <stdio.h>
+#include "wx/setup.h"
 #include "wx/palette.h"
+#endif
+
+#define INCL_PM
+#define INCL_GPI
+#include <os2.h>
+
+#include "assert.h"
 
-#if !USE_SHARED_LIBRARIES
 IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
-#endif
 
 /*
  * Palette
@@ -26,12 +33,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject)
 
 wxPaletteRefData::wxPaletteRefData()
 {
-    // TODO
+    m_hPalette = 0;
 }
 
 wxPaletteRefData::~wxPaletteRefData()
 {
-    // TODO
+    if ( m_hPalette )
+        return;
+        // TODO: ::DeleteObject((HPALETTE) m_hPalette);
 }
 
 wxPalette::wxPalette()
@@ -47,6 +56,15 @@ wxPalette::~wxPalette()
 {
 }
 
+bool wxPalette::FreeResource(bool force)
+{
+    if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette)
+    {
+// TODO:   DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette);
+    }
+    return TRUE;
+}
+
 bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue)
 {
   UnRef();
@@ -54,7 +72,26 @@ bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *gre
   m_refData = new wxPaletteRefData;
 
   // TODO
-
+/*
+  NPLOGPALETTE npPal = (NPLOGPALETTE)LocalAlloc(LMEM_FIXED, sizeof(LOGPALETTE) +
+                        (WORD)n * sizeof(PALETTEENTRY));
+  if (!npPal)
+    return(FALSE);
+
+  npPal->palVersion = 0x300;
+  npPal->palNumEntries = n;
+
+  int i;
+  for (i = 0; i < n; i ++)
+  {
+    npPal->palPalEntry[i].peRed = red[i];
+    npPal->palPalEntry[i].peGreen = green[i];
+    npPal->palPalEntry[i].peBlue = blue[i];
+    npPal->palPalEntry[i].peFlags = 0;
+  }
+  M_PALETTEDATA->m_hPalette = (WXHPALETTE) CreatePalette((LPLOGPALETTE)npPal);
+  LocalFree((HANDLE)npPal);
+*/
   return FALSE;
 }
 
@@ -74,9 +111,27 @@ bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsi
 
     if (index < 0 || index > 255)
         return FALSE;
+// TODO
+/*
+  PALETTEENTRY entry;
+  if (::GetPaletteEntries((HPALETTE) M_PALETTEDATA->m_hPalette, index, 1, &entry))
+  {
+         *red = entry.peRed;
+         *green = entry.peGreen;
+         *blue = entry.peBlue;
+         return TRUE;
+  } else
+         return FALSE;
+*/
+  return FALSE;
+}
 
-    // TODO
-    return FALSE;
+void wxPalette::SetHPALETTE(WXHPALETTE pal)
+{
+       if ( !m_refData )
+               m_refData = new wxPaletteRefData;
+
+    M_PALETTEDATA->m_hPalette = pal;
 }