X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd362275b853cc0308bbde6a60bb2525d659f709..d642db66a5efc82d374b813022c72ba88bc50839:/include/wx/bitmap.h diff --git a/include/wx/bitmap.h b/include/wx/bitmap.h index 79a392abbf..06824a2c27 100644 --- a/include/wx/bitmap.h +++ b/include/wx/bitmap.h @@ -26,6 +26,7 @@ class WXDLLIMPEXP_FWD_CORE wxBitmapHandler; class WXDLLIMPEXP_FWD_CORE wxIcon; class WXDLLIMPEXP_FWD_CORE wxMask; class WXDLLIMPEXP_FWD_CORE wxPalette; +class WXDLLIMPEXP_FWD_CORE wxDC; // ---------------------------------------------------------------------------- // wxVariant support @@ -68,8 +69,7 @@ protected: virtual bool InitFromMonoBitmap(const wxBitmap& bitmap) = 0; }; -#if defined(__WXMGL__) || \ - defined(__WXDFB__) || \ +#if defined(__WXDFB__) || \ defined(__WXMAC__) || \ defined(__WXGTK__) || \ defined(__WXCOCOA__) || \ @@ -84,6 +84,23 @@ protected: #define wxBITMAP_SCREEN_DEPTH (-1) +// ---------------------------------------------------------------------------- +// wxBitmapHelpers: container for various bitmap methods common to all ports. +// ---------------------------------------------------------------------------- + +// Unfortunately, currently wxBitmap does not inherit from wxBitmapBase on all +// platforms and this is not easy to fix. So we extract at least some common +// methods into this class from which both wxBitmapBase (and hence wxBitmap on +// all platforms where it does inherit from it) and wxBitmap in wxMSW and other +// exceptional ports (only wxPM and old wxCocoa) inherit. +class WXDLLIMPEXP_CORE wxBitmapHelpers +{ +public: + // Create a new wxBitmap from the PNG data in the given buffer. + static wxBitmap NewFromPNGData(const void* data, size_t size); +}; + + // All ports except wxMSW and wxOS2 use wxBitmapHandler and wxBitmapBase as // base class for wxBitmapHandler; wxMSW and wxOS2 use wxGDIImageHandler as // base class since it allows some code reuse there. @@ -133,12 +150,12 @@ private: DECLARE_ABSTRACT_CLASS(wxBitmapHandler) }; - // ---------------------------------------------------------------------------- // wxBitmap: class which represents platform-dependent bitmap (unlike wxImage) // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxBitmapBase : public wxGDIObject +class WXDLLIMPEXP_CORE wxBitmapBase : public wxGDIObject, + public wxBitmapHelpers { public: /* @@ -158,6 +175,8 @@ public: virtual bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) = 0; virtual bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH) = 0; + virtual bool CreateScaled(int w, int h, int d, double logicalScale) + { return Create(w*logicalScale,h*logicalScale,d); } virtual int GetHeight() const = 0; virtual int GetWidth() const = 0; @@ -166,6 +185,13 @@ public: wxSize GetSize() const { return wxSize(GetWidth(), GetHeight()); } + // support for scaled bitmaps + virtual double GetScaleFactor() const { return 1.0; } + virtual double GetScaledWidth() const { return GetWidth() / GetScaleFactor(); } + virtual double GetScaledHeight() const { return GetHeight() / GetScaleFactor(); } + virtual wxSize GetScaledSize() const + { return wxSize(GetScaledWidth(), GetScaledHeight()); } + #if wxUSE_IMAGE virtual wxImage ConvertToImage() const = 0; @@ -244,7 +270,11 @@ protected: #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_XPM #include "wx/x11/bitmap.h" #elif defined(__WXGTK20__) - #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_XPM + #ifdef __WINDOWS__ + #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_BMP_RESOURCE + #else + #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_XPM + #endif #include "wx/gtk/bitmap.h" #elif defined(__WXGTK__) #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_XPM @@ -252,9 +282,6 @@ protected: #elif defined(__WXX11__) #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_XPM #include "wx/x11/bitmap.h" -#elif defined(__WXMGL__) - #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_BMP_RESOURCE - #include "wx/mgl/bitmap.h" #elif defined(__WXDFB__) #define wxBITMAP_DEFAULT_TYPE wxBITMAP_TYPE_BMP_RESOURCE #include "wx/dfb/bitmap.h" @@ -284,7 +311,7 @@ ConvertToDisabled(unsigned char brightness) const #endif // wxUSE_IMAGE // we must include generic mask.h after wxBitmap definition -#if defined(__WXMGL__) || defined(__WXDFB__) +#if defined(__WXDFB__) #define wxUSE_GENERIC_MASK 1 #else #define wxUSE_GENERIC_MASK 0