X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/da8cebb2f919fa43d5d1ac21be9d0e30c5451197..7fd80c6f685550715713208680e7d095b03c1632:/src/common/bmpbase.cpp diff --git a/src/common/bmpbase.cpp b/src/common/bmpbase.cpp index d8c879f146..763b9597f9 100644 --- a/src/common/bmpbase.cpp +++ b/src/common/bmpbase.cpp @@ -3,7 +3,6 @@ // Purpose: wxBitmapBase // Author: VaclavSlavik // Created: 2001/04/11 -// RCS-ID: $Id$ // Copyright: (c) 2001, Vaclav Slavik // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -19,8 +18,55 @@ #ifndef WX_PRECOMP #include "wx/colour.h" + #include "wx/icon.h" + #include "wx/image.h" #endif // WX_PRECOMP +#if wxUSE_IMAGE && wxUSE_LIBPNG && wxUSE_STREAMS + #define wxHAS_PNG_LOAD + + #include "wx/mstream.h" +#endif + +// ---------------------------------------------------------------------------- +// wxVariant support +// ---------------------------------------------------------------------------- + +#if wxUSE_VARIANT +IMPLEMENT_VARIANT_OBJECT_EXPORTED_SHALLOWCMP(wxBitmap,WXDLLEXPORT) +IMPLEMENT_VARIANT_OBJECT_EXPORTED_SHALLOWCMP(wxIcon,WXDLLEXPORT) +#endif + +#if wxUSE_EXTENDED_RTTI +//WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl) +//WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl) +#endif + +// ---------------------------------------------------------------------------- +// wxBitmapHelpers +// ---------------------------------------------------------------------------- + +// wxOSX has a native version and doesn't use this one. + +#ifndef __WXOSX__ + +/* static */ +wxBitmap wxBitmapHelpers::NewFromPNGData(const void* data, size_t size) +{ + wxBitmap bitmap; + +#ifdef wxHAS_PNG_LOAD + wxMemoryInputStream is(data, size); + wxImage image(is, wxBITMAP_TYPE_PNG); + if ( image.IsOk() ) + bitmap = wxBitmap(image); +#endif // wxHAS_PNG_LOAD + + return bitmap; +} + +#endif // !__WXOSX__ + // ---------------------------------------------------------------------------- // wxBitmapBase // ---------------------------------------------------------------------------- @@ -31,22 +77,21 @@ #include "wx/log.h" #include "wx/utils.h" #include "wx/palette.h" - #include "wx/icon.h" - #include "wx/image.h" #include "wx/module.h" #endif // WX_PRECOMP + IMPLEMENT_ABSTRACT_CLASS(wxBitmapBase, wxGDIObject) -IMPLEMENT_ABSTRACT_CLASS(wxBitmapHandlerBase,wxObject) +IMPLEMENT_ABSTRACT_CLASS(wxBitmapHandler, wxObject) wxList wxBitmapBase::sm_handlers; -void wxBitmapBase::AddHandler(wxBitmapHandlerBase *handler) +void wxBitmapBase::AddHandler(wxBitmapHandler *handler) { sm_handlers.Append(handler); } -void wxBitmapBase::InsertHandler(wxBitmapHandlerBase *handler) +void wxBitmapBase::InsertHandler(wxBitmapHandler *handler) { sm_handlers.Insert(handler); } @@ -121,14 +166,35 @@ class wxBitmapBaseModule: public wxModule DECLARE_DYNAMIC_CLASS(wxBitmapBaseModule) public: wxBitmapBaseModule() {} - bool OnInit() { wxBitmap::InitStandardHandlers(); return true; }; - void OnExit() { wxBitmap::CleanUpHandlers(); }; + bool OnInit() { wxBitmap::InitStandardHandlers(); return true; } + void OnExit() { wxBitmap::CleanUpHandlers(); } }; IMPLEMENT_DYNAMIC_CLASS(wxBitmapBaseModule, wxModule) #endif // wxUSE_BITMAP_BASE +// ---------------------------------------------------------------------------- +// wxBitmap common +// ---------------------------------------------------------------------------- + +#if !(defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXX11__)) + +wxBitmap::wxBitmap(const char* const* bits) +{ + wxCHECK2_MSG(bits != NULL, return, wxT("invalid bitmap data")); + +#if wxUSE_IMAGE && wxUSE_XPM + wxImage image(bits); + wxCHECK2_MSG(image.IsOk(), return, wxT("invalid bitmap data")); + + *this = wxBitmap(image); +#else + wxFAIL_MSG(wxT("creating bitmaps from XPMs not supported")); +#endif // wxUSE_IMAGE && wxUSE_XPM +} +#endif // !(defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXX11__)) + // ---------------------------------------------------------------------------- // wxMaskBase // ----------------------------------------------------------------------------