From 6a74df339133bfec421cb62b65213bbba0f3a7d8 Mon Sep 17 00:00:00 2001 From: Rebekah Rowe Date: Fri, 22 Apr 2022 23:26:14 -0400 Subject: [PATCH] Introduced const --- include/libpdw/gui/canvas.hpp | 4 +-- include/libpdw/gui/listmenu/itemsublist.hpp | 2 +- include/libpdw/gui/listmenu/itemvariable.hpp | 2 +- include/libpdw/gui/ncc/background.hpp | 2 +- include/libpdw/gui/ncc/logo.hpp | 2 +- include/libpdw/gui/widgets/basewidget.hpp | 35 ++++++++++---------- include/libpdw/gui/widgets/iwidget.hpp | 33 +++++++++--------- include/libpdw/gui/widgets/keyinput.hpp | 2 +- src/gui/canvas.cpp | 4 +-- src/gui/listmenu/itemsublist.cpp | 2 +- src/gui/listmenu/itemvariable.cpp | 2 +- src/gui/ncc/background.cpp | 2 +- src/gui/ncc/logo.cpp | 2 +- src/gui/tooltip.hpp | 2 +- src/gui/widgets/basewidget.cpp | 19 ++++++++--- src/gui/widgets/keyinput.cpp | 2 +- src/gui/widgets/textlabel.cpp | 2 +- 17 files changed, 65 insertions(+), 54 deletions(-) diff --git a/include/libpdw/gui/canvas.hpp b/include/libpdw/gui/canvas.hpp index 7d38f83..69d51de 100644 --- a/include/libpdw/gui/canvas.hpp +++ b/include/libpdw/gui/canvas.hpp @@ -44,11 +44,11 @@ public: [[deprecated]] int mouse_dy; bool fake_scroll = false; - glez::rgba GetColor(); + glez::rgba GetColor() const; bool gui_rainbow = true; glez::rgba gui_color; - glez::font& GetFont(); + const glez::font& GetFont() const; virtual void Update() override; virtual void OnKeyPress(CatKey key, bool repeat) override; diff --git a/include/libpdw/gui/listmenu/itemsublist.hpp b/include/libpdw/gui/listmenu/itemsublist.hpp index 1cad705..31873b5 100644 --- a/include/libpdw/gui/listmenu/itemsublist.hpp +++ b/include/libpdw/gui/listmenu/itemsublist.hpp @@ -33,7 +33,7 @@ public: ItemSublist(std::string title, List* list); virtual void SetParent(IWidget*) override; - virtual bool IsHovered() override; + virtual bool IsHovered() const override; virtual void Update() override; virtual void Draw(int x, int y) override; virtual void OnKeyPress(CatKey code, bool repeated) override; diff --git a/include/libpdw/gui/listmenu/itemvariable.hpp b/include/libpdw/gui/listmenu/itemvariable.hpp index 27d39b2..7e3cee6 100644 --- a/include/libpdw/gui/listmenu/itemvariable.hpp +++ b/include/libpdw/gui/listmenu/itemvariable.hpp @@ -34,7 +34,7 @@ public: void Change(float amount); virtual void Update() override; - virtual bool ConsumesKey(CatKey key) override; + virtual bool ConsumesKey(CatKey key) const override; virtual void OnMousePress() override; virtual void OnFocusLose() override; virtual void OnKeyPress(CatKey key, bool repeat) override; diff --git a/include/libpdw/gui/ncc/background.hpp b/include/libpdw/gui/ncc/background.hpp index fd3f403..14e0d2a 100644 --- a/include/libpdw/gui/ncc/background.hpp +++ b/include/libpdw/gui/ncc/background.hpp @@ -41,7 +41,7 @@ public: public: Background(); ~Background(); - virtual bool AlwaysVisible() override; + virtual bool AlwaysVisible() const override; virtual void Draw(int x, int y) override; virtual void Update() override; void MakeParticle(); diff --git a/include/libpdw/gui/ncc/logo.hpp b/include/libpdw/gui/ncc/logo.hpp index cc6882f..783547c 100644 --- a/include/libpdw/gui/ncc/logo.hpp +++ b/include/libpdw/gui/ncc/logo.hpp @@ -28,7 +28,7 @@ namespace ncc { class Logo : public CBaseWidget { public: Logo(IWidget*); - virtual bool AlwaysVisible() override; + virtual bool AlwaysVisible() const override; virtual void Draw(int x, int y) override; virtual void OnMouseMove(std::pair) override; glez::texture texture; diff --git a/include/libpdw/gui/widgets/basewidget.hpp b/include/libpdw/gui/widgets/basewidget.hpp index c598349..c5f389e 100644 --- a/include/libpdw/gui/widgets/basewidget.hpp +++ b/include/libpdw/gui/widgets/basewidget.hpp @@ -37,7 +37,7 @@ public: inline virtual void Draw(int x, int y) {}; virtual void DrawBounds(int x, int y); - inline virtual KeyValues* Props() { + inline virtual KeyValues* Props() const { return m_KeyValues; } @@ -53,19 +53,19 @@ public: inline virtual void HandleCustomEvent(std::string_view event) {}; - inline virtual bool ConsumesKey(CatKey key) { return false; } + inline virtual bool ConsumesKey(CatKey key) const { return false; } - inline virtual bool AlwaysVisible() { return this->always_visible; } + inline virtual bool AlwaysVisible() const { return this->always_visible; } inline virtual void Show() { this->visible = true; } inline virtual void Hide() { this->visible = false; } - virtual bool IsVisible(); + virtual bool IsVisible() const; - virtual bool IsHovered(); - virtual bool IsFocused(); - virtual bool IsPressed(); + virtual bool IsHovered() const; + virtual bool IsFocused() const; + virtual bool IsPressed() const; - inline virtual bool DoesStealFocus() { return true; } + inline virtual bool DoesStealFocus() const { return true; } inline virtual void SetOffset(int x, int y) { if (x >= 0) @@ -79,28 +79,29 @@ public: if (y >= 0) this->max_size.second = y; } - inline virtual std::pair GetOffset() { + inline virtual std::pair GetOffset() const { return this->offset; } - inline virtual std::pair GetSize() { + inline virtual std::pair GetSize() const { return this->size; } - inline virtual std::pair GetMaxSize() { + inline virtual std::pair GetMaxSize() const { return this->max_size; } - inline virtual int GetZIndex() { return this->zindex; } + inline virtual int GetZIndex() const { return this->zindex; } inline virtual void SetZIndex(int idx) { this->zindex = idx; } - inline virtual std::string GetTooltip() { return this->tooltip; } + inline virtual std::string GetTooltip() const { return this->tooltip; } - inline virtual PositionMode GetPositionMode() { return this->positionmode; } + inline virtual PositionMode GetPositionMode() const { return this->positionmode; } inline virtual void SetPositionMode(PositionMode mode) { this->positionmode = mode; }; - inline virtual IWidget* GetParent() { return m_pParent; } + inline virtual IWidget* GetParent() const { return m_pParent; } inline virtual void SetParent(IWidget* parent) { m_pParent = parent; } - inline virtual std::string GetName() { return this->name; } + inline virtual std::string GetName() const { return this->name; } + virtual const Canvas* GetCanvas() const; virtual Canvas* GetCanvas(); - std::pair AbsolutePosition(); + std::pair AbsolutePosition() const; inline void SetSize(int x, int y) { if (x >= 0) this->size.first = x; diff --git a/include/libpdw/gui/widgets/iwidget.hpp b/include/libpdw/gui/widgets/iwidget.hpp index a0b2e01..f3cc52c 100644 --- a/include/libpdw/gui/widgets/iwidget.hpp +++ b/include/libpdw/gui/widgets/iwidget.hpp @@ -42,7 +42,7 @@ public: virtual void Draw(int x, int y) = 0; virtual void DrawBounds(int x, int y) = 0; - virtual KeyValues* Props() = 0; + virtual KeyValues* Props() const = 0; virtual void OnMouseEnter() = 0; virtual void OnMouseLeave() = 0; @@ -56,36 +56,37 @@ public: virtual void HandleCustomEvent(std::string_view event) = 0; - virtual bool ConsumesKey(CatKey key) = 0; + virtual bool ConsumesKey(CatKey key) const = 0; // Widget will be visible even when gui is turned off - virtual bool AlwaysVisible() = 0; + virtual bool AlwaysVisible() const = 0; virtual void Show() = 0; virtual void Hide() = 0; - virtual bool IsVisible() = 0; + virtual bool IsVisible() const = 0; - virtual bool IsHovered() = 0; - virtual bool IsFocused() = 0; - virtual bool IsPressed() = 0; + virtual bool IsHovered() const = 0; + virtual bool IsFocused() const = 0; + virtual bool IsPressed() const = 0; - virtual bool DoesStealFocus() = 0; + virtual bool DoesStealFocus() const = 0; virtual void SetOffset(int x, int y) = 0; virtual void SetMaxSize(int x, int y) = 0; virtual void SetSize(int x, int y) = 0; - virtual std::pair GetOffset() = 0; - virtual std::pair GetSize() = 0; - virtual std::pair GetMaxSize() = 0; - virtual int GetZIndex() = 0; + virtual std::pair GetOffset() const = 0; + virtual std::pair GetSize() const = 0; + virtual std::pair GetMaxSize() const = 0; + virtual int GetZIndex() const = 0; virtual void SetZIndex(int idx) = 0; - virtual std::string GetTooltip() = 0; + virtual std::string GetTooltip() const = 0; - virtual PositionMode GetPositionMode() = 0; + virtual PositionMode GetPositionMode() const = 0; virtual void SetPositionMode(PositionMode) = 0; - virtual IWidget* GetParent() = 0; + virtual IWidget* GetParent() const = 0; virtual void SetParent(IWidget*) = 0; - virtual std::string GetName() = 0; + virtual std::string GetName() const = 0; + virtual const Canvas* GetCanvas() const = 0; virtual Canvas* GetCanvas() = 0; }; diff --git a/include/libpdw/gui/widgets/keyinput.hpp b/include/libpdw/gui/widgets/keyinput.hpp index c430fd6..1216821 100644 --- a/include/libpdw/gui/widgets/keyinput.hpp +++ b/include/libpdw/gui/widgets/keyinput.hpp @@ -41,7 +41,7 @@ public: virtual void Draw(int x, int y) override; virtual void OnMousePress() override; virtual void OnFocusLose() override; - virtual bool ConsumesKey(CatKey key) override; + virtual bool ConsumesKey(CatKey key) const override; bool capturing; int value; }; diff --git a/src/gui/canvas.cpp b/src/gui/canvas.cpp index 1536733..771ee1f 100644 --- a/src/gui/canvas.cpp +++ b/src/gui/canvas.cpp @@ -222,10 +222,10 @@ static glez::rgba RainbowCurrent() { return FromHSL(fabs(sin(ctime.count())) * 360.0f, 0.85f, 0.9f); } -glez::rgba Canvas::GetColor() { +glez::rgba Canvas::GetColor() const { return gui_rainbow ? RainbowCurrent() : gui_color; } -glez::font& Canvas::GetFont() { +const glez::font& Canvas::GetFont() const { return this->font; } void Canvas::OnKeyPress(CatKey key, bool repeat) { diff --git a/src/gui/listmenu/itemsublist.cpp b/src/gui/listmenu/itemsublist.cpp index df53fcf..5fe8e52 100644 --- a/src/gui/listmenu/itemsublist.cpp +++ b/src/gui/listmenu/itemsublist.cpp @@ -41,7 +41,7 @@ void ItemSublist::SetParent(IWidget* widget) { listp->AddChild(list); } -bool ItemSublist::IsHovered() { +bool ItemSublist::IsHovered() const { List* parent = dynamic_cast(GetParent()); if (!parent) throw std::runtime_error("Sublist parent can't be casted to List!"); diff --git a/src/gui/listmenu/itemvariable.cpp b/src/gui/listmenu/itemvariable.cpp index ffe8109..5b84f3c 100644 --- a/src/gui/listmenu/itemvariable.cpp +++ b/src/gui/listmenu/itemvariable.cpp @@ -60,7 +60,7 @@ void ItemVariable::Change(float amount) { } } -bool ItemVariable::ConsumesKey(CatKey key) { +bool ItemVariable::ConsumesKey(CatKey key) const { if (capturing) return true; if (key == CatKey::CATKEY_M_WHEEL_DOWN || key == CatKey::CATKEY_M_WHEEL_UP || key == CatKey::CATKEY_MOUSE_1) diff --git a/src/gui/ncc/background.cpp b/src/gui/ncc/background.cpp index 10a20a2..8b15c04 100644 --- a/src/gui/ncc/background.cpp +++ b/src/gui/ncc/background.cpp @@ -55,7 +55,7 @@ Background::Background() this->zindex = -999; } -bool Background::AlwaysVisible() { +bool Background::AlwaysVisible() const { return (int)particles == 2; } diff --git a/src/gui/ncc/logo.cpp b/src/gui/ncc/logo.cpp index 8603d4c..e3d0ce1 100644 --- a/src/gui/ncc/logo.cpp +++ b/src/gui/ncc/logo.cpp @@ -35,7 +35,7 @@ Logo::Logo(IWidget* parent) SetSize(576, 288); } -bool Logo::AlwaysVisible() { +bool Logo::AlwaysVisible() const { return (int)logo == 2; } diff --git a/src/gui/tooltip.hpp b/src/gui/tooltip.hpp index a1e3570..30b143b 100644 --- a/src/gui/tooltip.hpp +++ b/src/gui/tooltip.hpp @@ -30,7 +30,7 @@ public: virtual void Draw(int x, int y) override; virtual void HandleCustomEvent(std::string_view event) override; - inline virtual PositionMode GetPositionMode() override { return PositionMode::FLOATING; } + inline virtual PositionMode GetPositionMode() const override { return PositionMode::FLOATING; } std::pair padding; }; diff --git a/src/gui/widgets/basewidget.cpp b/src/gui/widgets/basewidget.cpp index f13ec61..aaf975b 100644 --- a/src/gui/widgets/basewidget.cpp +++ b/src/gui/widgets/basewidget.cpp @@ -33,15 +33,15 @@ void CBaseWidget::DrawBounds(int x, int y) { glez::draw::rect_outline(x, y, size.first, size.second, *this->bounds_color, 1); } -bool CBaseWidget::IsHovered() { +bool CBaseWidget::IsHovered() const { return this->GetCanvas()->IsVisible() && this->hover; } -bool CBaseWidget::IsFocused() { +bool CBaseWidget::IsFocused() const { return this->GetCanvas()->IsVisible() && this->focus; } -bool CBaseWidget::IsPressed() { +bool CBaseWidget::IsPressed() const { return this->GetCanvas()->IsVisible() && this->press; } @@ -66,7 +66,7 @@ void CBaseWidget::Update() { } } -std::pair CBaseWidget::AbsolutePosition() { +std::pair CBaseWidget::AbsolutePosition() const { auto result = GetOffset(); auto parent = GetParent(); while (parent) { @@ -78,10 +78,19 @@ std::pair CBaseWidget::AbsolutePosition() { return result; } -bool CBaseWidget::IsVisible() { +bool CBaseWidget::IsVisible() const { return this->visible && (!this->GetParent() || GetParent()->IsVisible()); } +const Canvas* CBaseWidget::GetCanvas() const { + auto* ret = dynamic_cast(this); + if (ret) + return ret; + ret = this->GetParent()->GetCanvas(); + assert(ret); + return ret; +} + Canvas* CBaseWidget::GetCanvas() { auto* ret = dynamic_cast(this); if (ret) diff --git a/src/gui/widgets/keyinput.cpp b/src/gui/widgets/keyinput.cpp index 6853851..8fe7374 100644 --- a/src/gui/widgets/keyinput.cpp +++ b/src/gui/widgets/keyinput.cpp @@ -72,7 +72,7 @@ void CKeyInput::OnFocusLose() { this->capturing = false; } -bool CKeyInput::ConsumesKey(CatKey key) { +bool CKeyInput::ConsumesKey(CatKey key) const { return key != CatKey::CATKEY_MOUSE_1 && this->capturing; } diff --git a/src/gui/widgets/textlabel.cpp b/src/gui/widgets/textlabel.cpp index e9f35da..898b17f 100644 --- a/src/gui/widgets/textlabel.cpp +++ b/src/gui/widgets/textlabel.cpp @@ -24,7 +24,7 @@ #include "gui/canvas.hpp" -static std::string WordWrap(std::string& in, int max, glez::font& font) { +static std::string WordWrap(std::string& in, int max, const glez::font& font) { std::stringstream result, line, wordstream, next; std::string word; char ch;