]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/bitmap.cpp
Applied patch [ 694561 ] FL Release build DLL include path
[wxWidgets.git] / src / motif / bitmap.cpp
index bace224758e891c5af9ee75f6400cabf07cf6dac..ee5ee10630b5b81aeb69bedb6c55cc7bf33f1847 100644 (file)
 #define XtParent XTPARENT
 #endif
 
-#include "wx/setup.h"
+#include "wx/defs.h"
 #include "wx/utils.h"
 #include "wx/palette.h"
 #include "wx/bitmap.h"
 #include "wx/icon.h"
 #include "wx/log.h"
-#include "wx/control.h"
 #include "wx/dcmemory.h"
 #include "wx/image.h"
 #include "wx/app.h"
 
+#if 0
 #ifdef __VMS__
 #pragma message disable nosimpint
 #endif
 #ifdef __VMS__
 #pragma message enable nosimpint
 #endif
+#endif
 
-#include "wx/motif/private.h"
+#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
 
 #if wxHAVE_LIB_XPM
     #include <X11/xpm.h>
@@ -53,27 +55,34 @@ wxBitmapRefData::wxBitmapRefData()
     m_width = 0;
     m_height = 0;
     m_depth = 0;
-    m_quality = 0;
-    m_numColors = 0;
+    // XXX m_quality = 0;
+    // m_numColors = 0;
     m_bitmapMask = NULL;
 
     m_pixmap = (WXPixmap) 0;
     m_display = (WXDisplay*) 0;
 
-    m_freePixmap = TRUE; //TODO: necessary?
+    // m_freePixmap = TRUE; //TODO: necessary?
+#if 0
     m_freeColors = (unsigned long*) 0;
     m_freeColorsCount = 0;
+#endif
 
     // These 5 variables are for wxControl
+#if 0
     m_insensPixmap = (WXPixmap) 0;
     m_labelPixmap = (WXPixmap) 0;
     m_armPixmap = (WXPixmap) 0;
+#endif
+#if 0
     m_image = (WXImage*) 0;
     m_insensImage = (WXImage*) 0;
+#endif
 }
 
 wxBitmapRefData::~wxBitmapRefData()
 {
+#if 0
     if (m_labelPixmap)
         XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) m_display), (Pixmap) m_labelPixmap);
 
@@ -82,22 +91,28 @@ wxBitmapRefData::~wxBitmapRefData()
 
     if (m_insensPixmap)
         XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) m_display), (Pixmap) m_insensPixmap);
+#endif
 
+#if 0
     if (m_image)
     {
         XmUninstallImage ((XImage*) m_image);
         XtFree ((char *) (XImage*) m_image);
     }
+#endif
 
+#if 0
     if (m_insensImage)
     {
         XmUninstallImage ((XImage*) m_insensImage);
         delete[] ((XImage*) m_insensImage)->data;
         XtFree ((char *) (XImage*) m_insensImage);
     }
-    if (m_pixmap && m_freePixmap)
+#endif
+    if (m_pixmap /* && m_freePixmap */)
         XFreePixmap ((Display*) m_display, (Pixmap) m_pixmap);
 
+#if 0
     if (m_freeColors)
     {
         int screen = DefaultScreen((Display*) m_display);
@@ -107,14 +122,13 @@ wxBitmapRefData::~wxBitmapRefData()
             XFreeColors((Display*) m_display, cmp, &m_freeColors[llp], 1, 0L);
         delete m_freeColors;
     };
+#endif
 
     if (m_bitmapMask)
         delete m_bitmapMask;
     m_bitmapMask = NULL;
 }
 
-wxList wxBitmap::sm_handlers;
-
 #define M_BMPDATA ((wxBitmapRefData *)m_refData)
 
 wxBitmap::wxBitmap()
@@ -138,16 +152,18 @@ wxBitmap::wxBitmap(int w, int h, int d)
     (void)Create(w, h, d);
 }
 
-wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth)
+wxBitmap::wxBitmap(void *data, wxBitmapType type,
+                   int width, int height, int depth)
 {
     (void) Create(data, type, width, height, depth);
 }
 
-wxBitmap::wxBitmap(const wxString& filename, int type)
+wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type)
 {
-    LoadFile(filename, (int)type);
+    LoadFile(filename, type);
 }
 
+#if 0
 // Create from XPM data
 static wxControl* sg_Control = NULL;
 wxBitmap::wxBitmap(char **data, wxControl* control)
@@ -159,6 +175,7 @@ wxBitmap::wxBitmap(char **data, wxControl* control)
 
     sg_Control = (wxControl*) NULL;
 }
+#endif
 
 bool wxBitmap::CreateFromXpm(const char **bits)
 {
@@ -185,7 +202,7 @@ bool wxBitmap::Create(int w, int h, int d)
     M_BITMAPDATA->m_width = w;
     M_BITMAPDATA->m_height = h;
     M_BITMAPDATA->m_depth = d;
-    M_BITMAPDATA->m_freePixmap = TRUE;
+    // M_BITMAPDATA->m_freePixmap = TRUE;
 
     Display *dpy = (Display*) wxGetDisplay();
 
@@ -198,7 +215,7 @@ bool wxBitmap::Create(int w, int h, int d)
     return M_BITMAPDATA->m_ok;
 }
 
-bool wxBitmap::LoadFile(const wxString& filename, long type)
+bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
 {
     UnRef();
 
@@ -220,7 +237,8 @@ bool wxBitmap::LoadFile(const wxString& filename, long type)
     return handler->LoadFile(this, filename, type, -1, -1);
 }
 
-bool wxBitmap::Create(void *data, long type, int width, int height, int depth)
+bool wxBitmap::Create(void *data, wxBitmapType type,
+                      int width, int height, int depth)
 {
     UnRef();
 
@@ -229,7 +247,8 @@ bool wxBitmap::Create(void *data, long type, int width, int height, int depth)
     wxBitmapHandler *handler = FindHandler(type);
 
     if ( handler == NULL ) {
-        wxLogWarning("no data bitmap handler for type %ld defined.", type);
+        wxLogWarning("no data bitmap handler for type %ld defined.",
+                     (long)type);
 
         return FALSE;
     }
@@ -237,7 +256,8 @@ bool wxBitmap::Create(void *data, long type, int width, int height, int depth)
     return handler->Create(this, data, type, width, height, depth);
 }
 
-bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette)
+bool wxBitmap::SaveFile(const wxString& filename, wxBitmapType type,
+                        const wxPalette *palette) const
 {
     wxBitmapHandler *handler = FindHandler(type);
 
@@ -274,6 +294,9 @@ void wxBitmap::SetDepth(int d)
     M_BITMAPDATA->m_depth = d;
 }
 
+#if 0
+
+// XXX
 void wxBitmap::SetQuality(int q)
 {
     if (!M_BITMAPDATA)
@@ -282,6 +305,8 @@ void wxBitmap::SetQuality(int q)
     M_BITMAPDATA->m_quality = q;
 }
 
+#endif
+
 void wxBitmap::SetOk(bool isOk)
 {
     if (!M_BITMAPDATA)
@@ -320,68 +345,6 @@ wxBitmap wxBitmap::GetSubBitmap( const wxRect& rect) const
    return ret;
 }
 
-void wxBitmap::AddHandler(wxBitmapHandler *handler)
-{
-    sm_handlers.Append(handler);
-}
-
-void wxBitmap::InsertHandler(wxBitmapHandler *handler)
-{
-    sm_handlers.Insert(handler);
-}
-
-bool wxBitmap::RemoveHandler(const wxString& name)
-{
-    wxBitmapHandler *handler = FindHandler(name);
-    if ( handler )
-    {
-        sm_handlers.DeleteObject(handler);
-        return TRUE;
-    }
-    else
-        return FALSE;
-}
-
-wxBitmapHandler *wxBitmap::FindHandler(const wxString& name)
-{
-    wxNode *node = sm_handlers.First();
-    while ( node )
-    {
-        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
-        if ( handler->GetName() == name )
-            return handler;
-        node = node->Next();
-    }
-    return NULL;
-}
-
-wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType)
-{
-    wxNode *node = sm_handlers.First();
-    while ( node )
-    {
-        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
-        if ( handler->GetExtension() == extension &&
-            (bitmapType == -1 || handler->GetType() == bitmapType) )
-            return handler;
-        node = node->Next();
-    }
-    return NULL;
-}
-
-wxBitmapHandler *wxBitmap::FindHandler(long bitmapType)
-{
-    wxNode *node = sm_handlers.First();
-    while ( node )
-    {
-        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
-        if (handler->GetType() == bitmapType)
-            return handler;
-        node = node->Next();
-    }
-    return NULL;
-}
-
 /*
 * wxMask
 */
@@ -453,24 +416,6 @@ bool wxMask::Create(const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(c
 
 IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject)
 
-bool wxBitmapHandler::Create(wxBitmap *WXUNUSED(bitmap), void *WXUNUSED(data), long WXUNUSED(type),
-                             int WXUNUSED(width), int WXUNUSED(height), int WXUNUSED(depth))
-{
-    return FALSE;
-}
-
-bool wxBitmapHandler::LoadFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), long WXUNUSED(type),
-                               int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight))
-{
-    return FALSE;
-}
-
-bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), int WXUNUSED(type),
-                               const wxPalette *WXUNUSED(palette))
-{
-    return FALSE;
-}
-
 /*
 * Standard handlers
 */
@@ -487,14 +432,17 @@ public:
     };
 
     virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
-        int desiredWidth, int desiredHeight);
+                          int desiredWidth, int desiredHeight);
 };
+
 IMPLEMENT_DYNAMIC_CLASS(wxXBMFileHandler, wxBitmapHandler)
 
-bool wxXBMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags),
-                                int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight))
+bool wxXBMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
+                                long WXUNUSED(flags),
+                                int WXUNUSED(desiredWidth),
+                                int WXUNUSED(desiredHeight))
 {
-    M_BITMAPHANDLERDATA->m_freePixmap = TRUE;
+    // M_BITMAPHANDLERDATA->m_freePixmap = TRUE;
 
     int hotX, hotY;
     unsigned int w, h;
@@ -504,7 +452,7 @@ bool wxXBMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXU
     M_BITMAPDATA->m_display = (WXDisplay*) dpy;
 
     int value = XReadBitmapFile (dpy, RootWindow (dpy, DefaultScreen (dpy)),
-        (char*) (const char*) name, &w, &h, &pixmap, &hotX, &hotY);
+        wxConstCast(name.c_str(), char), &w, &h, &pixmap, &hotX, &hotY);
     M_BITMAPHANDLERDATA->m_width = w;
     M_BITMAPHANDLERDATA->m_height = h;
     M_BITMAPHANDLERDATA->m_depth = 1;
@@ -534,17 +482,19 @@ public:
         m_type = wxBITMAP_TYPE_XBM_DATA;
     };
 
-    virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
+    virtual bool Create(wxBitmap *bitmap, void *data, long flags,
+                        int width, int height, int depth = 1);
 };
 IMPLEMENT_DYNAMIC_CLASS(wxXBMDataHandler, wxBitmapHandler)
 
-bool wxXBMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags),
-                              int width, int height, int WXUNUSED(depth))
+bool wxXBMDataHandler::Create( wxBitmap *bitmap, void *data,
+                               long WXUNUSED(flags),
+                               int width, int height, int WXUNUSED(depth))
 {
     M_BITMAPHANDLERDATA->m_width = width;
     M_BITMAPHANDLERDATA->m_height = height;
     M_BITMAPHANDLERDATA->m_depth = 1;
-    M_BITMAPHANDLERDATA->m_freePixmap = TRUE;
+    // M_BITMAPHANDLERDATA->m_freePixmap = TRUE;
 
     Display *dpy = (Display*) wxGetDisplay();
     M_BITMAPHANDLERDATA->m_display = (WXDisplay*) dpy;
@@ -552,6 +502,7 @@ bool wxXBMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags
     M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) XCreateBitmapFromData (dpy, RootWindow (dpy, DefaultScreen (dpy)), (char*) data, width, height);
     M_BITMAPHANDLERDATA->m_ok = (M_BITMAPHANDLERDATA->m_pixmap != (WXPixmap) 0) ;
 
+#if 0
     // code for wxControl. TODO: can we avoid doing this until we need it?
     // E.g. have CreateButtonPixmaps which is called on demand.
     XImage* image = (XImage *) XtMalloc (sizeof (XImage));
@@ -602,6 +553,9 @@ bool wxXBMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags
 
     M_BITMAPHANDLERDATA->m_image = (WXImage*) image;
     M_BITMAPHANDLERDATA->m_insensImage = (WXImage*) insensImage;
+#endif
+
+
 
     return TRUE;
 }
@@ -619,14 +573,17 @@ public:
     };
 
     virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
-        int desiredWidth, int desiredHeight);
-    virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
+                          int desiredWidth, int desiredHeight);
+    virtual bool SaveFile(const wxBitmap *bitmap, const wxString& name,
+                          wxBitmapType type, const wxPalette *palette = NULL);
 };
 
 IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler)
 
-bool wxXPMFileHandler::LoadFile( wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags),
-                                int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight) )
+bool wxXPMFileHandler::LoadFile( wxBitmap *bitmap, const wxString& name,
+                                 long WXUNUSED(flags),
+                                 int WXUNUSED(desiredWidth),
+                                 int WXUNUSED(desiredHeight) )
 {
     Display *dpy = (Display*) wxGetDisplay();
     M_BITMAPHANDLERDATA->m_display = (WXDisplay*) dpy;
@@ -639,7 +596,8 @@ bool wxXPMFileHandler::LoadFile( wxBitmap *bitmap, const wxString& name, long WX
     xpmAttr.valuemask = XpmReturnInfos | XpmCloseness;
     xpmAttr.closeness = 40000;
     int errorStatus = XpmReadFileToPixmap(dpy,
-        RootWindow(dpy, DefaultScreen(dpy)), (char*) (const char*) name,
+        RootWindow(dpy, DefaultScreen(dpy)),
+        wxConstCast(name.c_str(), char),
         &pixmap, &mask, &xpmAttr);
 
     if (errorStatus == XpmSuccess)
@@ -673,7 +631,7 @@ bool wxXPMFileHandler::LoadFile( wxBitmap *bitmap, const wxString& name, long WX
 
         M_BITMAPHANDLERDATA->m_depth = depthRet;
 
-        M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
+        // M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
 
         XpmFreeAttributes(&xpmAttr);
 
@@ -687,13 +645,15 @@ bool wxXPMFileHandler::LoadFile( wxBitmap *bitmap, const wxString& name, long WX
     }
 }
 
-bool wxXPMFileHandler::SaveFile( wxBitmap *bitmap, const wxString& name, int WXUNUSED(type),
-                                const wxPalette *WXUNUSED(palette))
+bool wxXPMFileHandler::SaveFile( const wxBitmap *bitmap, const wxString& name,
+                                 wxBitmapType WXUNUSED(type),
+                                 const wxPalette *WXUNUSED(palette))
 {
     if (M_BITMAPHANDLERDATA->m_ok && M_BITMAPHANDLERDATA->m_pixmap)
     {
         Display *dpy =  (Display*) M_BITMAPHANDLERDATA->m_display;
-        int errorStatus = XpmWriteFileFromPixmap(dpy, (char*) (const char*) name,
+        int errorStatus = XpmWriteFileFromPixmap(dpy,
+            wxConstCast(name.c_str(), char),
             (Pixmap) M_BITMAPHANDLERDATA->m_pixmap,
             (M_BITMAPHANDLERDATA->m_bitmapMask ? (Pixmap) M_BITMAPHANDLERDATA->m_bitmapMask->GetPixmap() : (Pixmap) 0),
             (XpmAttributes *) NULL);
@@ -717,17 +677,19 @@ public:
         m_type = wxBITMAP_TYPE_XPM_DATA;
     };
 
-    virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
+    virtual bool Create(wxBitmap *bitmap, void *data, long flags,
+                        int width, int height, int depth = 1);
 };
 IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
 
-bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags),
+bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data,
+                               long WXUNUSED(flags),
                               int width, int height, int WXUNUSED(depth))
 {
     M_BITMAPHANDLERDATA->m_width = width;
     M_BITMAPHANDLERDATA->m_height = height;
     M_BITMAPHANDLERDATA->m_depth = 1;
-    M_BITMAPHANDLERDATA->m_freePixmap = TRUE;
+    // M_BITMAPHANDLERDATA->m_freePixmap = TRUE;
 
     Display *dpy = (Display*) wxGetDisplay();
     M_BITMAPHANDLERDATA->m_display = (WXDisplay*) dpy;
@@ -736,6 +698,7 @@ bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags
 
     xpmAttr.valuemask = XpmReturnInfos;    /* nothing yet, but get infos back */
 
+#if 0
     XpmColorSymbol symbolicColors[4];
     if (sg_Control && sg_Control->GetMainWidget())
     {
@@ -750,8 +713,9 @@ bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags
         xpmAttr.colorsymbols = symbolicColors;
         xpmAttr.valuemask |= XpmColorSymbols;    // add flag
     }
+#endif
 
-    Pixmap pixmap;
+    Pixmap pixmap = 0;
     Pixmap mask = 0;
     int ErrorStatus = XpmCreatePixmapFromData(dpy, RootWindow(dpy, DefaultScreen(dpy)),
         (char**) data, &pixmap, &mask, &xpmAttr);
@@ -780,7 +744,7 @@ bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags
 
         M_BITMAPHANDLERDATA->m_depth = depthRet;
 
-        M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
+        // M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
         XpmFreeAttributes(&xpmAttr);
         M_BITMAPHANDLERDATA->m_ok = TRUE;
         M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) pixmap;
@@ -800,19 +764,6 @@ bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags
 
 #endif // wxHAVE_LIB_XPM
 
-void wxBitmap::CleanUpHandlers()
-{
-    wxNode *node = sm_handlers.First();
-    while ( node )
-    {
-        wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
-        wxNode *next = node->Next();
-        delete handler;
-        delete node;
-        node = next;
-    }
-}
-
 void wxBitmap::InitStandardHandlers()
 {
     // Initialize all standard bitmap or derived class handlers here.
@@ -827,13 +778,15 @@ void wxBitmap::InitStandardHandlers()
 #endif // wxHAVE_LIB_XPM
 }
 
+#if 0
 WXPixmap wxBitmap::GetLabelPixmap (WXWidget w)
 {
     if (!M_BITMAPDATA)
         return (WXPixmap)NULL;
-    if (M_BITMAPDATA->m_image == (WXPixmap) 0)
+    // if (M_BITMAPDATA->m_image == (WXPixmap) 0)
         return M_BITMAPDATA->m_pixmap;
 
+#if 0
     Display *dpy = (Display*) M_BITMAPDATA->m_display;
 
 #ifdef FOO
@@ -872,13 +825,15 @@ WXPixmap wxBitmap::GetLabelPixmap (WXWidget w)
     M_BITMAPDATA->m_labelPixmap = (WXPixmap) XmGetPixmap (DefaultScreenOfDisplay (dpy), tmp, fg, bg);
 
     return M_BITMAPDATA->m_labelPixmap;
+#endif
 }
 
 WXPixmap wxBitmap::GetArmPixmap (WXWidget w)
 {
-    if (M_BITMAPDATA->m_image == (WXPixmap) 0)
+    // if (M_BITMAPDATA->m_image == (WXPixmap) 0)
         return M_BITMAPDATA->m_pixmap;
 
+#if 0
     Display *dpy = (Display*) M_BITMAPDATA->m_display;
 #ifdef FOO
     // See GetLabelPixmap () comment
@@ -902,6 +857,7 @@ WXPixmap wxBitmap::GetArmPixmap (WXWidget w)
     M_BITMAPDATA->m_armPixmap = (WXPixmap) XmGetPixmap (DefaultScreenOfDisplay (dpy), tmp, fg, bg);
 
     return M_BITMAPDATA->m_armPixmap;
+#endif
 }
 
 WXPixmap wxBitmap::GetInsensPixmap (WXWidget w)
@@ -922,9 +878,10 @@ WXPixmap wxBitmap::GetInsensPixmap (WXWidget w)
             return M_BITMAPDATA->m_pixmap;
     }
 
-    if (M_BITMAPDATA->m_insensImage == (WXPixmap) 0)
+    // if (M_BITMAPDATA->m_insensImage == (WXPixmap) 0)
         return M_BITMAPDATA->m_pixmap;
 
+#if 0
 #ifdef FOO
     See GetLabelPixmap () comment
         // Must be destroyed, because colours can have been changed!
@@ -945,101 +902,9 @@ WXPixmap wxBitmap::GetInsensPixmap (WXWidget w)
     M_BITMAPDATA->m_insensPixmap = (WXPixmap) XmGetPixmap (DefaultScreenOfDisplay (dpy), tmp, fg, bg);
 
     return M_BITMAPDATA->m_insensPixmap;
+#endif
 }
-
-// We may need this sometime...
-
-/****************************************************************************
-
-  NAME
-  XCreateInsensitivePixmap - create a grayed-out copy of a pixmap
-
-  SYNOPSIS
-  Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap )
-
-  DESCRIPTION
-  This function creates a grayed-out copy of the argument pixmap, suitable
-  for use as a XmLabel's XmNlabelInsensitivePixmap resource.
-
-  RETURN VALUES
-  The return value is the new Pixmap id or zero on error.  Errors include
-  a NULL display argument or an invalid Pixmap argument.
-
-  ERRORS
-  If one of the XLib functions fail, it will produce a X error.  The
-  default X error handler prints a diagnostic and calls exit().
-
-  SEE ALSO
-  XCopyArea(3), XCreateBitmapFromData(3), XCreateGC(3), XCreatePixmap(3),
-  XFillRectangle(3), exit(2)
-
-  AUTHOR
-  John R Veregge - john@puente.jpl.nasa.gov
-  Advanced Engineering and Prototyping Group (AEG)
-  Information Systems Technology Section (395)
-  Jet Propulsion Lab - Calif Institute of Technology
-
-*****************************************************************************/
-
-Pixmap
-XCreateInsensitivePixmap( Display *display, Pixmap pixmap )
-
-{
-    static char stipple_data[] =
-        {
-            0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA,
-            0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA,
-            0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA,
-            0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA
-        };
-    GC        gc;
-    Pixmap    ipixmap, stipple;
-    unsigned    width, height, depth;
-
-    Window    window;    /* These return values */
-    unsigned    border;    /* from XGetGeometry() */
-    int        x, y;    /* are not needed.     */
-
-    ipixmap = 0;
-
-    if ( NULL == display || 0 == pixmap )
-        return ipixmap;
-
-    if ( 0 == XGetGeometry( display, pixmap, &window, &x, &y,
-                &width, &height, &border, &depth )
-       )
-        return ipixmap; /* BadDrawable: probably an invalid pixmap */
-
-    /* Get the stipple pixmap to be used to 'gray-out' the argument pixmap.
-     */
-    stipple = XCreateBitmapFromData( display, pixmap, stipple_data, 16, 16 );
-    if ( 0 != stipple )
-    {
-        gc = XCreateGC( display, pixmap, (XtGCMask)0, (XGCValues*)NULL );
-        if ( NULL != gc )
-        {
-            /* Create an identical copy of the argument pixmap.
-             */
-            ipixmap = XCreatePixmap( display, pixmap, width, height, depth );
-            if ( 0 != ipixmap )
-            {
-                /* Copy the argument pixmap into the new pixmap.
-                 */
-                XCopyArea( display, pixmap, ipixmap,
-                        gc, 0, 0, width, height, 0, 0 );
-
-                /* Refill the new pixmap using the stipple algorithm/pixmap.
-                 */
-                XSetStipple( display, gc, stipple );
-                XSetFillStyle( display, gc, FillStippled );
-                XFillRectangle( display, ipixmap, gc, 0, 0, width, height );
-            }
-            XFreeGC( display, gc );
-        }
-        XFreePixmap( display, stipple );
-    }
-    return ipixmap;
-}
+#endif
 
 // Creates a bitmap with transparent areas drawn in
 // the given colour.
@@ -1153,8 +1018,8 @@ wxSearchColor::wxSearchColor( int size_, XColor *colors_ )
 
 wxSearchColor::~wxSearchColor( void )
 {
-  if ( color ) delete color;
-  if ( entry ) delete entry;
+  if ( color ) delete[] color;
+  if ( entry ) delete[] entry;
 }
 
 int wxSearchColor::SearchColor( int r, int g, int b )
@@ -1286,12 +1151,11 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
     vinfo_template.depth = bpp;
     int nitem = 0;
 
-    vi = XGetVisualInfo( dpy, VisualIDMask|VisualDepthMask, &vinfo_template, &nitem );
+    vi = XGetVisualInfo( dpy, VisualIDMask|VisualDepthMask,
+                         &vinfo_template, &nitem );
 
     wxCHECK_MSG( vi, FALSE, wxT("no visual") );
 
-    XFree( vi );
-
     if ((bpp == 16) && (vi->red_mask != 0xf800)) bpp = 15;
     if (bpp < 8) bpp = 8;
 
@@ -1310,6 +1174,8 @@ bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
         else if ((vi->green_mask > vi->blue_mask) && (vi->blue_mask > vi->red_mask))  b_o = GBR;
     }
 
+    XFree( vi );
+
     int r_mask = image.GetMaskRed();
     int g_mask = image.GetMaskGreen();
     int b_mask = image.GetMaskBlue();