]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/bmpcbox.h
emulate scrolling in wxMSW header control; document the need to call ScrollWindow...
[wxWidgets.git] / include / wx / bmpcbox.h
index 1cd4ea9371b8cf80d899ee40e72fee2be91135a3..f73f82e047818a62de72e1460cc915b89a04a7cc 100644 (file)
@@ -5,7 +5,7 @@
 // Modified by:
 // Created:     Aug-31-2006
 // Copyright:   (c) Jaakko Salli
-// RCS-ID:      $Id:
+// RCS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #if wxUSE_BITMAPCOMBOBOX
 
 #include "wx/bitmap.h"
+#include "wx/window.h"
 
+class WXDLLIMPEXP_FWD_CORE wxItemContainer;
 
-extern WXDLLIMPEXP_DATA_ADV(const wxChar) wxBitmapComboBoxNameStr[];
+// Define wxBITMAPCOMBOBOX_OWNERDRAWN_BASED for platforms which
+// wxBitmapComboBox implementation utilizes ownerdrawn combobox
+// (either native or generic).
+#if !defined(__WXGTK20__) || defined(__WXUNIVERSAL__)
+    #define wxBITMAPCOMBOBOX_OWNERDRAWN_BASED
+#endif
+
+extern WXDLLIMPEXP_DATA_ADV(const char) wxBitmapComboBoxNameStr[];
 
 
 class WXDLLIMPEXP_ADV wxBitmapComboBoxBase
 {
 public:
-
     // ctors and such
-    wxBitmapComboBoxBase() { }
+    wxBitmapComboBoxBase() { Init(); }
 
     virtual ~wxBitmapComboBoxBase() { }
 
-    // Returns the image of the item with the given index.
-    virtual wxBitmap GetItemBitmap(unsigned int n) const = 0;
-
     // Sets the image for the given item.
     virtual void SetItemBitmap(unsigned int n, const wxBitmap& bitmap) = 0;
 
+#if !defined(wxBITMAPCOMBOBOX_OWNERDRAWN_BASED)
+
+    // Returns the image of the item with the given index.
+    virtual wxBitmap GetItemBitmap(unsigned int n) const = 0;
+
     // Returns size of the image used in list
     virtual wxSize GetBitmapSize() const = 0;
 
+private:
+    void Init() {}
+
+#else // wxBITMAPCOMBOBOX_OWNERDRAWN_BASED
+
+    // Returns the image of the item with the given index.
+    virtual wxBitmap GetItemBitmap(unsigned int n) const;
+
+    // Returns size of the image used in list
+    virtual wxSize GetBitmapSize() const
+    {
+        return m_usedImgSize;
+    }
+
 protected:
 
+    // Returns pointer to the combobox item container
+    virtual wxItemContainer* GetItemContainer() = 0;
+
+    // Return pointer to the owner-drawn combobox control
+    virtual wxWindow* GetControl() = 0;
+
+    // wxItemContainer functions
+    void BCBDoClear();
+    void BCBDoDeleteOneItem(unsigned int n);
+
+    void DoSetItemBitmap(unsigned int n, const wxBitmap& bitmap);
+
+    void DrawBackground(wxDC& dc, const wxRect& rect, int item, int flags) const;
+    void DrawItem(wxDC& dc, const wxRect& rect, int item, const wxString& text,
+                  int flags) const;
+    wxCoord MeasureItem(size_t item) const;
+
+    // Returns true if image size was affected
+    virtual bool OnAddBitmap(const wxBitmap& bitmap);
+
+    // Recalculates amount of empty space needed in front of text
+    // in control itself. Returns number that can be passed to
+    // wxOwnerDrawnComboBox::SetCustomPaintWidth() and similar
+    // functions.
+    virtual int DetermineIndent();
+
+    void UpdateInternals();
+
+    wxArrayPtrVoid      m_bitmaps;  // Images associated with items
+    wxSize              m_usedImgSize;  // Size of bitmaps
+
+    int                 m_imgAreaWidth;  // Width and height of area next to text field
+    int                 m_fontHeight;
+    int                 m_indent;
+
 private:
+    void Init();
+#endif // !wxBITMAPCOMBOBOX_OWNERDRAWN_BASED/wxBITMAPCOMBOBOX_OWNERDRAWN_BASED
 };
 
 
 #if defined(__WXUNIVERSAL__)
     #include "wx/generic/bmpcbox.h"
+#elif defined(__WXMSW__)
+    #include "wx/msw/bmpcbox.h"
+#elif defined(__WXGTK20__)
+    #include "wx/gtk/bmpcbox.h"
 #else
     #include "wx/generic/bmpcbox.h"
 #endif
 
 #endif // wxUSE_BITMAPCOMBOBOX
 
-#endif
-    // _WX_BMPCBOX_H_BASE_
+#endif // _WX_BMPCBOX_H_BASE_