]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/motif/bitmap.h
wxFileName::Get/SetTimes() finally seem to work under Windows
[wxWidgets.git] / include / wx / motif / bitmap.h
index 644039ef0ab051319241fca426dfb8624be71143..943f34cae15a25d150e8a49fa4582d2ce11f76c5 100644 (file)
@@ -27,38 +27,39 @@ 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.
 class WXDLLEXPORT wxMask: public wxObject
 {
-  DECLARE_DYNAMIC_CLASS(wxMask)
-
+    DECLARE_DYNAMIC_CLASS(wxMask)
+        
 public:
-  wxMask();
-
-  // 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 bitmap and a palette index indicating
-  // the transparent area
-  wxMask(const wxBitmap& bitmap, int paletteIndex);
-
-  // Construct a mask from a mono bitmap (copies the bitmap).
-  wxMask(const wxBitmap& bitmap);
-
-  ~wxMask();
-
-  bool Create(const wxBitmap& bitmap, const wxColour& colour);
-  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; }
-
+    wxMask();
+    
+    // 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 bitmap and a palette index indicating
+    // the transparent area
+    wxMask(const wxBitmap& bitmap, int paletteIndex);
+    
+    // Construct a mask from a mono bitmap (copies the bitmap).
+    wxMask(const wxBitmap& bitmap);
+    
+    ~wxMask();
+    
+    bool Create(const wxBitmap& bitmap, const wxColour& colour);
+    bool Create(const wxBitmap& bitmap, int paletteIndex);
+    bool Create(const wxBitmap& bitmap);
+    
+    WXPixmap GetPixmap() const { return m_pixmap; }
+    void SetPixmap(WXPixmap pixmap) { m_pixmap = pixmap; }
+    
 protected:
-  WXPixmap      m_pixmap;
+    WXPixmap      m_pixmap;
 };
 
 class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
@@ -69,143 +70,164 @@ class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
 public:
     wxBitmapRefData();
     ~wxBitmapRefData();
-
+    
 public:
-  int               m_width;
-  int               m_height;
-  int               m_depth;
-  bool              m_ok;
-  int               m_numColors;
-  wxPalette         m_bitmapPalette;
-  int               m_quality;
-
-  wxMask *          m_bitmapMask; // Optional mask
-
-  // Motif implementation
+    int               m_width;
+    int               m_height;
+    int               m_depth;
+    bool              m_ok;
+    int               m_numColors;
+    wxPalette         m_bitmapPalette;
+    int               m_quality;
+    
+    wxMask *          m_bitmapMask; // Optional mask
+    
+    // Motif implementation
 public:
-  WXPixmap          m_pixmap;
-  WXDisplay*        m_display;
-  bool              m_freePixmap;
-  unsigned long*    m_freeColors;
-  long              m_freeColorsCount;
-
-  // These 5 variables are for wxControl
-  WXPixmap          m_insensPixmap ;
-  WXPixmap          m_labelPixmap ;
-  WXPixmap          m_armPixmap ;
-  WXImage*          m_image ;
-  WXImage*          m_insensImage ;
+    WXPixmap          m_pixmap;
+    WXDisplay*        m_display;
+    bool              m_freePixmap;
+    unsigned long*    m_freeColors;
+    long              m_freeColorsCount;
+    
+    // These 5 variables are for wxControl
+    WXPixmap          m_insensPixmap ;
+    WXPixmap          m_labelPixmap ;
+    WXPixmap          m_armPixmap ;
+    WXImage*          m_image ;
+    WXImage*          m_insensImage ;
 };
 
 #define M_BITMAPDATA ((wxBitmapRefData *)m_refData)
 
 class WXDLLEXPORT wxBitmapHandler: public wxObject
 {
-  DECLARE_DYNAMIC_CLASS(wxBitmapHandler)
+    DECLARE_DYNAMIC_CLASS(wxBitmapHandler)
 public:
-  wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; };
-
-  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(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; }
+    wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; };
+    
+    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(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
+    
+    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;
-  long      m_type;
+    wxString  m_name;
+    wxString  m_extension;
+    long      m_type;
 };
 
 #define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData())
 
 class WXDLLEXPORT wxBitmap: public wxGDIObject
 {
-  DECLARE_DYNAMIC_CLASS(wxBitmap)
-
-  friend class WXDLLEXPORT wxBitmapHandler;
-
+    DECLARE_DYNAMIC_CLASS(wxBitmap)
+        
+        friend class WXDLLEXPORT wxBitmapHandler;
+    
 public:
-  wxBitmap(); // Platform-specific
-
-  // Copy constructors
-  inline 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);
-
-  // Initialize with XPM data
-  wxBitmap(char **data, wxControl* control = NULL);
-
-  // Load a file or resource
-  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);
-  ~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_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); }
-  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); }
-  void SetPalette(const wxPalette& palette);
-
-  inline 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; }
-
-  // Format handling
-  static inline wxList& GetHandlers() { return sm_handlers; }
-  static void AddHandler(wxBitmapHandler *handler);
-  static void InsertHandler(wxBitmapHandler *handler);
-  static bool RemoveHandler(const wxString& name);
-  static wxBitmapHandler *FindHandler(const wxString& name);
-  static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType);
-  static wxBitmapHandler *FindHandler(long bitmapType);
-
-  static void InitStandardHandlers();
-  static void CleanUpHandlers();
-
-  // Motif implementation
+    wxBitmap(); // Platform-specific
+    
+    // Copy constructors
+    wxBitmap(const wxBitmap& bitmap)
+    { Ref(bitmap); }
+    
+    // Initialize with raw XBM data
+    wxBitmap(const char bits[], int width, int height, int depth = 1);
+    
+    // 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);
+    
+    // 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);
+    
+    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);
+    
+    wxImage ConvertToImage() const;
+
+    // copies the contents and mask of the given (colour) icon to the bitmap
+    virtual bool CopyFromIcon(const wxIcon& icon);
+    
+    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);
+    
+    wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); }
+    void SetPalette(const wxPalette& palette);
+    
+    wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); }
+    void SetMask(wxMask *mask) ;
+    
+    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 wxList& GetHandlers() { return sm_handlers; }
+    static void AddHandler(wxBitmapHandler *handler);
+    static void InsertHandler(wxBitmapHandler *handler);
+    static bool RemoveHandler(const wxString& name);
+    static wxBitmapHandler *FindHandler(const wxString& name);
+    static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType);
+    static wxBitmapHandler *FindHandler(long bitmapType);
+    
+    static void InitStandardHandlers();
+    static void CleanUpHandlers();
+    
+    // Motif implementation
 public:
-  inline WXDisplay* GetDisplay() const { return M_BITMAPDATA->m_display; }
-  inline WXDisplay* GetPixmap() const { return M_BITMAPDATA->m_pixmap; }
-  virtual WXPixmap GetLabelPixmap(WXWidget w) ;
-  virtual WXPixmap GetArmPixmap(WXWidget w) ;
-  virtual WXPixmap GetInsensPixmap(WXWidget w = (WXWidget) 0) ;
-
+    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:
-  static wxList sm_handlers;
+    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(wxBitmap& bitmap, wxColour& colour);
+wxBitmap wxCreateMaskedBitmap(const wxBitmap& bitmap, wxColour& colour);
 
 #endif
-  // _WX_BITMAP_H_
+// _WX_BITMAP_H_