X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..c2193ac9115470a4ecbc6844bbe19734a8c636ad:/include/wx/msw/dib.h diff --git a/include/wx/msw/dib.h b/include/wx/msw/dib.h index 104955b89e..73bf5265a9 100644 --- a/include/wx/msw/dib.h +++ b/include/wx/msw/dib.h @@ -12,8 +12,8 @@ #ifndef _WX_MSW_DIB_H_ #define _WX_MSW_DIB_H_ -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxPalette; +class WXDLLIMPEXP_FWD_CORE wxBitmap; +class WXDLLIMPEXP_FWD_CORE wxPalette; #include "wx/msw/private.h" @@ -23,7 +23,7 @@ class WXDLLEXPORT wxPalette; // wxDIB: represents a DIB section // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDIB +class WXDLLIMPEXP_CORE wxDIB { public: // ctors and such @@ -41,6 +41,10 @@ public: wxDIB(const wxBitmap& bmp) { Init(); (void)Create(bmp); } + // create a DIB from the Windows DDB + wxDIB(HBITMAP hbmp) + { Init(); (void)Create(hbmp); } + // load a DIB from file (any depth is supoprted here unlike above) // // as above, use IsOk() to see if the bitmap was loaded successfully @@ -50,6 +54,7 @@ public: // same as the corresponding ctors but with return value bool Create(int width, int height, int depth); bool Create(const wxBitmap& bmp); + bool Create(HBITMAP hbmp); bool Load(const wxString& filename); // dtor is not virtual, this class is not meant to be used polymorphically @@ -60,7 +65,7 @@ public: // ---------- #ifndef __WXWINCE__ - // create a bitmap compatiblr with the given HDC (or screen by default) and + // create a bitmap compatible with the given HDC (or screen by default) and // return its handle, the caller is responsible for freeing it (using // DeleteObject()) HBITMAP CreateDDB(HDC hdc = 0) const; @@ -98,7 +103,8 @@ public: // get raw pointer to bitmap bits, you should know what you do if you // decide to use it - void *GetData() const { DoGetObject(); return m_data; } + unsigned char *GetData() const + { DoGetObject(); return (unsigned char *)m_data; } // HBITMAP conversion @@ -194,6 +200,11 @@ private: // the case bool m_ownsHandle; + // if true, we have alpha, if false we don't (note that we can still have + // m_depth == 32 but the last component is then simply padding and not + // alpha) + bool m_hasAlpha; + // DIBs can't be copied wxDIB(const wxDIB&); @@ -209,6 +220,7 @@ void wxDIB::Init() { m_handle = 0; m_ownsHandle = true; + m_hasAlpha = false; m_data = NULL;