From 47d18092ac6ab1a636ba847a48a0d28e37f6a34c Mon Sep 17 00:00:00 2001 From: sebastian Date: Thu, 12 Feb 2026 10:18:59 +0100 Subject: [PATCH] ADD: Convert translation to ndc --- .../core/gui/uiComponent/layout/LayoutStyle.h | 56 +++++++++++++++++++ src/engine/toolbox/MathUtils.h | 7 ++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 src/engine/core/gui/uiComponent/layout/LayoutStyle.h diff --git a/src/engine/core/gui/uiComponent/layout/LayoutStyle.h b/src/engine/core/gui/uiComponent/layout/LayoutStyle.h new file mode 100644 index 0000000..693f86c --- /dev/null +++ b/src/engine/core/gui/uiComponent/layout/LayoutStyle.h @@ -0,0 +1,56 @@ +// +// Created by sebastian on 12.02.26. +// + +#ifndef DICEWARS_SIEDLER_LAYOUTSTYLE_H +#define DICEWARS_SIEDLER_LAYOUTSTYLE_H + +enum class SizeUnit { + Pixels, + Percent +}; + +struct SizeValue { + float value; + SizeUnit unit; +}; + +struct Margin { + SizeValue left; + SizeValue right; + SizeValue top; + SizeValue bottom; +}; + +enum class FlexDirection { + Row, + Column +}; + +enum class JustifyContent { + Start, + Center, + End, + SpaceBetween, +}; + +enum class AlignItems { + Start, + Center, + End, + Stretch +}; + +struct LayoutStyle { + SizeValue width = {1.0f, SizeUnit::Percent}; + SizeValue height = {1.0f, SizeUnit::Percent}; + + Margin margin; + FlexDirection flexDirection = FlexDirection::Column; + JustifyContent justifyContent = JustifyContent::Start; + AlignItems alignItems = AlignItems::Start; + + float flexGrow = 0.0f; +}; + +#endif //DICEWARS_SIEDLER_LAYOUTSTYLE_H \ No newline at end of file diff --git a/src/engine/toolbox/MathUtils.h b/src/engine/toolbox/MathUtils.h index 6e2d6e6..227d98e 100644 --- a/src/engine/toolbox/MathUtils.h +++ b/src/engine/toolbox/MathUtils.h @@ -4,6 +4,7 @@ #ifndef MATHUTILS_H #define MATHUTILS_H +#include "../core/Application.h" #include "../layer/entities/Camera.h" #include "glm/mat4x4.hpp" #include "glm/vec3.hpp" @@ -24,8 +25,12 @@ namespace MathUtils { } inline static glm::mat4 createTransformationMatrix(const glm::vec2 translation, const glm::vec2 scale) { + glm::vec2 translationNDC; + translationNDC.x = translation.x * 2.0f - 1.0f + scale.x; + translationNDC.y = 1.0f - translation.y * 2.0f - scale.y; + auto matrix = glm::identity(); - matrix = glm::translate(matrix, glm::vec3( translation.x, translation.y, 0.0f)); + matrix = glm::translate(matrix, glm::vec3( translationNDC, 0.0f)); matrix = glm::scale(matrix, glm::vec3(scale.x, scale.y, 1.0f)); return matrix; }