Trying ttf loading

This commit is contained in:
Dynamitos
2022-04-13 13:01:46 +02:00
parent bebfb94752
commit 3fec36295a
42 changed files with 563 additions and 549 deletions
+30 -4
View File
@@ -1,18 +1,40 @@
#pragma once
#include "Elements/Element.h"
#include "Containers/List.h"
#include "Graphics/GraphicsResources.h"
namespace Seele
{
namespace UI
{
DECLARE_NAME_REF(Gfx, RenderCommand);
struct RenderElementStyle
{
Vector2 position;
Vector2 dimensions;
Vector backgroundColor;
uint32 backgroundImageIndex;
Vector4 borderBottomColor;
Vector4 borderLeftColor;
Vector4 borderRightColor;
Vector4 borderTopColor;
float borderBottomLeftRadius;
float borderBottomRightRadius;
float borderTopLeftRadius;
float borderTopRightRadius;
Vector4 fontColor;
float fontSize;
float opacity;
};
static_assert(sizeof(RenderElementStyle) == 34*4);
class RenderElement
{
public:
RenderElement() = default;
RenderElement(Element* parent, Element* referencedElement)
: parent(parent)
, referencedElement(referencedElement)
{}
~RenderElement() = default;
uint32 hierarchyIndex;
Element* parent;
Element* referencedElement;
};
@@ -36,12 +58,13 @@ struct AddElementRenderHierarchyUpdate : public RenderHierarchyUpdate
struct RemoveElementRenderHierarchyUpdate : public RenderHierarchyUpdate
{
Element* element;
RemoveElementRenderHierarchyUpdate(Element* elementToRemove)
bool removeChildren;
RemoveElementRenderHierarchyUpdate(Element* elementToRemove, bool removeChildren = false)
: element(elementToRemove)
, removeChildren(removeChildren)
{}
virtual void apply(Array<RenderElement>& elements) override;
};
class RenderHierarchy
{
public:
@@ -58,6 +81,9 @@ private:
static_assert(std::is_trivially_copyable_v<RenderElement>);
// List of all drawable elements in draw order
Array<RenderElement> drawElements;
// Shader data used for styling elements
Array<RenderElementStyle> elementStyles;
Array<Gfx::PTexture> usedTextures;
List<RenderHierarchyUpdate*> updates;
std::mutex updateLock;