]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/motif/bitmap.h
implemented (untested) work around for wxScrolledWindow painting bug
[wxWidgets.git] / include / wx / motif / bitmap.h
index 644039ef0ab051319241fca426dfb8624be71143..785509cb695f6e5cb86308742ccf7a3291ef130e 100644 (file)
@@ -27,6 +27,7 @@ class WXDLLEXPORT wxBitmap;
 class WXDLLEXPORT wxBitmapHandler;
 class WXDLLEXPORT wxIcon;
 class WXDLLEXPORT wxCursor;
 class WXDLLEXPORT wxBitmapHandler;
 class WXDLLEXPORT wxIcon;
 class WXDLLEXPORT wxCursor;
+class WXDLLEXPORT wxImage;
 
 // A mask is a mono bitmap used for drawing bitmaps
 // transparently.
 
 // 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);
 
   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;
 
 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);
 
       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;
 protected:
   wxString  m_name;
   wxString  m_extension;
@@ -134,14 +135,18 @@ public:
   wxBitmap(); // Platform-specific
 
   // Copy constructors
   wxBitmap(); // Platform-specific
 
   // Copy constructors
-  inline wxBitmap(const wxBitmap& bitmap)
+  wxBitmap(const wxBitmap& bitmap)
   { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); }
 
   // Initialize with raw XBM data
   wxBitmap(const char bits[], int width, int height, int depth = 1);
 
   { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); }
 
   // 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_XPM);
 
   // Load a file or resource
   wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_XPM);
@@ -151,36 +156,45 @@ public:
 
   // If depth is omitted, will create a bitmap compatible with the display
   wxBitmap(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);
   ~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);
+   
+   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);
   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);
 
   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);
 
   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) ;
 
   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
 
   // 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);
   static void AddHandler(wxBitmapHandler *handler);
   static void InsertHandler(wxBitmapHandler *handler);
   static bool RemoveHandler(const wxString& name);
@@ -193,19 +207,24 @@ public:
 
   // Motif implementation
 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) ;
   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:
   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.
 };
 
 // Creates a bitmap with transparent areas drawn in
 // the given colour.
-wxBitmap wxCreateMaskedBitmap(wxBitmap& bitmap, wxColour& colour);
+wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, wxColour& colour);
 
 #endif
   // _WX_BITMAP_H_
 
 #endif
   // _WX_BITMAP_H_