1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxBitmap class 
   4 // Author:      Stefan Csomor 
   8 // Copyright:   (c) Stefan Csomor 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  15 #include "wx/palette.h" 
  18 class WXDLLIMPEXP_FWD_CORE wxBitmap
; 
  19 class wxBitmapRefData 
; 
  20 class WXDLLIMPEXP_FWD_CORE wxBitmapHandler
; 
  21 class WXDLLIMPEXP_FWD_CORE wxControl
; 
  22 class WXDLLIMPEXP_FWD_CORE wxCursor
; 
  23 class WXDLLIMPEXP_FWD_CORE wxDC
; 
  24 class WXDLLIMPEXP_FWD_CORE wxIcon
; 
  25 class WXDLLIMPEXP_FWD_CORE wxImage
; 
  26 class WXDLLIMPEXP_FWD_CORE wxPixelDataBase
; 
  28 // A mask is a bitmap used for drawing bitmaps 
  29 // Internally it is stored as a 8 bit deep memory chunk, 0 = black means the source will be drawn 
  30 // 255 = white means the source will not be drawn, no other values will be present 
  31 // 8 bit is chosen only for performance reasons, note also that this is the inverse value range 
  32 // from alpha, where 0 = invisible , 255 = fully drawn 
  34 class WXDLLIMPEXP_CORE wxMask
: public wxObject
 
  36     DECLARE_DYNAMIC_CLASS(wxMask
) 
  42     wxMask(const wxMask
& mask
); 
  44     // Construct a mask from a bitmap and a colour indicating 
  45     // the transparent area 
  46     wxMask(const wxBitmap
& bitmap
, const wxColour
& colour
); 
  48     // Construct a mask from a mono bitmap (black meaning show pixels, white meaning transparent) 
  49     wxMask(const wxBitmap
& bitmap
); 
  51     // implementation helper only : construct a mask from a 32 bit memory buffer 
  52     wxMask(const wxMemoryBuffer
& buf
, int width 
, int height 
, int bytesPerRow 
) ; 
  56     bool Create(const wxBitmap
& bitmap
, const wxColour
& colour
); 
  57     bool Create(const wxBitmap
& bitmap
); 
  58     bool Create(const wxMemoryBuffer
& buf
, int width 
, int height 
, int bytesPerRow 
) ; 
  60     // Implementation below 
  65     void* GetRawAccess() const; 
  66     int GetBytesPerRow() const { return m_bytesPerRow 
; } 
  67     // renders/updates native representation when necessary 
  68     void RealizeNative() ; 
  70     WXHBITMAP 
GetHBITMAP() const ; 
  74     wxMemoryBuffer m_memBuf 
; 
  79     WXHBITMAP m_maskBitmap 
; 
  83 class WXDLLIMPEXP_CORE wxBitmap
: public wxBitmapBase
 
  85     DECLARE_DYNAMIC_CLASS(wxBitmap
) 
  87     friend class WXDLLIMPEXP_FWD_CORE wxBitmapHandler
; 
  90     wxBitmap(); // Platform-specific 
  92     // Initialize with raw data. 
  93     wxBitmap(const char bits
[], int width
, int height
, int depth 
= 1); 
  95     // Initialize with XPM data 
  96     wxBitmap(const char* const* bits
); 
  98     // Load a file or resource 
  99     wxBitmap(const wxString
& name
, wxBitmapType type 
= wxBITMAP_DEFAULT_TYPE
); 
 101     // Constructor for generalised creation from data 
 102     wxBitmap(const void* data
, wxBitmapType type
, int width
, int height
, int depth 
= 1); 
 104     // If depth is omitted, will create a bitmap compatible with the display 
 105     wxBitmap(int width
, int height
, int depth 
= -1); 
 107     // Convert from wxImage: 
 108     wxBitmap(const wxImage
& image
, int depth 
= -1); 
 110     // Convert from wxIcon 
 111     wxBitmap(const wxIcon
& icon
) { CopyFromIcon(icon
); } 
 115     wxImage 
ConvertToImage() const; 
 117     // get the given part of bitmap 
 118     wxBitmap 
GetSubBitmap( const wxRect
& rect 
) const; 
 120     virtual bool Create(int width
, int height
, int depth 
= -1); 
 121     virtual bool Create(const void* data
, wxBitmapType type
, int width
, int height
, int depth 
= 1); 
 122     // virtual bool Create( WXHICON icon) ; 
 123     virtual bool LoadFile(const wxString
& name
, wxBitmapType type 
= wxBITMAP_DEFAULT_TYPE
); 
 124     virtual bool SaveFile(const wxString
& name
, wxBitmapType type
, const wxPalette 
*cmap 
= NULL
) const; 
 126     wxBitmapRefData 
*GetBitmapData() const 
 127         { return (wxBitmapRefData 
*)m_refData
; } 
 129     // copies the contents and mask of the given (colour) icon to the bitmap 
 130     virtual bool CopyFromIcon(const wxIcon
& icon
); 
 132     int GetWidth() const; 
 133     int GetHeight() const; 
 134     int GetDepth() const; 
 135     void SetWidth(int w
); 
 136     void SetHeight(int h
); 
 137     void SetDepth(int d
); 
 138     void SetOk(bool isOk
); 
 141     wxPalette
* GetPalette() const; 
 142     void SetPalette(const wxPalette
& palette
); 
 143 #endif // wxUSE_PALETTE 
 145     wxMask 
*GetMask() const; 
 146     void SetMask(wxMask 
*mask
) ; 
 148     static void InitStandardHandlers(); 
 150     // raw bitmap access support functions, for internal use only 
 151     void *GetRawData(wxPixelDataBase
& data
, int bpp
); 
 152     void UngetRawData(wxPixelDataBase
& data
); 
 154     // these functions are internal and shouldn't be used, they risk to 
 155     // disappear in the future 
 156     bool HasAlpha() const; 
 159     // returns the 'native' implementation, a GWorldPtr for the content and one for the mask 
 160     WXHBITMAP 
GetHBITMAP( WXHBITMAP 
* mask 
= NULL 
) const; 
 162     // returns a CGImageRef which must released after usage with CGImageRelease 
 163     CGImageRef 
CreateCGImage() const ; 
 165 #if wxOSX_USE_COCOA_OR_IPHONE 
 166     // returns an autoreleased version of the image 
 167     WX_NSImage 
GetNSImage() const; 
 169     // returns a IconRef which must be retained before and released after usage 
 170     IconRef 
GetIconRef() const; 
 171     // returns a IconRef which must be released after usage 
 172     IconRef 
CreateIconRef() const; 
 173     // get read only access to the underlying buffer 
 174     void *GetRawAccess() const ; 
 175     // brackets to the underlying OS structure for read/write access 
 176     // makes sure that no cached images will be constructed until terminated 
 177     void *BeginRawAccess() ; 
 178     void EndRawAccess() ; 
 181     virtual wxGDIRefData 
*CreateGDIRefData() const; 
 182     virtual wxGDIRefData 
*CloneGDIRefData(const wxGDIRefData 
*data
) const; 
 185 #endif // _WX_BITMAP_H_