diff --git a/include/wx/aui/auibook.h b/include/wx/aui/auibook.h index 6f9cb231a2..84d968dd9b 100644 --- a/include/wx/aui/auibook.h +++ b/include/wx/aui/auibook.h @@ -91,7 +91,7 @@ public: wxWindow* window; // page's associated window wxString caption; // caption displayed on the tab wxString tooltip; // tooltip displayed when hovering over tab title - wxBitmap bitmap; // tab's bitmap + wxBitmapBundle bitmap;// tab's bitmap wxRect rect; // tab's hit rectangle bool active; // true if the page is currently active bool hover; // true if mouse hovering over tab @@ -104,8 +104,8 @@ public: int id; // button's id int curState; // current state (normal, hover, pressed, etc.) int location; // buttons location (wxLEFT, wxRIGHT, or wxCENTER) - wxBitmap bitmap; // button's hover bitmap - wxBitmap disBitmap; // button's disabled bitmap + wxBitmapBundle bitmap; // button's hover bitmap + wxBitmapBundle disBitmap; // button's disabled bitmap wxRect rect; // button's hit rectangle }; @@ -156,8 +156,8 @@ public: void RemoveButton(int id); void AddButton(int id, int location, - const wxBitmap& normalBitmap = wxNullBitmap, - const wxBitmap& disabledBitmap = wxNullBitmap); + const wxBitmapBundle& normalBitmap = wxBitmapBundle(), + const wxBitmapBundle& disabledBitmap = wxBitmapBundle()); size_t GetTabOffset() const; void SetTabOffset(size_t offset); @@ -279,13 +279,13 @@ public: bool AddPage(wxWindow* page, const wxString& caption, bool select = false, - const wxBitmap& bitmap = wxNullBitmap); + const wxBitmapBundle& bitmap = wxBitmapBundle()); bool InsertPage(size_t pageIdx, wxWindow* page, const wxString& caption, bool select = false, - const wxBitmap& bitmap = wxNullBitmap); + const wxBitmapBundle& bitmap = wxBitmapBundle()); bool DeletePage(size_t page) wxOVERRIDE; bool RemovePage(size_t page) wxOVERRIDE; @@ -300,7 +300,7 @@ public: bool SetPageToolTip(size_t page, const wxString& text); wxString GetPageToolTip(size_t pageIdx) const; - bool SetPageBitmap(size_t page, const wxBitmap& bitmap); + bool SetPageBitmap(size_t page, const wxBitmapBundle& bitmap); wxBitmap GetPageBitmap(size_t pageIdx) const; int SetSelection(size_t newPage) wxOVERRIDE; diff --git a/include/wx/aui/tabart.h b/include/wx/aui/tabart.h index d655ea6738..1dde8225da 100644 --- a/include/wx/aui/tabart.h +++ b/include/wx/aui/tabart.h @@ -25,7 +25,7 @@ #include "wx/font.h" #include "wx/pen.h" #include "wx/brush.h" -#include "wx/bitmap.h" +#include "wx/bmpbndl.h" class wxAuiNotebookPage; @@ -88,7 +88,7 @@ public: wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool active, int closeButtonState, int* xExtent) = 0; @@ -176,7 +176,7 @@ public: wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool active, int closeButtonState, int* xExtent) wxOVERRIDE; @@ -203,14 +203,14 @@ protected: wxPen m_borderPen; wxBrush m_baseColourBrush; wxColour m_activeColour; - wxBitmap m_activeCloseBmp; - wxBitmap m_disabledCloseBmp; - wxBitmap m_activeLeftBmp; - wxBitmap m_disabledLeftBmp; - wxBitmap m_activeRightBmp; - wxBitmap m_disabledRightBmp; - wxBitmap m_activeWindowListBmp; - wxBitmap m_disabledWindowListBmp; + wxBitmapBundle m_activeCloseBmp; + wxBitmapBundle m_disabledCloseBmp; + wxBitmapBundle m_activeLeftBmp; + wxBitmapBundle m_disabledLeftBmp; + wxBitmapBundle m_activeRightBmp; + wxBitmapBundle m_disabledRightBmp; + wxBitmapBundle m_activeWindowListBmp; + wxBitmapBundle m_disabledWindowListBmp; int m_fixedTabWidth; int m_tabCtrlHeight; @@ -279,7 +279,7 @@ public: wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool active, int closeButtonState, int* xExtent) wxOVERRIDE; @@ -303,14 +303,14 @@ protected: wxBrush m_normalBkBrush; wxBrush m_selectedBkBrush; wxBrush m_bkBrush; - wxBitmap m_activeCloseBmp; - wxBitmap m_disabledCloseBmp; - wxBitmap m_activeLeftBmp; - wxBitmap m_disabledLeftBmp; - wxBitmap m_activeRightBmp; - wxBitmap m_disabledRightBmp; - wxBitmap m_activeWindowListBmp; - wxBitmap m_disabledWindowListBmp; + wxBitmapBundle m_activeCloseBmp; + wxBitmapBundle m_disabledCloseBmp; + wxBitmapBundle m_activeLeftBmp; + wxBitmapBundle m_disabledLeftBmp; + wxBitmapBundle m_activeRightBmp; + wxBitmapBundle m_disabledRightBmp; + wxBitmapBundle m_activeWindowListBmp; + wxBitmapBundle m_disabledWindowListBmp; int m_fixedTabWidth; unsigned int m_flags; diff --git a/include/wx/aui/tabartgtk.h b/include/wx/aui/tabartgtk.h index 13f42cb4a8..5ba7a8168a 100644 --- a/include/wx/aui/tabartgtk.h +++ b/include/wx/aui/tabartgtk.h @@ -49,7 +49,7 @@ public: int GetBorderWidth(wxWindow* wnd) wxOVERRIDE; int GetAdditionalBorderSpace(wxWindow* wnd) wxOVERRIDE; virtual wxSize GetTabSize(wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, bool active, + const wxBitmapBundle& bitmap, bool active, int close_button_state, int* x_extent) wxOVERRIDE; }; diff --git a/include/wx/aui/tabartmsw.h b/include/wx/aui/tabartmsw.h index fd807a5688..32063af2a5 100644 --- a/include/wx/aui/tabartmsw.h +++ b/include/wx/aui/tabartmsw.h @@ -60,7 +60,7 @@ public: wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool active, int closeButtonState, int* xExtent) wxOVERRIDE; diff --git a/interface/wx/aui/auibook.h b/interface/wx/aui/auibook.h index bafebfba00..b85ff464a5 100644 --- a/interface/wx/aui/auibook.h +++ b/interface/wx/aui/auibook.h @@ -139,7 +139,7 @@ public: */ bool AddPage(wxWindow* page, const wxString& caption, bool select = false, - const wxBitmap& bitmap = wxNullBitmap); + const wxBitmapBundle& bitmap = wxBitmapBundle()); /** Adds a new page. @@ -272,7 +272,7 @@ public: bool InsertPage(size_t page_idx, wxWindow* page, const wxString& caption, bool select = false, - const wxBitmap& bitmap = wxNullBitmap); + const wxBitmapBundle& bitmap = wxBitmapBundle()); /** Inserts a new page at the specified position. @@ -326,9 +326,9 @@ public: /** Sets the bitmap for the page. To remove a bitmap from the tab caption, pass - wxNullBitmap. + an empty wxBitmapBundle. */ - bool SetPageBitmap(size_t page, const wxBitmap& bitmap); + bool SetPageBitmap(size_t page, const wxBitmapBundle& bitmap); /** Sets the image index for the given page. @a image is an index into @@ -445,7 +445,7 @@ public: wxWindow* window; // page's associated window wxString caption; // caption displayed on the tab wxString tooltip; // tooltip displayed when hovering over tab title - wxBitmap bitmap; // tab's bitmap + wxBitmapBundle bitmap;// tab's bitmap wxRect rect; // tab's hit rectangle bool active; // true if the page is currently active }; @@ -469,9 +469,9 @@ public: /// buttons location (wxLEFT, wxRIGHT, or wxCENTER) int location; /// button's hover bitmap - wxBitmap bitmap; + wxBitmapBundle bitmap; /// button's disabled bitmap - wxBitmap disBitmap; + wxBitmapBundle disBitmap; /// button's hit rectangle wxRect rect; }; @@ -539,8 +539,8 @@ public: void RemoveButton(int id); void AddButton(int id, int location, - const wxBitmap& normalBitmap = wxNullBitmap, - const wxBitmap& disabledBitmap = wxNullBitmap); + const wxBitmapBundle& normalBitmap = wxBitmapBundle(), + const wxBitmapBundle& disabledBitmap = wxBitmapBundle()); size_t GetTabOffset() const; void SetTabOffset(size_t offset); diff --git a/src/aui/auibook.cpp b/src/aui/auibook.cpp index ce4d654200..1f9cdef222 100644 --- a/src/aui/auibook.cpp +++ b/src/aui/auibook.cpp @@ -361,8 +361,8 @@ size_t wxAuiTabContainer::GetPageCount() const void wxAuiTabContainer::AddButton(int id, int location, - const wxBitmap& normalBitmap, - const wxBitmap& disabledBitmap) + const wxBitmapBundle& normalBitmap, + const wxBitmapBundle& disabledBitmap) { wxAuiTabContainerButton button; button.id = id; @@ -1963,7 +1963,7 @@ void wxAuiNotebook::SetWindowStyleFlag(long style) bool wxAuiNotebook::AddPage(wxWindow* page, const wxString& caption, bool select, - const wxBitmap& bitmap) + const wxBitmapBundle& bitmap) { return InsertPage(GetPageCount(), page, caption, select, bitmap); } @@ -1972,7 +1972,7 @@ bool wxAuiNotebook::InsertPage(size_t page_idx, wxWindow* page, const wxString& caption, bool select, - const wxBitmap& bitmap) + const wxBitmapBundle& bitmap) { wxASSERT_MSG(page, wxT("page pointer must be non-NULL")); if (!page) @@ -2230,7 +2230,7 @@ wxString wxAuiNotebook::GetPageToolTip(size_t page_idx) const return page_info.tooltip; } -bool wxAuiNotebook::SetPageBitmap(size_t page_idx, const wxBitmap& bitmap) +bool wxAuiNotebook::SetPageBitmap(size_t page_idx, const wxBitmapBundle& bitmap) { if (page_idx >= m_tabs.GetPageCount()) return false; @@ -2264,7 +2264,7 @@ wxBitmap wxAuiNotebook::GetPageBitmap(size_t page_idx) const // update our own tab catalog const wxAuiNotebookPage& page_info = m_tabs.GetPage(page_idx); - return page_info.bitmap; + return page_info.bitmap.GetBitmap(page_info.bitmap.GetDefaultSize()); } // GetSelection() returns the index of the currently active page @@ -3397,7 +3397,7 @@ int wxAuiNotebook::GetPageImage(size_t WXUNUSED(n)) const bool wxAuiNotebook::SetPageImage(size_t n, int imageId) { - return SetPageBitmap(n, GetImageList()->GetBitmap(imageId)); + return SetPageBitmap(n, GetBitmapBundle(imageId)); } int wxAuiNotebook::ChangeSelection(size_t n) @@ -3408,14 +3408,7 @@ int wxAuiNotebook::ChangeSelection(size_t n) bool wxAuiNotebook::AddPage(wxWindow *page, const wxString &text, bool select, int imageId) { - if(HasImageList()) - { - return AddPage(page, text, select, GetImageList()->GetBitmap(imageId)); - } - else - { - return AddPage(page, text, select, wxNullBitmap); - } + return AddPage(page, text, select, GetBitmapBundle(imageId)); } bool wxAuiNotebook::DeleteAllPages() @@ -3432,15 +3425,7 @@ bool wxAuiNotebook::InsertPage(size_t index, wxWindow *page, const wxString &text, bool select, int imageId) { - if(HasImageList()) - { - return InsertPage(index, page, text, select, - GetImageList()->GetBitmap(imageId)); - } - else - { - return InsertPage(index, page, text, select, wxNullBitmap); - } + return InsertPage(index, page, text, select, GetBitmapBundle(imageId)); } namespace diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index 7dd21f87c0..d451ab91aa 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -128,26 +128,6 @@ wxBitmap wxAuiBitmapFromBits(const unsigned char bits[], int w, int h, return wxBitmap(img); } -// A utility function to scales a bitmap in place for use at the given scale -// factor. -void wxAuiScaleBitmap(wxBitmap& bmp, double scale) -{ -#if wxUSE_IMAGE && !defined(__WXGTK3__) && !defined(__WXMAC__) - // scale to a close round number to improve quality - scale = floor(scale + 0.25); - if (scale > 1.0 && !(bmp.GetScaleFactor() > 1.0)) - { - wxImage img = bmp.ConvertToImage(); - img.Rescale(bmp.GetWidth()*scale, bmp.GetHeight()*scale, - wxIMAGE_QUALITY_BOX_AVERAGE); - bmp = wxBitmap(img); - } -#else - wxUnusedVar(bmp); - wxUnusedVar(scale); -#endif // wxUSE_IMAGE -} - static void DrawGradientRectangle(wxDC& dc, const wxRect& rect, const wxColour& start_color, @@ -805,8 +785,6 @@ void wxAuiDefaultDockArt::DrawPaneButton(wxDC& dc, break; } - wxAuiScaleBitmap(bmp, window->GetDPIScaleFactor()); - wxRect rect = _rect; rect.y = rect.y + (rect.height/2) - (bmp.GetScaledHeight()/2); diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index 44d2175753..ef12247cc7 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -71,7 +71,6 @@ wxBitmap wxAuiBitmapFromBits(const unsigned char bits[], int w, int h, const wxColour& color); // This function is defined in dockart.cpp. -void wxAuiScaleBitmap(wxBitmap& bmp, double scale); float wxAuiGetColourContrast(const wxColour& c1, const wxColour& c2); wxString wxAuiChopText(wxDC& dc, const wxString& text, int max_size); @@ -249,9 +248,9 @@ void wxAuiGenericTabArt::SetSizingInfo(const wxSize& tab_ctrl_size, int tot_width = (int)tab_ctrl_size.x - GetIndentSize() - wxWindow::FromDIP(4, NULL); if (m_flags & wxAUI_NB_CLOSE_BUTTON) - tot_width -= m_activeCloseBmp.GetScaledWidth(); + tot_width -= m_activeCloseBmp.GetPreferredSizeFor(wnd).x; if (m_flags & wxAUI_NB_WINDOWLIST_BUTTON) - tot_width -= m_activeWindowListBmp.GetScaledWidth(); + tot_width -= m_activeWindowListBmp.GetPreferredSizeFor(wnd).x; if (tab_count > 0) { @@ -559,13 +558,15 @@ void wxAuiGenericTabArt::DrawTab(wxDC& dc, { bitmap_offset = tab_x + wnd->FromDIP(8); + const wxBitmap bitmap = page.bitmap.GetBitmapFor(wnd); + // draw bitmap - dc.DrawBitmap(page.bitmap, + dc.DrawBitmap(bitmap, bitmap_offset, - drawn_tab_yoff + (drawn_tab_height/2) - (page.bitmap.GetScaledHeight()/2), + drawn_tab_yoff + (drawn_tab_height/2) - (bitmap.GetScaledHeight()/2), true); - text_offset = bitmap_offset + page.bitmap.GetScaledWidth(); + text_offset = bitmap_offset + bitmap.GetScaledWidth(); text_offset += wnd->FromDIP(3); // bitmap padding } else @@ -577,15 +578,15 @@ void wxAuiGenericTabArt::DrawTab(wxDC& dc, int close_button_width = 0; if (close_button_state != wxAUI_BUTTON_STATE_HIDDEN) { - wxBitmap bmp = m_disabledCloseBmp; + wxBitmapBundle bb = m_disabledCloseBmp; if (close_button_state == wxAUI_BUTTON_STATE_HOVER || close_button_state == wxAUI_BUTTON_STATE_PRESSED) { - bmp = m_activeCloseBmp; + bb = m_activeCloseBmp; } - wxAuiScaleBitmap(bmp, wnd->GetDPIScaleFactor()); + const wxBitmap bmp = bb.GetBitmapFor(wnd); int offsetY = tab_y-1; if (m_flags & wxAUI_NB_BOTTOM) @@ -627,8 +628,12 @@ void wxAuiGenericTabArt::DrawTab(wxDC& dc, wxRect focusRectBitmap; if (page.bitmap.IsOk()) - focusRectBitmap = wxRect(bitmap_offset, drawn_tab_yoff + (drawn_tab_height/2) - (page.bitmap.GetScaledHeight()/2), - page.bitmap.GetScaledWidth(), page.bitmap.GetScaledHeight()); + { + const wxBitmap bitmap = page.bitmap.GetBitmapFor(wnd); + + focusRectBitmap = wxRect(bitmap_offset, drawn_tab_yoff + (drawn_tab_height/2) - (bitmap.GetScaledHeight()/2), + bitmap.GetScaledWidth(), bitmap.GetScaledHeight()); + } if (page.bitmap.IsOk() && draw_text.IsEmpty()) focusRect = focusRectBitmap; @@ -672,7 +677,7 @@ int wxAuiGenericTabArt::GetAdditionalBorderSpace(wxWindow* WXUNUSED(wnd)) wxSize wxAuiGenericTabArt::GetTabSize(wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool WXUNUSED(active), int close_button_state, int* x_extent) @@ -692,15 +697,17 @@ wxSize wxAuiGenericTabArt::GetTabSize(wxDC& dc, if (close_button_state != wxAUI_BUTTON_STATE_HIDDEN) { // increase by button size plus the padding - tab_width += m_activeCloseBmp.GetScaledWidth() + wnd->FromDIP(3); + tab_width += m_activeCloseBmp.GetBitmapFor(wnd).GetScaledWidth() + wnd->FromDIP(3); } // if there's a bitmap, add space for it if (bitmap.IsOk()) { + const wxSize bitmapSize = bitmap.GetPreferredSizeFor(wnd); + // increase by bitmap plus right side bitmap padding - tab_width += bitmap.GetScaledWidth() + wnd->FromDIP(3); - tab_height = wxMax(tab_height, bitmap.GetScaledHeight()); + tab_width += bitmapSize.x + wnd->FromDIP(3); + tab_height = wxMax(tab_height, bitmapSize.y); } // add padding @@ -727,42 +734,42 @@ void wxAuiGenericTabArt::DrawButton(wxDC& dc, int orientation, wxRect* out_rect) { - wxBitmap bmp; + wxBitmapBundle bb; wxRect rect; switch (bitmap_id) { case wxAUI_BUTTON_CLOSE: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledCloseBmp; + bb = m_disabledCloseBmp; else - bmp = m_activeCloseBmp; + bb = m_activeCloseBmp; break; case wxAUI_BUTTON_LEFT: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledLeftBmp; + bb = m_disabledLeftBmp; else - bmp = m_activeLeftBmp; + bb = m_activeLeftBmp; break; case wxAUI_BUTTON_RIGHT: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledRightBmp; + bb = m_disabledRightBmp; else - bmp = m_activeRightBmp; + bb = m_activeRightBmp; break; case wxAUI_BUTTON_WINDOWLIST: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledWindowListBmp; + bb = m_disabledWindowListBmp; else - bmp = m_activeWindowListBmp; + bb = m_activeWindowListBmp; break; } - if (!bmp.IsOk()) + if (!bb.IsOk()) return; - wxAuiScaleBitmap(bmp, wnd->GetDPIScaleFactor()); + const wxBitmap bmp = bb.GetBitmapFor(wnd); rect = in_rect; @@ -808,7 +815,7 @@ int wxAuiGenericTabArt::ShowDropDown(wxWindow* wnd, wxMenuItem* item = new wxMenuItem(NULL, 1000+i, caption); if (page.bitmap.IsOk()) - item->SetBitmap(page.bitmap); + item->SetBitmap(page.bitmap.GetBitmapFor(wnd)); menuPopup.Append(item); } @@ -856,7 +863,7 @@ int wxAuiGenericTabArt::GetBestTabCtrlSize(wxWindow* wnd, { wxAuiNotebookPage& page = pages.Item(i); - wxBitmap bmp; + wxBitmapBundle bmp; if (measureBmp.IsOk()) bmp = measureBmp; else @@ -972,9 +979,9 @@ void wxAuiSimpleTabArt::SetSizingInfo(const wxSize& tab_ctrl_size, int tot_width = (int)tab_ctrl_size.x - GetIndentSize() - wxWindow::FromDIP(4, NULL); if (m_flags & wxAUI_NB_CLOSE_BUTTON) - tot_width -= m_activeCloseBmp.GetScaledWidth(); + tot_width -= m_activeCloseBmp.GetBitmapFor(wnd).GetScaledWidth(); if (m_flags & wxAUI_NB_WINDOWLIST_BUTTON) - tot_width -= m_activeWindowListBmp.GetScaledWidth(); + tot_width -= m_activeWindowListBmp.GetBitmapFor(wnd).GetScaledWidth(); if (tab_count > 0) { @@ -1133,13 +1140,10 @@ void wxAuiSimpleTabArt::DrawTab(wxDC& dc, // draw close button if necessary if (close_button_state != wxAUI_BUTTON_STATE_HIDDEN) { - wxBitmap bmp; - if (page.active) - bmp = m_activeCloseBmp; - else - bmp = m_disabledCloseBmp; + const wxBitmapBundle bb(page.active ? m_activeCloseBmp + : m_disabledCloseBmp); - wxAuiScaleBitmap(bmp, wnd->GetDPIScaleFactor()); + const wxBitmap bmp = bb.GetBitmapFor(wnd); wxRect rect(tab_x + tab_width - bmp.GetScaledWidth() - 1, tab_y + (tab_height/2) - (bmp.GetScaledHeight()/2) + 1, @@ -1215,7 +1219,7 @@ int wxAuiSimpleTabArt::GetAdditionalBorderSpace(wxWindow* WXUNUSED(wnd)) wxSize wxAuiSimpleTabArt::GetTabSize(wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& WXUNUSED(bitmap), + const wxBitmapBundle& WXUNUSED(bitmap), bool WXUNUSED(active), int close_button_state, int* x_extent) @@ -1231,7 +1235,7 @@ wxSize wxAuiSimpleTabArt::GetTabSize(wxDC& dc, if (close_button_state != wxAUI_BUTTON_STATE_HIDDEN) { // increase by button size plus the padding - tab_width += m_activeCloseBmp.GetScaledWidth() + wnd->FromDIP(3); + tab_width += m_activeCloseBmp.GetBitmapFor(wnd).GetScaledWidth() + wnd->FromDIP(3); } if (m_flags & wxAUI_NB_TAB_FIXED_WIDTH) @@ -1253,41 +1257,41 @@ void wxAuiSimpleTabArt::DrawButton(wxDC& dc, int orientation, wxRect* out_rect) { - wxBitmap bmp; + wxBitmapBundle bb; wxRect rect; switch (bitmap_id) { case wxAUI_BUTTON_CLOSE: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledCloseBmp; + bb = m_disabledCloseBmp; else - bmp = m_activeCloseBmp; + bb = m_activeCloseBmp; break; case wxAUI_BUTTON_LEFT: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledLeftBmp; + bb = m_disabledLeftBmp; else - bmp = m_activeLeftBmp; + bb = m_activeLeftBmp; break; case wxAUI_BUTTON_RIGHT: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledRightBmp; + bb = m_disabledRightBmp; else - bmp = m_activeRightBmp; + bb = m_activeRightBmp; break; case wxAUI_BUTTON_WINDOWLIST: if (button_state & wxAUI_BUTTON_STATE_DISABLED) - bmp = m_disabledWindowListBmp; + bb = m_disabledWindowListBmp; else - bmp = m_activeWindowListBmp; + bb = m_activeWindowListBmp; break; } - if (!bmp.IsOk()) + if (!bb.IsOk()) return; - wxAuiScaleBitmap(bmp, wnd->GetDPIScaleFactor()); + const wxBitmap bmp = bb.GetBitmapFor(wnd); rect = in_rect; diff --git a/src/aui/tabartgtk.cpp b/src/aui/tabartgtk.cpp index 7f08f7201a..eedb1caedc 100644 --- a/src/aui/tabartgtk.cpp +++ b/src/aui/tabartgtk.cpp @@ -310,8 +310,10 @@ void wxAuiGtkTabArt::DrawTab(wxDC& dc, wxWindow* wnd, const wxAuiNotebookPage& p int bitmap_offset; bitmap_offset = textX; + const wxBitmap bitmap = page.bitmap.GetBitmapFor(wnd); + // draw bitmap - int bitmapY = tab_rect.y +(tab_rect.height - page.bitmap.GetScaledHeight()) / 2; + int bitmapY = tab_rect.y +(tab_rect.height - bitmap.GetScaledHeight()) / 2; if(!page.active) { if (tab_pos == wxAUI_NB_TOP) @@ -319,12 +321,12 @@ void wxAuiGtkTabArt::DrawTab(wxDC& dc, wxWindow* wnd, const wxAuiNotebookPage& p else bitmapY -= style_notebook->ythickness / 2; } - dc.DrawBitmap(page.bitmap, + dc.DrawBitmap(bitmap, bitmap_offset, bitmapY, true); - textX += page.bitmap.GetScaledWidth() + padding; + textX += bitmap.GetScaledWidth() + padding; } wxCoord textW, textH, textY; @@ -490,7 +492,7 @@ int wxAuiGtkTabArt::GetAdditionalBorderSpace(wxWindow* wnd) wxSize wxAuiGtkTabArt::GetTabSize(wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool active, int close_button_state, int* x_extent) diff --git a/src/aui/tabartmsw.cpp b/src/aui/tabartmsw.cpp index d2f0b5733d..52c9091543 100644 --- a/src/aui/tabartmsw.cpp +++ b/src/aui/tabartmsw.cpp @@ -204,7 +204,7 @@ void wxAuiMSWTabArt::DrawTab(wxDC& dc, dc.SetFont(wnd->GetFont()); dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNTEXT)); - dc.DrawLabel(page.caption, page.bitmap, textRect, wxALIGN_CENTRE); + dc.DrawLabel(page.caption, page.bitmap.GetBitmapFor(wnd), textRect, wxALIGN_CENTRE); // draw focus rectangle if ( page.active && (wnd->FindFocus() == wnd) ) @@ -276,7 +276,7 @@ int wxAuiMSWTabArt::GetAdditionalBorderSpace(wxWindow* wnd) wxSize wxAuiMSWTabArt::GetTabSize(wxDC& dc, wxWindow* wnd, const wxString& caption, - const wxBitmap& bitmap, + const wxBitmapBundle& bitmap, bool active, int close_button_state, int* x_extent) @@ -306,8 +306,10 @@ wxSize wxAuiMSWTabArt::GetTabSize(wxDC& dc, // if there's a bitmap, add space for it if ( bitmap.IsOk() ) { - tabWidth += bitmap.GetWidth() + wnd->FromDIP(3); // bitmap padding - tabHeight = wxMax(tabHeight, bitmap.GetHeight() + wnd->FromDIP(2)); + const wxSize bitmapSize = bitmap.GetPreferredSizeFor(wnd); + + tabWidth += bitmapSize.x + wnd->FromDIP(3); // bitmap padding + tabHeight = wxMax(tabHeight, bitmapSize.y + wnd->FromDIP(2)); } // add padding