From bad871b0a212ce07a29ec6028b0422f6513ee372 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 5 May 2024 17:02:11 +0300 Subject: [PATCH] minor refactor --- src/graphics/ui/elements/Button.cpp | 6 +----- src/graphics/ui/elements/CheckBox.cpp | 2 +- src/graphics/ui/elements/Container.cpp | 7 +------ src/graphics/ui/elements/Image.cpp | 12 ++++-------- src/graphics/ui/elements/InputBindBox.cpp | 2 +- src/graphics/ui/elements/Label.cpp | 7 +------ src/graphics/ui/elements/UINode.cpp | 10 ++++++++++ src/graphics/ui/elements/UINode.hpp | 2 ++ 8 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/graphics/ui/elements/Button.cpp b/src/graphics/ui/elements/Button.cpp index ef4c6195..1beacc06 100644 --- a/src/graphics/ui/elements/Button.cpp +++ b/src/graphics/ui/elements/Button.cpp @@ -79,11 +79,7 @@ void Button::drawBackground(const DrawContext* pctx, Assets* assets) { glm::vec2 pos = calcPos(); auto batch = pctx->getBatch2D(); batch->texture(nullptr); - if (isEnabled()) { - batch->setColor(isPressed() ? pressedColor : (hover ? hoverColor : color)); - } else { - batch->setColor({color.r, color.g, color.b, color.a * 0.5f}); - } + batch->setColor(calcColor()); batch->rect(pos.x, pos.y, size.x, size.y); } diff --git a/src/graphics/ui/elements/CheckBox.cpp b/src/graphics/ui/elements/CheckBox.cpp index 89de7565..56e7344b 100644 --- a/src/graphics/ui/elements/CheckBox.cpp +++ b/src/graphics/ui/elements/CheckBox.cpp @@ -17,7 +17,7 @@ void CheckBox::draw(const DrawContext* pctx, Assets* assets) { glm::vec2 pos = calcPos(); auto batch = pctx->getBatch2D(); batch->texture(nullptr); - batch->setColor(checked ? checkColor : (hover ? hoverColor : color)); + batch->setColor(checked ? checkColor : calcColor()); batch->rect(pos.x, pos.y, size.x, size.y); } diff --git a/src/graphics/ui/elements/Container.cpp b/src/graphics/ui/elements/Container.cpp index 52969bea..7f547c24 100644 --- a/src/graphics/ui/elements/Container.cpp +++ b/src/graphics/ui/elements/Container.cpp @@ -92,12 +92,7 @@ void Container::draw(const DrawContext* pctx, Assets* assets) { } void Container::drawBackground(const DrawContext* pctx, Assets* assets) { - glm::vec4 color = this->color; - if (isEnabled()) { - color = (isPressed() ? pressedColor : (hover ? hoverColor : color)); - } else { - color = glm::vec4(color.r, color.g, color.b, color.a * 0.5f); - } + glm::vec4 color = calcColor(); if (color.a <= 0.001f) return; glm::vec2 pos = calcPos(); diff --git a/src/graphics/ui/elements/Image.cpp b/src/graphics/ui/elements/Image.cpp index d2d2aee1..b9ad1fb1 100644 --- a/src/graphics/ui/elements/Image.cpp +++ b/src/graphics/ui/elements/Image.cpp @@ -14,7 +14,6 @@ Image::Image(std::string texture, glm::vec2 size) : UINode(size), texture(textur void Image::draw(const DrawContext* pctx, Assets* assets) { glm::vec2 pos = calcPos(); - glm::vec4 color = getColor(); auto batch = pctx->getBatch2D(); auto texture = assets->getTexture(this->texture); @@ -22,13 +21,10 @@ void Image::draw(const DrawContext* pctx, Assets* assets) { setSize(glm::vec2(texture->getWidth(), texture->getHeight())); } batch->texture(texture); - if (isEnabled()) { - batch->setColor(isPressed() ? pressedColor : (hover ? hoverColor : color)); - } else { - batch->setColor({color.r, color.g, color.b, color.a * 0.5f}); - } - batch->rect(pos.x, pos.y, size.x, size.y, - 0, 0, 0, UVRegion(), false, true, batch->getColor()); + batch->rect( + pos.x, pos.y, size.x, size.y, + 0, 0, 0, UVRegion(), false, true, calcColor() + ); } void Image::setAutoResize(bool flag) { diff --git a/src/graphics/ui/elements/InputBindBox.cpp b/src/graphics/ui/elements/InputBindBox.cpp index a15e3dbc..14d547b6 100644 --- a/src/graphics/ui/elements/InputBindBox.cpp +++ b/src/graphics/ui/elements/InputBindBox.cpp @@ -19,7 +19,7 @@ void InputBindBox::drawBackground(const DrawContext* pctx, Assets* assets) { glm::vec2 pos = calcPos(); auto batch = pctx->getBatch2D(); batch->texture(nullptr); - batch->setColor(isFocused() ? focusedColor : (hover ? hoverColor : color)); + batch->setColor(isFocused() ? focusedColor : calcColor()); batch->rect(pos.x, pos.y, size.x, size.y); label->setText(util::str2wstr_utf8(binding.text())); } diff --git a/src/graphics/ui/elements/Label.cpp b/src/graphics/ui/elements/Label.cpp index 13f61725..a3b485cd 100644 --- a/src/graphics/ui/elements/Label.cpp +++ b/src/graphics/ui/elements/Label.cpp @@ -148,12 +148,7 @@ void Label::draw(const DrawContext* pctx, Assets* assets) { if (cache.resetFlag) { cache.update(text, multiline, textWrap); } - - if (isEnabled()) { - batch->setColor(isPressed() ? pressedColor : (hover ? hoverColor : color)); - } else { - batch->setColor({color.r, color.g, color.b, color.a * 0.5f}); - } + batch->setColor(calcColor()); uint lineHeight = font->getLineHeight(); if (cache.lines.size() > 1) { diff --git a/src/graphics/ui/elements/UINode.cpp b/src/graphics/ui/elements/UINode.cpp index b05fb4ed..8bfd5298 100644 --- a/src/graphics/ui/elements/UINode.cpp +++ b/src/graphics/ui/elements/UINode.cpp @@ -132,6 +132,16 @@ void UINode::scrolled(int value) { } } +glm::vec4 UINode::calcColor() const { + glm::vec4 color = this->color; + if (isEnabled()) { + color = (isPressed() ? pressedColor : (hover ? hoverColor : color)); + } else { + color = glm::vec4(color.r, color.g, color.b, color.a * 0.5f); + } + return color; +} + void UINode::setPos(glm::vec2 pos) { this->pos = pos; } diff --git a/src/graphics/ui/elements/UINode.hpp b/src/graphics/ui/elements/UINode.hpp index fd269c89..30be2aa3 100644 --- a/src/graphics/ui/elements/UINode.hpp +++ b/src/graphics/ui/elements/UINode.hpp @@ -172,6 +172,8 @@ namespace gui { virtual void setResizing(bool flag); virtual bool isResizing() const; + virtual glm::vec4 calcColor() const; + /* Get inner content offset. Used for scroll */ virtual glm::vec2 contentOffset() {return glm::vec2(0.0f);}; /* Calculate screen position of the element */