#ifndef _WX_BITMAP_H_
#define _WX_BITMAP_H_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "bitmap.h"
-#endif
-
#include "wx/palette.h"
// Bitmap
class WXDLLEXPORT wxMask: public wxObject
{
DECLARE_DYNAMIC_CLASS(wxMask)
- DECLARE_NO_COPY_CLASS(wxMask)
public:
wxMask();
+ // Copy constructor
+ wxMask(const wxMask& mask);
+
// Construct a mask from a bitmap and a colour indicating
// the transparent area
wxMask(const wxBitmap& bitmap, const wxColour& colour);
// Construct a mask from a mono bitmap (black meaning show pixels, white meaning transparent)
wxMask(const wxBitmap& bitmap);
- // implementation helper only : construct a mask from a 8 bit memory buffer
+ // implementation helper only : construct a mask from a 32 bit memory buffer
wxMask(const wxMemoryBuffer& buf, int width , int height , int bytesPerRow ) ;
- ~wxMask();
+ virtual ~wxMask();
bool Create(const wxBitmap& bitmap, const wxColour& colour);
bool Create(const wxBitmap& bitmap);
int GetBytesPerRow() const { return m_bytesPerRow ; }
// renders/updates native representation when necessary
void RealizeNative() ;
-#if !wxMAC_USE_CORE_GRAPHICS
+
WXHBITMAP GetHBITMAP() const ;
-#endif
+
private:
wxMemoryBuffer m_memBuf ;
int m_bytesPerRow ;
int m_width ;
int m_height ;
-#if !wxMAC_USE_CORE_GRAPHICS
+
WXHBITMAP m_maskBitmap ;
-#endif
+
};
-class WXDLLEXPORT wxBitmapHandler: public wxBitmapHandlerBase
+class WXDLLIMPEXP_CORE wxBitmapHandler: public wxBitmapHandlerBase
{
-public:
- wxBitmapHandler() { }
- virtual ~wxBitmapHandler();
-
- virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
- virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
- int desiredWidth, int desiredHeight);
- virtual bool SaveFile(const wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
-
-private:
- DECLARE_DYNAMIC_CLASS(wxBitmapHandler)
+ DECLARE_ABSTRACT_CLASS(wxBitmapHandler)
};
-#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData())
-
class WXDLLEXPORT wxBitmap: public wxBitmapBase
{
DECLARE_DYNAMIC_CLASS(wxBitmap)
public:
wxBitmap(); // Platform-specific
- // Copy constructors
- wxBitmap(const wxBitmap& bitmap)
- { Ref(bitmap); }
-
// Initialize with raw data.
wxBitmap(const char bits[], int width, int height, int depth = 1);
// Initialize with XPM data
- bool CreateFromXpm(const char **bits);
- wxBitmap(const char **bits);
- wxBitmap(char **bits);
+ wxBitmap(const char* const* bits);
// Load a file or resource
wxBitmap(const wxString& name, wxBitmapType type = wxBITMAP_TYPE_PICT_RESOURCE);
// Constructor for generalised creation from data
- wxBitmap(void *data, wxBitmapType type, int width, int height, int depth = 1);
+ wxBitmap(const void* data, wxBitmapType type, int width, int height, int depth = 1);
// If depth is omitted, will create a bitmap compatible with the display
wxBitmap(int width, int height, int depth = -1);
// Convert from wxIcon
wxBitmap(const wxIcon& icon) { CopyFromIcon(icon); }
- ~wxBitmap();
+ virtual ~wxBitmap();
wxImage ConvertToImage() const;
wxBitmap GetSubBitmap( const wxRect& rect ) const;
virtual bool Create(int width, int height, int depth = -1);
- virtual bool Create(void *data, wxBitmapType type, int width, int height, int depth = 1);
+ virtual bool Create(const void* data, wxBitmapType type, int width, int height, int depth = 1);
// virtual bool Create( WXHICON icon) ;
virtual bool LoadFile(const wxString& name, wxBitmapType type = wxBITMAP_TYPE_BMP_RESOURCE);
virtual bool SaveFile(const wxString& name, wxBitmapType type, const wxPalette *cmap = NULL) const;
// copies the contents and mask of the given (colour) icon to the bitmap
virtual bool CopyFromIcon(const wxIcon& icon);
- bool Ok() const;
+ bool Ok() const { return IsOk(); }
+ bool IsOk() const;
int GetWidth() const;
int GetHeight() const;
int GetDepth() const;
wxMask *GetMask() const;
void SetMask(wxMask *mask) ;
- inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; }
- inline bool operator == (const wxBitmap& bitmap) const { return m_refData == bitmap.m_refData; }
- inline bool operator != (const wxBitmap& bitmap) const { return m_refData != bitmap.m_refData; }
-
static void InitStandardHandlers();
// raw bitmap access support functions, for internal use only
bool HasAlpha() const;
void UseAlpha();
-#if !wxMAC_USE_CORE_GRAPHICS
// returns the 'native' implementation, a GWorldPtr for the content and one for the mask
WXHBITMAP GetHBITMAP( WXHBITMAP * mask = NULL ) const;
-#endif
-#if wxMAC_USE_CORE_GRAPHICS
+#ifdef __WXMAC_OSX__
// returns a CGImageRef which must released after usage with CGImageRelease
WXCGIMAGEREF CGImageCreate() const ;
#endif
// makes sure that no cached images will be constructed until terminated
void *BeginRawAccess() ;
void EndRawAccess() ;
+
+protected:
+ // ref counting code
+ virtual wxObjectRefData *CreateRefData() const;
+ virtual wxObjectRefData *CloneRefData(const wxObjectRefData *data) const;
};
#endif
// _WX_BITMAP_H_