X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0d57be459406c2830f6abc9d99ae99166c6d133b..b1d66b5415f7befb45e050d7097571642b8bfa56:/include/wx/motif/bitmap.h diff --git a/include/wx/motif/bitmap.h b/include/wx/motif/bitmap.h index 1fc2e134e6..d44ba42386 100644 --- a/include/wx/motif/bitmap.h +++ b/include/wx/motif/bitmap.h @@ -27,6 +27,7 @@ class WXDLLEXPORT wxBitmap; class WXDLLEXPORT wxBitmapHandler; class WXDLLEXPORT wxIcon; class WXDLLEXPORT wxCursor; +class WXDLLEXPORT wxImage; // A mask is a mono bitmap used for drawing bitmaps // transparently. @@ -54,8 +55,8 @@ public: bool Create(const wxBitmap& bitmap, int paletteIndex); bool Create(const wxBitmap& bitmap); - inline WXPixmap GetPixmap() const { return m_pixmap; } - inline void SetPixmap(WXPixmap pixmap) { m_pixmap = pixmap; } + WXPixmap GetPixmap() const { return m_pixmap; } + void SetPixmap(WXPixmap pixmap) { m_pixmap = pixmap; } protected: WXPixmap m_pixmap; @@ -110,12 +111,12 @@ public: int desiredWidth, int desiredHeight); virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } + void SetName(const wxString& name) { m_name = name; } + void SetExtension(const wxString& ext) { m_extension = ext; } + void SetType(long type) { m_type = type; } + wxString GetName() const { return m_name; } + wxString GetExtension() const { return m_extension; } + long GetType() const { return m_type; } protected: wxString m_name; wxString m_extension; @@ -134,54 +135,66 @@ public: wxBitmap(); // Platform-specific // Copy constructors - inline wxBitmap(const wxBitmap& bitmap) - { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - inline wxBitmap(const wxBitmap* bitmap) { if (bitmap) Ref(*bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } + wxBitmap(const wxBitmap& bitmap) + { Ref(bitmap); } // Initialize with raw XBM data wxBitmap(const char bits[], int width, int height, int depth = 1); - // Initialize with XPM data - wxBitmap(char **data, wxControl* control = NULL); + // from XPM + wxBitmap(const char **data) { (void)CreateFromXpm(data); } + wxBitmap(char **data) { (void)CreateFromXpm((const char **)data); } + + // Initialize with XPM data -- deprecated + wxBitmap(char **data, wxControl* control); // Load a file or resource - wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_XBM); + wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_XPM); // Constructor for generalised creation from data wxBitmap(void *data, long 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 wxImage: + wxBitmap(const wxImage& image, int depth = -1) { (void)CreateFromImage(image, depth); } + ~wxBitmap(); virtual bool Create(int width, int height, int depth = -1); virtual bool Create(void *data, long type, int width, int height, int depth = 1); - virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_XBM); + + wxBitmap GetSubBitmap( const wxRect& rect ) const; + + virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_XPM); virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL); - - inline bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } - inline int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } - inline int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } - inline int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } - inline int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } + + wxImage ConvertToImage() const; + + bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } + int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } + int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } + int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } + int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } void SetWidth(int w); void SetHeight(int h); void SetDepth(int d); void SetQuality(int q); void SetOk(bool isOk); - inline wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); } + wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); } void SetPalette(const wxPalette& palette); - inline wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); } + wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); } 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) { return m_refData == bitmap.m_refData; } - inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; } + wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; } + bool operator == (const wxBitmap& bitmap) const { return m_refData == bitmap.m_refData; } + bool operator != (const wxBitmap& bitmap) const { return m_refData != bitmap.m_refData; } // Format handling - static inline wxList& GetHandlers() { return sm_handlers; } + static wxList& GetHandlers() { return sm_handlers; } static void AddHandler(wxBitmapHandler *handler); static void InsertHandler(wxBitmapHandler *handler); static bool RemoveHandler(const wxString& name); @@ -194,14 +207,24 @@ public: // Motif implementation public: - inline WXDisplay* GetDisplay() const { return M_BITMAPDATA->m_display; } - inline WXDisplay* GetPixmap() const { return M_BITMAPDATA->m_pixmap; } + WXDisplay* GetDisplay() const { return M_BITMAPDATA->m_display; } + WXPixmap GetPixmap() const { return (WXPixmap) M_BITMAPDATA->m_pixmap; } virtual WXPixmap GetLabelPixmap(WXWidget w) ; virtual WXPixmap GetArmPixmap(WXWidget w) ; virtual WXPixmap GetInsensPixmap(WXWidget w = (WXWidget) 0) ; + void SetPixmapNull() { M_BITMAPDATA->m_pixmap = 0; } protected: static wxList sm_handlers; + +protected: + bool CreateFromXpm(const char **bits); + bool CreateFromImage(const wxImage& image, int depth); }; + +// Creates a bitmap with transparent areas drawn in +// the given colour. +wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, wxColour& colour); + #endif // _WX_BITMAP_H_