X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/95a4630380511f5e747b1465bf4834e5fac3d515..0ce8e27f685bf14f9e37130b3ee9ac9b8b7d692a:/include/wx/bmpcbox.h diff --git a/include/wx/bmpcbox.h b/include/wx/bmpcbox.h index 1cd4ea9371..f73f82e047 100644 --- a/include/wx/bmpcbox.h +++ b/include/wx/bmpcbox.h @@ -5,7 +5,7 @@ // Modified by: // Created: Aug-31-2006 // Copyright: (c) Jaakko Salli -// RCS-ID: $Id: +// RCS-ID: $Id$ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -18,42 +18,106 @@ #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_