From fd71242a4267fb8bb85bb162fbfd66890f94bb33 Mon Sep 17 00:00:00 2001 From: MrLetsplay2003 Date: Fri, 4 Nov 2022 16:55:04 +0100 Subject: [PATCH] Improve UI --- src/kekengine/cpp/ui.cpp | 46 ++++++++++++++++++++++++++++++ src/kekengine/cpp/uielements.cpp | 46 ------------------------------ src/kekengine/include/ui.h | 20 ++----------- src/kekengine/include/uielements.h | 12 ++++++++ 4 files changed, 61 insertions(+), 63 deletions(-) diff --git a/src/kekengine/cpp/ui.cpp b/src/kekengine/cpp/ui.cpp index dee3501..5e40cba 100644 --- a/src/kekengine/cpp/ui.cpp +++ b/src/kekengine/cpp/ui.cpp @@ -82,6 +82,52 @@ int UIElement::uiToScreen(UIValue val) { return px; } +int UIElement::offsetX(int w, Origin origin) { + switch(origin) { + case Origin::TOP_LEFT: + case Origin::BOTTOM_LEFT: + case Origin::LEFT_CENTER: + return 0; + + case Origin::TOP_RIGHT: + case Origin::BOTTOM_RIGHT: + case Origin::RIGHT_CENTER: + return -w; + + case Origin::TOP_CENTER: + case Origin::BOTTOM_CENTER: + case Origin::CENTER: + return -w / 2; + } + + return 0; +} + +int UIElement::offsetY(int h, Origin origin) { + switch(origin) { + case Origin::TOP_LEFT: + case Origin::TOP_CENTER: + case Origin::TOP_RIGHT: + return 0; + + case Origin::BOTTOM_LEFT: + case Origin::BOTTOM_CENTER: + case Origin::BOTTOM_RIGHT: + return -h; + + case Origin::LEFT_CENTER: + case Origin::RIGHT_CENTER: + case Origin::CENTER: + return -h / 2; + } + + return 0; +} + +UIBounds UIElement::offsetUIBounds(int w, int h, Origin origin) { + return UIBounds(offsetX(w, origin), offsetY(h, origin), w, h); +} + void UIElement::drawAll(UIPoint screenPos, glm::mat4 projection) { if(!visible) return; draw(screenPos, projection); diff --git a/src/kekengine/cpp/uielements.cpp b/src/kekengine/cpp/uielements.cpp index 15e767d..c5a5254 100644 --- a/src/kekengine/cpp/uielements.cpp +++ b/src/kekengine/cpp/uielements.cpp @@ -6,52 +6,6 @@ namespace kek { -static inline int offsetX(int w, Origin origin) { - switch(origin) { - case Origin::TOP_LEFT: - case Origin::BOTTOM_LEFT: - case Origin::LEFT_CENTER: - return 0; - - case Origin::TOP_RIGHT: - case Origin::BOTTOM_RIGHT: - case Origin::RIGHT_CENTER: - return -w; - - case Origin::TOP_CENTER: - case Origin::BOTTOM_CENTER: - case Origin::CENTER: - return -w / 2; - } - - return 0; -} - -static inline int offsetY(int h, Origin origin) { - switch(origin) { - case Origin::TOP_LEFT: - case Origin::TOP_CENTER: - case Origin::TOP_RIGHT: - return 0; - - case Origin::BOTTOM_LEFT: - case Origin::BOTTOM_CENTER: - case Origin::BOTTOM_RIGHT: - return -h; - - case Origin::LEFT_CENTER: - case Origin::RIGHT_CENTER: - case Origin::CENTER: - return -h / 2; - } - - return 0; -} - -static inline UIBounds offsetUIBounds(int w, int h, Origin origin) { - return UIBounds(offsetX(w, origin), offsetY(h, origin), w, h); -} - TextElement::TextElement(UIValue x, UIValue y, Font *font): UIElement(x, y) { this->text = new TextObject(font, "Text"); this->sizePixels = KEK_DEFAULT_FONT_SIZE_PIXELS; diff --git a/src/kekengine/include/ui.h b/src/kekengine/include/ui.h index a361d99..6c3d734 100644 --- a/src/kekengine/include/ui.h +++ b/src/kekengine/include/ui.h @@ -41,23 +41,6 @@ enum class UIElementType { GROUP }; -enum class TextMode { - // Draw with y as baseline, disables vertical offset from the origin position specified using setOrigin() - BASELINE, - // Draw from the set origin - ORIGIN -}; - -enum class TextBounds { - SMALLEST, - LINE -}; - -enum class SliderDirection { - HORIZONTAL, - VERTICAL -}; - enum class Origin { TOP_LEFT, TOP_CENTER, @@ -150,6 +133,9 @@ public: protected: int uiToScreen(UIValue val); + static int offsetX(int w, Origin origin); + static int offsetY(int h, Origin origin); + static UIBounds offsetUIBounds(int w, int h, Origin origin); public: // Returns the bounds of the element relative to its origin diff --git a/src/kekengine/include/uielements.h b/src/kekengine/include/uielements.h index 08e8af6..f3ad222 100644 --- a/src/kekengine/include/uielements.h +++ b/src/kekengine/include/uielements.h @@ -16,6 +16,18 @@ class UIWindow: public UIElement { }; +enum class TextMode { + // Draw with y as baseline, disables vertical offset from the origin position specified using setOrigin() + BASELINE, + // Draw from the set origin + ORIGIN +}; + +enum class TextBounds { + SMALLEST, + LINE +}; + class TextElement: public UIElement { protected: