initial commit
Signed-off-by: Peter Siegmund <mars3142@noreply.mars3142.dev>
This commit is contained in:
481
libs/wxWidgets-3.3.1/include/wx/aui/tabart.h
Normal file
481
libs/wxWidgets-3.3.1/include/wx/aui/tabart.h
Normal file
@@ -0,0 +1,481 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/aui/tabart.h
|
||||
// Purpose: wxaui: wx advanced user interface - notebook
|
||||
// Author: Benjamin I. Williams
|
||||
// Modified by: Jens Lody (extracted from wx/aui/auibook.h)
|
||||
// Created: 2012-03-21
|
||||
// Copyright: (C) Copyright 2006, Kirix Corporation, All Rights Reserved.
|
||||
// Licence: wxWindows Library Licence, Version 3.1
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifndef _WX_AUI_TABART_H_
|
||||
#define _WX_AUI_TABART_H_
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_AUI
|
||||
|
||||
#include "wx/colour.h"
|
||||
#include "wx/gdicmn.h"
|
||||
#include "wx/font.h"
|
||||
#include "wx/pen.h"
|
||||
#include "wx/brush.h"
|
||||
#include "wx/bmpbndl.h"
|
||||
|
||||
#include "wx/aui/framemanager.h" // wxAuiPaneButtonState and wxAuiButtonId
|
||||
|
||||
#include <vector>
|
||||
|
||||
class wxAuiNotebookPage;
|
||||
class wxAuiNotebookPageArray;
|
||||
class wxAuiTabContainerButton;
|
||||
class wxWindow;
|
||||
class wxDC;
|
||||
class wxReadOnlyDC;
|
||||
|
||||
|
||||
// tab art class
|
||||
|
||||
class WXDLLIMPEXP_AUI wxAuiTabArt
|
||||
{
|
||||
public:
|
||||
|
||||
wxAuiTabArt() = default;
|
||||
virtual ~wxAuiTabArt() = default;
|
||||
|
||||
wxNODISCARD virtual wxAuiTabArt* Clone() = 0;
|
||||
virtual void SetFlags(unsigned int flags) = 0;
|
||||
|
||||
virtual void SetSizingInfo(const wxSize& tabCtrlSize,
|
||||
size_t tabCount,
|
||||
wxWindow* wnd = nullptr) = 0;
|
||||
|
||||
virtual void SetNormalFont(const wxFont& font) = 0;
|
||||
virtual void SetSelectedFont(const wxFont& font) = 0;
|
||||
virtual void SetMeasuringFont(const wxFont& font) = 0;
|
||||
virtual void SetColour(const wxColour& colour) = 0;
|
||||
virtual void SetActiveColour(const wxColour& colour) = 0;
|
||||
|
||||
// These functions should be overridden in the derived class to return the
|
||||
// actually used fonts, but they're not pure virtual for compatibility
|
||||
// reasons.
|
||||
virtual wxFont GetNormalFont() const { return wxFont{}; }
|
||||
virtual wxFont GetSelectedFont() const { return wxFont{}; }
|
||||
|
||||
virtual void DrawBorder(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) = 0;
|
||||
|
||||
virtual void DrawBackground(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) = 0;
|
||||
|
||||
// This function is not pure virtual for compatibility: if the derived
|
||||
// class implements DrawTab(), then its default implementation is
|
||||
// sufficient as long as pinned tabs are not used, but it must be
|
||||
// overridden if the program does use them and it should be overridden
|
||||
// instead of DrawTab() in the new code.
|
||||
virtual int DrawPageTab(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
wxAuiNotebookPage& page,
|
||||
const wxRect& rect);
|
||||
|
||||
// Override DrawPageTab() in the new code rather than this one.
|
||||
virtual void DrawTab(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& pane,
|
||||
const wxRect& inRect,
|
||||
int closeButtonState,
|
||||
wxRect* outTabRect,
|
||||
wxRect* outButtonRect,
|
||||
int* xExtent);
|
||||
|
||||
virtual void DrawButton(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect) = 0;
|
||||
|
||||
// This function relationship with GetTabSize() is similar as for DrawTab()
|
||||
// and DrawPageTab(): this one should be overridden when pinned tabs are
|
||||
// used, but doesn't have to be if they are not and GetTabSize() itself is
|
||||
// overridden for compatibility with the existing code.
|
||||
//
|
||||
// It also allows to omit "xExtent" parameter if it is not needed.
|
||||
virtual wxSize GetPageTabSize(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& page,
|
||||
int* xExtent = nullptr);
|
||||
|
||||
virtual wxSize GetTabSize(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxString& caption,
|
||||
const wxBitmapBundle& bitmap,
|
||||
bool active,
|
||||
int closeButtonState,
|
||||
int* xExtent);
|
||||
|
||||
// This function is not pure virtual because it is only for multi-line
|
||||
// tabs, but it must be implemented if wxAUI_NB_MULTILINE is used.
|
||||
//
|
||||
// If specified, the returned rectangle must be filled with the same value
|
||||
// as DrawButton() puts into its "outRect" but here it can also be null in
|
||||
// which case just its width is returned.
|
||||
virtual int GetButtonRect(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect = nullptr) /* = 0 */;
|
||||
|
||||
virtual int ShowDropDown(
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& items,
|
||||
int activeIdx) = 0;
|
||||
|
||||
virtual int GetIndentSize() = 0;
|
||||
|
||||
virtual int GetBorderWidth(
|
||||
wxWindow* wnd) = 0;
|
||||
|
||||
virtual int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd) = 0;
|
||||
|
||||
virtual int GetBestTabCtrlSize(
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmpSize) = 0;
|
||||
|
||||
// Provide opportunity for subclasses to recalculate colours
|
||||
virtual void UpdateColoursFromSystem() {}
|
||||
virtual void UpdateDpi() {}
|
||||
};
|
||||
|
||||
|
||||
// Base, still abstract, class for the concrete tab art classes below.
|
||||
class WXDLLIMPEXP_AUI wxAuiTabArtBase : public wxAuiTabArt
|
||||
{
|
||||
public:
|
||||
void SetFlags(unsigned int flags) override;
|
||||
|
||||
void SetSizingInfo(const wxSize& tabCtrlSize,
|
||||
size_t tabCount,
|
||||
wxWindow* wnd = nullptr) override;
|
||||
|
||||
void SetNormalFont(const wxFont& font) override;
|
||||
void SetSelectedFont(const wxFont& font) override;
|
||||
void SetMeasuringFont(const wxFont& font) override;
|
||||
|
||||
wxFont GetNormalFont() const override;
|
||||
wxFont GetSelectedFont() const override;
|
||||
|
||||
int GetButtonRect(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect) override;
|
||||
|
||||
void DrawButton(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect) override;
|
||||
|
||||
int ShowDropDown(
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& items,
|
||||
int activeIdx) override;
|
||||
|
||||
int GetBorderWidth(
|
||||
wxWindow* wnd) override;
|
||||
|
||||
int GetAdditionalBorderSpace(
|
||||
wxWindow* wnd) override;
|
||||
|
||||
void DrawBorder(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) override;
|
||||
|
||||
protected:
|
||||
// Ctor is protected, this class is only used as a base class.
|
||||
//
|
||||
// Remember to call InitBitmaps() after setting up the colours in the
|
||||
// derived class ctor.
|
||||
wxAuiTabArtBase();
|
||||
|
||||
// Initialize the bitmaps using the colours returned by GetButtonColour().
|
||||
void InitBitmaps();
|
||||
|
||||
// Return pointer to our bitmap bundle corresponding to the button ID and
|
||||
// state or null if we don't support this button or if it is hidden.
|
||||
const wxBitmapBundle*
|
||||
GetButtonBitmapBundle(const wxAuiTabContainerButton& button) const;
|
||||
|
||||
// Helper function for DrawButton() and GetButtonRect().
|
||||
bool DoGetButtonRectAndBitmap(
|
||||
wxWindow* wnd,
|
||||
const wxRect& inRect,
|
||||
int bitmapId,
|
||||
int buttonState,
|
||||
int orientation,
|
||||
wxRect* outRect,
|
||||
wxBitmap* outBitmap = nullptr);
|
||||
|
||||
|
||||
// Note: all these fields are protected for compatibility reasons, but
|
||||
// shouldn't be accessed directly.
|
||||
wxFont m_normalFont;
|
||||
wxFont m_selectedFont;
|
||||
wxFont m_measuringFont;
|
||||
|
||||
wxBitmapBundle m_activeCloseBmp;
|
||||
wxBitmapBundle m_disabledCloseBmp;
|
||||
wxBitmapBundle m_activeLeftBmp;
|
||||
wxBitmapBundle m_disabledLeftBmp;
|
||||
wxBitmapBundle m_activeRightBmp;
|
||||
wxBitmapBundle m_disabledRightBmp;
|
||||
wxBitmapBundle m_activeWindowListBmp;
|
||||
wxBitmapBundle m_disabledWindowListBmp;
|
||||
wxBitmapBundle m_activePinBmp;
|
||||
wxBitmapBundle m_disabledPinBmp;
|
||||
wxBitmapBundle m_activeUnpinBmp;
|
||||
wxBitmapBundle m_disabledUnpinBmp;
|
||||
|
||||
int m_fixedTabWidth;
|
||||
int m_tabCtrlHeight; // Unused, kept only for compatibility.
|
||||
unsigned int m_flags = 0;
|
||||
|
||||
private:
|
||||
// This is called by InitBitmaps().
|
||||
//
|
||||
// The state parameter is currently always either wxAUI_BUTTON_STATE_NORMAL
|
||||
// or wxAUI_BUTTON_STATE_DISABLED, but the function could be called with
|
||||
// other values in the future.
|
||||
virtual wxColour
|
||||
GetButtonColour(wxAuiButtonId button, wxAuiPaneButtonState state) const = 0;
|
||||
|
||||
// This is called by DrawButton().
|
||||
//
|
||||
// By default just draws the bitmap using wxDC::DrawBitmap().
|
||||
virtual void
|
||||
DrawButtonBitmap(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxBitmap& bmp,
|
||||
int buttonState);
|
||||
};
|
||||
|
||||
// This tab art provider draws flat tabs with a thin border.
|
||||
class WXDLLIMPEXP_AUI wxAuiFlatTabArt : public wxAuiTabArtBase
|
||||
{
|
||||
public:
|
||||
wxAuiFlatTabArt();
|
||||
virtual ~wxAuiFlatTabArt();
|
||||
|
||||
// Objects of this class are supposed to be used polymorphically, so
|
||||
// copying them is not allowed, use Clone() instead.
|
||||
wxAuiFlatTabArt(const wxAuiFlatTabArt&) = delete;
|
||||
wxAuiFlatTabArt& operator=(const wxAuiFlatTabArt&) = delete;
|
||||
|
||||
wxNODISCARD wxAuiTabArt* Clone() override;
|
||||
|
||||
void SetColour(const wxColour& colour) override;
|
||||
void SetActiveColour(const wxColour& colour) override;
|
||||
|
||||
void DrawBackground(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) override;
|
||||
|
||||
int DrawPageTab(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
wxAuiNotebookPage& page,
|
||||
const wxRect& rect) override;
|
||||
|
||||
int GetIndentSize() override;
|
||||
|
||||
wxSize GetPageTabSize(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& page,
|
||||
int* xExtent = nullptr) override;
|
||||
|
||||
int GetBestTabCtrlSize(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmpSize) override;
|
||||
|
||||
void UpdateColoursFromSystem() override;
|
||||
|
||||
private:
|
||||
// Private pseudo-copy ctor used by Clone().
|
||||
explicit wxAuiFlatTabArt(wxAuiFlatTabArt* other);
|
||||
|
||||
virtual wxColour
|
||||
GetButtonColour(wxAuiButtonId button,
|
||||
wxAuiPaneButtonState state) const override;
|
||||
|
||||
struct Data;
|
||||
Data* const m_data;
|
||||
};
|
||||
|
||||
|
||||
class WXDLLIMPEXP_AUI wxAuiGenericTabArt : public wxAuiTabArtBase
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
wxAuiGenericTabArt();
|
||||
|
||||
wxNODISCARD wxAuiTabArt* Clone() override;
|
||||
|
||||
void SetColour(const wxColour& colour) override;
|
||||
void SetActiveColour(const wxColour& colour) override;
|
||||
|
||||
void DrawBackground(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) override;
|
||||
|
||||
int DrawPageTab(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
wxAuiNotebookPage& page,
|
||||
const wxRect& rect) override;
|
||||
|
||||
int GetIndentSize() override;
|
||||
|
||||
wxSize GetPageTabSize(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& page,
|
||||
int* xExtent = nullptr) override;
|
||||
|
||||
int GetBestTabCtrlSize(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmpSize) override;
|
||||
|
||||
// Provide opportunity for subclasses to recalculate colours
|
||||
virtual void UpdateColoursFromSystem() override;
|
||||
|
||||
protected:
|
||||
|
||||
wxColour m_baseColour;
|
||||
wxPen m_baseColourPen;
|
||||
wxPen m_borderPen;
|
||||
wxBrush m_baseColourBrush;
|
||||
wxColour m_activeColour;
|
||||
|
||||
private:
|
||||
// Called from ctor and UpdateColoursFromSystem().
|
||||
void InitColours();
|
||||
|
||||
virtual wxColour
|
||||
GetButtonColour(wxAuiButtonId button,
|
||||
wxAuiPaneButtonState state) const override;
|
||||
};
|
||||
|
||||
|
||||
class WXDLLIMPEXP_AUI wxAuiSimpleTabArt : public wxAuiTabArtBase
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
wxAuiSimpleTabArt();
|
||||
|
||||
wxNODISCARD wxAuiTabArt* Clone() override;
|
||||
|
||||
void SetColour(const wxColour& colour) override;
|
||||
void SetActiveColour(const wxColour& colour) override;
|
||||
|
||||
void DrawBackground(
|
||||
wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxRect& rect) override;
|
||||
|
||||
void DrawTab(wxDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxAuiNotebookPage& pane,
|
||||
const wxRect& inRect,
|
||||
int closeButtonState,
|
||||
wxRect* outTabRect,
|
||||
wxRect* outButtonRect,
|
||||
int* xExtent) override;
|
||||
|
||||
int GetIndentSize() override;
|
||||
|
||||
wxSize GetTabSize(
|
||||
wxReadOnlyDC& dc,
|
||||
wxWindow* wnd,
|
||||
const wxString& caption,
|
||||
const wxBitmapBundle& bitmap,
|
||||
bool active,
|
||||
int closeButtonState,
|
||||
int* xExtent) override;
|
||||
|
||||
int GetBestTabCtrlSize(wxWindow* wnd,
|
||||
const wxAuiNotebookPageArray& pages,
|
||||
const wxSize& requiredBmpSize) override;
|
||||
|
||||
protected:
|
||||
|
||||
wxPen m_normalBkPen;
|
||||
wxPen m_selectedBkPen;
|
||||
wxBrush m_normalBkBrush;
|
||||
wxBrush m_selectedBkBrush;
|
||||
wxBrush m_bkBrush;
|
||||
|
||||
private:
|
||||
virtual wxColour
|
||||
GetButtonColour(wxAuiButtonId button,
|
||||
wxAuiPaneButtonState state) const override;
|
||||
|
||||
virtual void
|
||||
DrawButtonBitmap(wxDC& dc,
|
||||
const wxRect& rect,
|
||||
const wxBitmap& bmp,
|
||||
int buttonState) override;
|
||||
};
|
||||
|
||||
#ifndef __WXUNIVERSAL__
|
||||
#if defined(__WXGTK__) && !defined(__WXGTK3__)
|
||||
#define wxHAS_NATIVE_TABART
|
||||
#include "wx/aui/tabartgtk.h"
|
||||
using wxAuiNativeTabArt = wxAuiGtkTabArt;
|
||||
#elif defined(__WXMSW__) && wxUSE_UXTHEME
|
||||
#define wxHAS_NATIVE_TABART
|
||||
#include "wx/aui/tabartmsw.h"
|
||||
using wxAuiNativeTabArt = wxAuiMSWTabArt;
|
||||
#endif
|
||||
#endif // !__WXUNIVERSAL__
|
||||
|
||||
#ifndef wxHAS_NATIVE_TABART
|
||||
using wxAuiNativeTabArt = wxAuiGenericTabArt;
|
||||
#endif
|
||||
|
||||
#define wxAuiDefaultTabArt wxAuiFlatTabArt
|
||||
|
||||
#endif // wxUSE_AUI
|
||||
|
||||
#endif // _WX_AUI_TABART_H_
|
||||
Reference in New Issue
Block a user