X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd85921189610501e38fb501801b1eb6b9560fe7..7344108e8a129a3f9b4df5ab0f98a1713db03b89:/include/wx/os2/bitmap.h diff --git a/include/wx/os2/bitmap.h b/include/wx/os2/bitmap.h index ba920a1fac..653dd9635a 100644 --- a/include/wx/os2/bitmap.h +++ b/include/wx/os2/bitmap.h @@ -12,24 +12,20 @@ #ifndef _WX_BITMAP_H_ #define _WX_BITMAP_H_ -#ifdef __GNUG__ - #pragma interface "bitmap.h" -#endif - #include "wx/os2/private.h" #include "wx/os2/gdiimage.h" #include "wx/gdicmn.h" #include "wx/palette.h" -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxBitmapHandler; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxMask; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxImage; +class WXDLLIMPEXP_FWD_CORE wxDC; +class WXDLLIMPEXP_FWD_CORE wxControl; +class WXDLLIMPEXP_FWD_CORE wxBitmap; +class WXDLLIMPEXP_FWD_CORE wxBitmapHandler; +class WXDLLIMPEXP_FWD_CORE wxIcon; +class WXDLLIMPEXP_FWD_CORE wxMask; +class WXDLLIMPEXP_FWD_CORE wxCursor; +class WXDLLIMPEXP_FWD_CORE wxControl; +class WXDLLIMPEXP_FWD_CORE wxPixelDataBase; // ---------------------------------------------------------------------------- // Bitmap data @@ -38,10 +34,11 @@ class WXDLLEXPORT wxImage; // wxBitmap functions accessing it // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxBitmapRefData : public wxGDIImageRefData +class WXDLLIMPEXP_CORE wxBitmapRefData : public wxGDIImageRefData { public: wxBitmapRefData(); + wxBitmapRefData(const wxBitmapRefData &tocopy); virtual ~wxBitmapRefData() { Free(); } virtual void Free(); @@ -66,7 +63,7 @@ public: // wxBitmap: a mono or colour bitmap // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxBitmap : public wxGDIImage +class WXDLLIMPEXP_CORE wxBitmap : public wxGDIImage { public: // default ctor creates an invalid bitmap, you must Create() it later @@ -74,7 +71,11 @@ public: // Copy constructors inline wxBitmap(const wxBitmap& rBitmap) - { Init(); Ref(rBitmap); } + : wxGDIImage(rBitmap) + { + Init(); + SetHandle(rBitmap.GetHandle()); + } // Initialize with raw data wxBitmap( const char bits[] @@ -84,29 +85,46 @@ public: ); // Initialize with XPM data - wxBitmap(const char** ppData); - wxBitmap(char** ppData); + wxBitmap(const char* const* bits); +#ifdef wxNEEDS_CHARPP + // needed for old GCC + wxBitmap(char** data) + { + *this = wxBitmap(const_cast(data)); + } +#endif - // Load a file or resource - wxBitmap( const wxString& rName - ,long lType = wxBITMAP_TYPE_BMP_RESOURCE + // Load a resource + wxBitmap( int nId + ,wxBitmapType lType = wxBITMAP_DEFAULT_TYPE ); + // For compatiability with other ports, under OS/2 does same as default ctor + inline wxBitmap( const wxString& WXUNUSED(rFilename) + ,wxBitmapType WXUNUSED(lType) + ) + { Init(); } // New constructor for generalised creation from data - wxBitmap( void* pData - ,long lType + wxBitmap( const void* pData + ,wxBitmapType lType ,int nWidth ,int nHeight ,int nDepth = 1 ); // If depth is omitted, will create a bitmap compatible with the display - wxBitmap( int nWidth - ,int nHeight - ,int nDepth = -1 - ); + wxBitmap( int nWidth, int nHeight, int nDepth = -1 ) + { + Init(); + (void)Create(nWidth, nHeight, nDepth); + } + wxBitmap( const wxSize& sz, int nDepth = -1 ) + { + Init(); + (void)Create(sz, nDepth); + } - wxBitmap( const wxImage& image, int depth = -1 ) + wxBitmap( const wxImage& image, int depth = -1 ) { (void)CreateFromImage(image, depth); } // we must have this, otherwise icons are silently copied into bitmaps using @@ -114,13 +132,6 @@ public: inline wxBitmap(const wxIcon& rIcon) { Init(); CopyFromIcon(rIcon); } - wxBitmap& operator=(const wxBitmap& rBitmap) - { - if ( m_refData != rBitmap.m_refData ) - Ref(rBitmap); - return(*this); - } - wxBitmap& operator=(const wxIcon& rIcon) { (void)CopyFromIcon(rIcon); @@ -136,7 +147,8 @@ public: virtual ~wxBitmap(); - wxImage ConvertToImage() const; + wxImage ConvertToImage() const; + wxBitmap ConvertToDisabled(unsigned char brightness = 255) const; // get the given part of bitmap wxBitmap GetSubBitmap(const wxRect& rRect) const; @@ -149,59 +161,50 @@ public: virtual bool Create( int nWidth ,int nHeight - ,int nDepth = -1 + ,int nDepth = wxBITMAP_SCREEN_DEPTH ); - virtual bool Create( void* pData - ,long lType + virtual bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH) + { return Create(sz.GetWidth(), sz.GetHeight(), depth); } + + virtual bool Create( const void* pData + ,wxBitmapType lType ,int nWidth ,int nHeight ,int nDepth = 1 ); + virtual bool LoadFile( int nId + ,wxBitmapType lType = wxBITMAP_DEFAULT_TYPE + ); virtual bool LoadFile( const wxString& rName - ,long lType = wxBITMAP_TYPE_BMP_RESOURCE + ,wxBitmapType lType = wxBITMAP_DEFAULT_TYPE ); virtual bool SaveFile( const wxString& rName - ,int lType + ,wxBitmapType lType ,const wxPalette* pCmap = NULL ); inline wxBitmapRefData* GetBitmapData() const { return (wxBitmapRefData *)m_refData; } + // raw bitmap access support functions + void *GetRawData(wxPixelDataBase& data, int bpp); + void UngetRawData(wxPixelDataBase& data); + inline int GetQuality() const { return (GetBitmapData() ? GetBitmapData()->m_nQuality : 0); } void SetQuality(int nQ); wxPalette* GetPalette() const - { return (GetBitmapData() ? (& GetBitmapData()->m_vBitmapPalette) : (wxPalette*) NULL); } + { return (GetBitmapData() ? (& GetBitmapData()->m_vBitmapPalette) : NULL); } void SetPalette(const wxPalette& rPalette); inline wxMask* GetMask() const - { return (GetBitmapData() ? GetBitmapData()->m_pBitmapMask : (wxMask*) NULL); } + { return (GetBitmapData() ? GetBitmapData()->m_pBitmapMask : NULL); } void SetMask(wxMask* pMask) ; - inline bool operator==(const wxBitmap& rBitmap) - { return m_refData == rBitmap.m_refData; } - - inline bool operator!=(const wxBitmap& rBitmap) - { return m_refData != rBitmap.m_refData; } - -#if WXWIN_COMPATIBILITY_2 - void SetOk(bool bIsOk); -#endif // WXWIN_COMPATIBILITY_2 - -#if WXWIN_COMPATIBILITY - inline wxPalette* GetColourMap() const - { return GetPalette(); } - - inline void SetColourMap(wxPalette* pCmap) - { SetPalette(*pCmap); }; - -#endif // WXWIN_COMPATIBILITY - // Implementation public: inline void SetHBITMAP(WXHBITMAP hBmp) @@ -214,15 +217,13 @@ public: { if (GetBitmapData()) GetBitmapData()->m_pSelectedInto = pDc; } inline wxDC* GetSelectedInto() const - { return (GetBitmapData() ? GetBitmapData()->m_pSelectedInto : (wxDC*) NULL); } + { return (GetBitmapData() ? GetBitmapData()->m_pSelectedInto : NULL); } + + inline bool IsMono(void) const { return m_bIsMono; } // An OS/2 version that probably doesn't do anything like the msw version wxBitmap GetBitmapForDC(wxDC& rDc) const; -// inline LONG GetId() const -// { return (GetBitmapData() ? GetBitmapData()->m_lId : 0L); } - - protected: // common part of all ctors void Init(); @@ -230,13 +231,14 @@ protected: inline virtual wxGDIImageRefData* CreateData() const { return new wxBitmapRefData; } - // creates the bitmap from XPM data, supposed to be called from ctor - bool CreateFromXpm(const char **bits); bool CreateFromImage(const wxImage& image, int depth); + virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const; + private: bool CopyFromIconOrCursor(const wxGDIImage& rIcon); + bool m_bIsMono; DECLARE_DYNAMIC_CLASS(wxBitmap) }; // end of CLASS wxBitmap @@ -244,10 +246,11 @@ private: // wxMask: a mono bitmap used for drawing bitmaps transparently. // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMask : public wxObject +class WXDLLIMPEXP_CORE wxMask : public wxObject { public: wxMask(); + wxMask( const wxMask& tocopy); // Construct a mask from a bitmap and a colour indicating the transparent // area @@ -293,7 +296,7 @@ protected: // wxBitmapHandler is a class which knows how to load/save bitmaps to/from file // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxBitmapHandler : public wxGDIImageHandler +class WXDLLIMPEXP_CORE wxBitmapHandler : public wxGDIImageHandler { public: inline wxBitmapHandler() @@ -301,7 +304,7 @@ public: inline wxBitmapHandler( const wxString& rName ,const wxString& rExt - ,long lType + ,wxBitmapType lType ) : wxGDIImageHandler( rName ,rExt @@ -312,44 +315,56 @@ public: // keep wxBitmapHandler derived from wxGDIImageHandler compatible with the // old class which worked only with bitmaps virtual bool Create( wxBitmap* pBitmap - ,void* pData - ,long lFlags + ,const void* pData + ,wxBitmapType lType ,int nWidth ,int nHeight ,int nDepth = 1 ); + virtual bool LoadFile( wxBitmap* pBitmap + ,int nId + ,wxBitmapType lType + ,int nDesiredWidth + ,int nDesiredHeight + ); virtual bool LoadFile( wxBitmap* pBitmap ,const wxString& rName - ,HPS hPs - ,long lFlags + ,wxBitmapType lType ,int nDesiredWidth ,int nDesiredHeight ); virtual bool SaveFile( wxBitmap* pBitmap ,const wxString& rName - ,int lType + ,wxBitmapType lType ,const wxPalette* pPalette = NULL - ); + ) const; virtual bool Create( wxGDIImage* pImage - ,void* pData - ,long lFlags + ,const void* pData + ,wxBitmapType lFlags ,int nWidth ,int nHeight ,int nDepth = 1 ); virtual bool Load( wxGDIImage* pImage - ,const wxString& rName - ,HPS hPs - ,long lFlags + ,int nId + ,wxBitmapType lFlags ,int nDesiredWidth ,int nDesiredHeight ); - virtual bool Save( wxGDIImage* pImage - ,const wxString& rName - ,int lType - ); + virtual bool Save( const wxGDIImage* pImage + ,const wxString& rName + ,wxBitmapType lType + ) const; private: + inline virtual bool Load( wxGDIImage* WXUNUSED(pImage) + ,const wxString& WXUNUSED(rName) + ,WXHANDLE WXUNUSED(hPs) + ,wxBitmapType WXUNUSED(lFlags) + ,int WXUNUSED(nDesiredWidth) + ,int WXUNUSED(nDesiredHeight) + ) + { return false; } DECLARE_DYNAMIC_CLASS(wxBitmapHandler) }; // end of CLASS wxBitmapHandler