X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1c4e8f384d7c9a2e1f31e9602917f2d1318de01f..4f2511d706e5274a34e1521e11c1b95fed735b42:/include/wx/bmpcbox.h?ds=sidebyside diff --git a/include/wx/bmpcbox.h b/include/wx/bmpcbox.h index 2de65ac579..08b1f4638d 100644 --- a/include/wx/bmpcbox.h +++ b/include/wx/bmpcbox.h @@ -18,7 +18,16 @@ #if wxUSE_BITMAPCOMBOBOX #include "wx/bitmap.h" +#include "wx/window.h" +class WXDLLIMPEXP_FWD_CORE wxItemContainer; + +// 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 wxChar) wxBitmapComboBoxNameStr[]; @@ -27,22 +36,87 @@ 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 }; -#include "wx/generic/bmpcbox.h" +#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