// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
#ifdef __GNUG__
-#pragma implementation "bitmap.h"
+ #pragma implementation "bitmap.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
-#pragma hdrstop
+ #pragma hdrstop
#endif
#ifndef WX_PRECOMP
-#include <stdio.h>
-#include "wx/setup.h"
-#include "wx/list.h"
-#include "wx/utils.h"
-#include "wx/app.h"
-#include "wx/palette.h"
-#include "wx/bitmap.h"
-#include "wx/icon.h"
+ #include <stdio.h>
+
+ #include "wx/list.h"
+ #include "wx/utils.h"
+ #include "wx/app.h"
+ #include "wx/palette.h"
+ #include "wx/dcmemory.h"
+ #include "wx/bitmap.h"
+ #include "wx/icon.h"
#endif
#include "wx/msw/private.h"
#include "wx/log.h"
-#include "assert.h"
-
-#if wxUSE_XPM_IN_MSW
-#define FOR_MSW 1
-#include "../src/xpm/xpm34.h"
-#endif
-
#include "wx/msw/dib.h"
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
#if !USE_SHARED_LIBRARIES
-IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject)
-IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
+ IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject)
+ IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
#endif
-wxBitmapRefData::wxBitmapRefData(void)
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// wxBitmapRefData
+// ----------------------------------------------------------------------------
+
+wxBitmapRefData::wxBitmapRefData()
{
m_ok = FALSE;
m_width = 0;
m_bitmapMask = NULL;
}
-wxBitmapRefData::~wxBitmapRefData(void)
+wxBitmapRefData::~wxBitmapRefData()
{
- if (m_selectedInto)
- {
- char buf[200];
- sprintf(buf, "Bitmap was deleted without selecting out of wxMemoryDC %X.", (unsigned int) m_selectedInto);
- wxFatalError(buf);
- }
- if (m_hBitmap)
- {
- DeleteObject((HBITMAP) m_hBitmap);
- }
- m_hBitmap = 0 ;
+ wxASSERT_MSG( !m_selectedInto,
+ wxT("deleting bitmap still selected into wxMemoryDC") );
- if (m_bitmapMask)
- delete m_bitmapMask;
- m_bitmapMask = NULL;
+ if ( m_hBitmap)
+ DeleteObject((HBITMAP) m_hBitmap);
+
+ if ( m_bitmapMask )
+ delete m_bitmapMask;
}
+// ----------------------------------------------------------------------------
+// wxBitmap
+// ----------------------------------------------------------------------------
+
wxList wxBitmap::sm_handlers;
-wxBitmap::wxBitmap(void)
+// this function should be called from all wxBitmap ctors
+void wxBitmap::Init()
{
- if ( wxTheBitmapList )
- wxTheBitmapList->AddBitmap(this);
+ // m_refData = NULL; done in the base class ctor
+
+ if ( wxTheBitmapList )
+ wxTheBitmapList->AddBitmap(this);
}
-wxBitmap::~wxBitmap(void)
+bool wxBitmap::CopyFromIcon(const wxIcon& icon)
+{
+ UnRef();
+
+ if ( !icon.Ok() )
+ return FALSE;
+
+ int width = icon.GetWidth(),
+ height = icon.GetHeight();
+
+ HICON hicon = (HICON) icon.GetHICON();
+
+ // GetIconInfo() doesn't exist under Win16 and I don't know any other way
+ // to create a bitmap from icon there - but using this way we won't have
+ // the mask (FIXME)
+#ifdef __WIN16__
+ // copy the icon to the bitmap
+ HDC hdcScreen = ::GetDC((HWND)NULL);
+ HDC hdc = ::CreateCompatibleDC(hdcScreen);
+ HBITMAP hbitmap = ::CreateCompatibleBitmap(hdcScreen, width, height);
+ HBITMAP hbmpOld = (HBITMAP)::SelectObject(hdc, hbitmap);
+
+ ::DrawIcon(hdc, 0, 0, hicon);
+
+ ::SelectObject(hdc, hbmpOld);
+ ::DeleteDC(hdc);
+ ::ReleaseDC((HWND)NULL, hdcScreen);
+#else // Win32
+ ICONINFO iconInfo;
+ if ( !GetIconInfo(hicon, &iconInfo) )
+ {
+ wxLogLastError("GetIconInfo");
+
+ return FALSE;
+ }
+
+ HBITMAP hbitmap = iconInfo.hbmColor;
+
+ wxMask *mask = new wxMask;
+ mask->SetMaskBitmap((WXHBITMAP)iconInfo.hbmMask);
+#endif // Win16/32
+
+ m_refData = new wxBitmapRefData;
+
+ M_BITMAPDATA->m_width = width;
+ M_BITMAPDATA->m_height = height;
+ M_BITMAPDATA->m_depth = wxDisplayDepth();
+
+ M_BITMAPDATA->m_hBitmap = (WXHBITMAP)hbitmap;
+ M_BITMAPDATA->m_ok = TRUE;
+
+#ifndef __WIN16__
+ SetMask(mask);
+#endif // !Win16
+
+ return TRUE;
+}
+
+wxBitmap::~wxBitmap()
{
if (wxTheBitmapList)
wxTheBitmapList->DeleteObject(this);
}
-bool wxBitmap::FreeResource(bool force)
+bool wxBitmap::FreeResource(bool WXUNUSED(force))
{
if ( !M_BITMAPDATA )
- return FALSE;
+ return FALSE;
+
+ wxASSERT_MSG( !M_BITMAPDATA->m_selectedInto,
+ wxT("freeing bitmap still selected into wxMemoryDC") );
- if (M_BITMAPDATA->m_selectedInto)
- {
- char buf[200];
- sprintf(buf, "Bitmap %X was deleted without selecting out of wxMemoryDC %X.", (unsigned int) this, (unsigned int) M_BITMAPDATA->m_selectedInto);
- wxFatalError(buf);
- }
if (M_BITMAPDATA->m_hBitmap)
{
DeleteObject((HBITMAP) M_BITMAPDATA->m_hBitmap);
wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits)
{
- m_refData = new wxBitmapRefData;
+ Init();
- M_BITMAPDATA->m_width = the_width ;
- M_BITMAPDATA->m_height = the_height ;
- M_BITMAPDATA->m_depth = no_bits ;
- M_BITMAPDATA->m_numColors = 0;
+ m_refData = new wxBitmapRefData;
- M_BITMAPDATA->m_hBitmap = (WXHBITMAP) CreateBitmap(the_width, the_height, 1, no_bits, bits);
+ M_BITMAPDATA->m_width = the_width ;
+ M_BITMAPDATA->m_height = the_height ;
+ M_BITMAPDATA->m_depth = no_bits ;
+ M_BITMAPDATA->m_numColors = 0;
- if (M_BITMAPDATA->m_hBitmap)
- M_BITMAPDATA->m_ok = TRUE;
- else
- M_BITMAPDATA->m_ok = FALSE;
+ M_BITMAPDATA->m_hBitmap = (WXHBITMAP) CreateBitmap(the_width, the_height, 1, no_bits, bits);
- M_BITMAPDATA->m_selectedInto = NULL;
+ if (M_BITMAPDATA->m_hBitmap)
+ M_BITMAPDATA->m_ok = TRUE;
+ else
+ M_BITMAPDATA->m_ok = FALSE;
- if ( wxTheBitmapList )
- wxTheBitmapList->AddBitmap(this);
+ M_BITMAPDATA->m_selectedInto = NULL;
}
-wxBitmap::wxBitmap(int w, int h, int d)
+// Create from XPM data
+wxBitmap::wxBitmap(char **data, wxControl *WXUNUSED(anItem))
{
- (void)Create(w, h, d);
+ Init();
- if ( wxTheBitmapList )
- wxTheBitmapList->AddBitmap(this);
+ (void)Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
}
-wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth)
+wxBitmap::wxBitmap(int w, int h, int d)
{
- (void) Create(data, type, width, height, depth);
+ Init();
- if ( wxTheBitmapList )
- wxTheBitmapList->AddBitmap(this);
+ (void)Create(w, h, d);
}
-wxBitmap::wxBitmap(const wxString& filename, long type)
+wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth)
{
- LoadFile(filename, (int)type);
+ Init();
- if ( wxTheBitmapList )
- wxTheBitmapList->AddBitmap(this);
+ (void) Create(data, type, width, height, depth);
}
-#if wxUSE_XPM_IN_MSW
-// Create from data
-wxBitmap::wxBitmap(char **data, wxItem *WXUNUSED(anItem))
+wxBitmap::wxBitmap(const wxString& filename, long type)
{
- (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
+ Init();
+
+ LoadFile(filename, (int)type);
}
-#endif
bool wxBitmap::Create(int w, int h, int d)
{
}
else
{
- HDC dc = GetDC(NULL);
+ HDC dc = GetDC((HWND) NULL);
M_BITMAPDATA->m_hBitmap = (WXHBITMAP) CreateCompatibleBitmap(dc, w, h);
- ReleaseDC(NULL, dc);
+ ReleaseDC((HWND) NULL, dc);
M_BITMAPDATA->m_depth = wxDisplayDepth();
}
if (M_BITMAPDATA->m_hBitmap)
wxBitmapHandler *handler = FindHandler(type);
if ( handler == NULL ) {
- wxLogWarning("no bitmap handler for type %d defined.", type);
+ wxLogWarning(wxT("no bitmap handler for type %d defined."), type);
return FALSE;
}
wxBitmapHandler *handler = FindHandler(type);
if ( handler == NULL ) {
- wxLogWarning("no bitmap handler for type %d defined.", type);
+ wxLogWarning(wxT("no bitmap handler for type %d defined."), type);
return FALSE;
}
wxBitmapHandler *handler = FindHandler(type);
if ( handler == NULL ) {
- wxLogWarning("no bitmap handler for type %d defined.", type);
+ wxLogWarning(wxT("no bitmap handler for type %d defined."), type);
return FALSE;
}
void wxBitmap::SetHBITMAP(WXHBITMAP bmp)
{
if (!M_BITMAPDATA)
- m_refData = new wxBitmapRefData;
+ m_refData = new wxBitmapRefData;
M_BITMAPDATA->m_hBitmap = bmp;
+ M_BITMAPDATA->m_ok = bmp != 0;
}
void wxBitmap::AddHandler(wxBitmapHandler *handler)
while ( node )
{
wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
- if ( handler->GetName() == name )
+ if ( (handler->GetName().Cmp(name) == 0) )
return handler;
node = node->Next();
}
while ( node )
{
wxBitmapHandler *handler = (wxBitmapHandler *)node->Data();
- if ( handler->GetExtension() == extension &&
- (bitmapType == -1 || handler->GetType() == bitmapType) )
+ if ( (handler->GetExtension().Cmp(extension) == 0) &&
+ (bitmapType == -1 || (handler->GetType() == bitmapType)) )
return handler;
node = node->Next();
}
{
wxMemoryDC memDC;
wxBitmap tmpBitmap(this->GetWidth(), this->GetHeight(), dc.GetDepth());
- HPALETTE hPal = NULL;
+ HPALETTE hPal = (HPALETTE) NULL;
LPBITMAPINFO lpDib;
- void *lpBits = NULL;
+ void *lpBits = (void*) NULL;
/*
wxASSERT( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) );
*/
if( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) )
{
- tmpBitmap.SetPalette(this->GetPalette());
+ tmpBitmap.SetPalette(* this->GetPalette());
memDC.SelectObject(tmpBitmap);
- memDC.SetPalette(this->GetPalette());
+ memDC.SetPalette(* this->GetPalette());
hPal = (HPALETTE) this->GetPalette()->GetHPALETTE();
}
else
* wxMask
*/
-wxMask::wxMask(void)
+wxMask::wxMask()
{
m_maskBitmap = 0;
}
Create(bitmap);
}
-wxMask::~wxMask(void)
+wxMask::~wxMask()
{
if ( m_maskBitmap )
::DeleteObject((HBITMAP) m_maskBitmap);
IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject)
-bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth)
+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 *bitmap, const wxString& name, long type,
- int desiredWidth, int desiredHeight)
+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 *bitmap, const wxString& name, int type, const wxPalette *palette)
+bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), int WXUNUSED(type), const wxPalette *WXUNUSED(palette))
{
return FALSE;
}
{
DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler)
public:
- inline wxBMPResourceHandler(void)
+ inline wxBMPResourceHandler()
{
m_name = "Windows bitmap resource";
m_extension = "";
};
IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler)
-bool wxBMPResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth, int desiredHeight)
+bool wxBMPResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags),
+ int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight))
{
// TODO: load colourmap.
M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ::LoadBitmap(wxGetInstance(), name);
if (M_BITMAPHANDLERDATA->m_hBitmap)
{
- M_BITMAPHANDLERDATA->m_ok = TRUE;
- BITMAP bm;
- GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(BITMAP), (LPSTR) &bm);
- M_BITMAPHANDLERDATA->m_width = bm.bmWidth;
- M_BITMAPHANDLERDATA->m_height = bm.bmHeight;
- M_BITMAPHANDLERDATA->m_depth = bm.bmBitsPixel;
- return TRUE;
+ M_BITMAPHANDLERDATA->m_ok = TRUE;
+ BITMAP bm;
+ GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(BITMAP), (LPSTR) &bm);
+ M_BITMAPHANDLERDATA->m_width = bm.bmWidth;
+ M_BITMAPHANDLERDATA->m_height = bm.bmHeight;
+ M_BITMAPHANDLERDATA->m_depth = bm.bmBitsPixel;
+
+ if ( bitmap->IsKindOf(CLASSINFO(wxIcon)) )
+ {
+ }
+
+ return TRUE;
}
// it's probably not found
- wxLogError("Can't load bitmap '%s' from resources! Check .rc file.", name.c_str());
+ wxLogError(wxT("Can't load bitmap '%s' from resources! Check .rc file."), name.c_str());
return FALSE;
}
{
DECLARE_DYNAMIC_CLASS(wxBMPFileHandler)
public:
- inline wxBMPFileHandler(void)
+ inline wxBMPFileHandler()
{
m_name = "Windows bitmap file";
m_extension = "bmp";
};
IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler)
-bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth, int desiredHeight)
+bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags),
+ int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight))
{
#if wxUSE_IMAGE_LOADING_IN_MSW
wxPalette *palette = NULL;
palette = NULL;
}
if (palette)
- M_BITMAPHANDLERDATA->m_bitmapPalette = *palette;
+ {
+ M_BITMAPHANDLERDATA->m_bitmapPalette = *palette;
+ delete palette;
+ }
return success;
#else
return FALSE;
#endif
}
-bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *pal)
+bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int WXUNUSED(type), const wxPalette *pal)
{
#if wxUSE_IMAGE_LOADING_IN_MSW
wxPalette *actualPalette = (wxPalette *)pal;
#endif
}
-class WXDLLEXPORT wxXPMFileHandler: public wxBitmapHandler
-{
- DECLARE_DYNAMIC_CLASS(wxXPMFileHandler)
-public:
- inline wxXPMFileHandler(void)
- {
- m_name = "XPM bitmap file";
- m_extension = "xpm";
- m_type = wxBITMAP_TYPE_XPM;
- };
-
- virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth = -1, int desiredHeight = -1);
- virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
-};
-IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler)
-
-bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth, int desiredHeight)
-{
-#if wxUSE_XPM_IN_MSW
- XImage *ximage;
- XpmAttributes xpmAttr;
- HDC dc;
-
- M_BITMAPHANDLERDATA->m_ok = FALSE;
- dc = CreateCompatibleDC(NULL);
- if (dc)
- {
- xpmAttr.valuemask = XpmReturnPixels;
- int errorStatus = XpmReadFileToImage(&dc, WXSTRINGCAST name, &ximage, (XImage **) NULL, &xpmAttr);
- DeleteDC(dc);
- if (errorStatus == XpmSuccess)
- {
- M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap;
-
- BITMAP bm;
- GetObject((HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm);
-
- M_BITMAPHANDLERDATA->m_width = (bm.bmWidth);
- M_BITMAPHANDLERDATA->m_height = (bm.bmHeight);
- M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel);
- M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
- XpmFreeAttributes(&xpmAttr);
- XImageFree(ximage);
-
- M_BITMAPHANDLERDATA->m_ok = TRUE;
- return TRUE;
- }
- else
- {
- M_BITMAPHANDLERDATA->m_ok = FALSE;
- return FALSE;
- }
- }
-#endif
-
- return FALSE;
-}
-
-bool wxXPMFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette)
-{
-#if wxUSE_XPM_IN_MSW
- HDC dc = NULL;
-
- XImage ximage;
-
- dc = CreateCompatibleDC(NULL);
- if (dc)
- {
- if (SelectObject(dc, (HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap))
- {
- /* for following SetPixel */
- /* fill the XImage struct 'by hand' */
- ximage.width = M_BITMAPHANDLERDATA->m_width;
- ximage.height = M_BITMAPHANDLERDATA->m_height;
- ximage.depth = M_BITMAPHANDLERDATA->m_depth;
- ximage.bitmap = (HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap;
- int errorStatus = XpmWriteFileFromImage(&dc, WXSTRINGCAST name,
- &ximage, (XImage *) NULL, (XpmAttributes *) NULL);
-
- if (dc)
- DeleteDC(dc);
-
- if (errorStatus == XpmSuccess)
- return TRUE; /* no error */
- else
- return FALSE;
- } else return FALSE;
- } else return FALSE;
-#else
- return FALSE;
-#endif
-}
-
-class WXDLLEXPORT wxXPMDataHandler: public wxBitmapHandler
-{
- DECLARE_DYNAMIC_CLASS(wxXPMDataHandler)
-public:
- inline wxXPMDataHandler(void)
- {
- m_name = "XPM bitmap data";
- m_extension = "xpm";
- m_type = wxBITMAP_TYPE_XPM_DATA;
- };
-
- 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 flags, int width, int height, int depth)
-{
-#if wxUSE_XPM_IN_MSW
- XImage *ximage;
- int ErrorStatus;
- XpmAttributes xpmAttr;
- HDC dc;
-
- M_BITMAPHANDLERDATA->m_ok = FALSE;
- M_BITMAPHANDLERDATA->m_numColors = 0;
-
- dc = CreateCompatibleDC(NULL); /* memory DC */
-
- if (dc)
- {
- xpmAttr.valuemask = XpmReturnInfos; /* get infos back */
- ErrorStatus = XpmCreateImageFromData(&dc, (char **)data,
- &ximage, (XImage **) NULL, &xpmAttr);
-
- if (ErrorStatus == XpmSuccess)
- {
- /* ximage is malloced and contains bitmap and attributes */
- M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap;
-
- BITMAP bm;
- GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm);
-
- M_BITMAPHANDLERDATA->m_width = (bm.bmWidth);
- M_BITMAPHANDLERDATA->m_height = (bm.bmHeight);
- M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel);
- M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
- XpmFreeAttributes(&xpmAttr);
-
- XImageFree(ximage); // releases the malloc, but does not detroy
- // the bitmap
- M_BITMAPHANDLERDATA->m_ok = TRUE;
- DeleteDC(dc);
-
- return TRUE;
- }
- else
- {
- M_BITMAPHANDLERDATA->m_ok = FALSE;
-// XpmDebugError(ErrorStatus, NULL);
- DeleteDC(dc);
- return FALSE;
- }
- }
-#endif
-
- return FALSE;
-}
-
-void wxBitmap::CleanUpHandlers(void)
+void wxBitmap::CleanUpHandlers()
{
wxNode *node = sm_handlers.First();
while ( node )
}
}
-void wxBitmap::InitStandardHandlers(void)
+void wxBitmap::InitStandardHandlers()
{
AddHandler(new wxBMPResourceHandler);
AddHandler(new wxBMPFileHandler);
- AddHandler(new wxXPMFileHandler);
- AddHandler(new wxXPMDataHandler);
+
+ // Not added by default: include xpmhand.h in your app
+ // and call these in your wxApp::OnInit.
+// AddHandler(new wxXPMFileHandler);
+// AddHandler(new wxXPMDataHandler);
+
AddHandler(new wxICOResourceHandler);
AddHandler(new wxICOFileHandler);
}