Polyphase Game Engine
Loading...
Searching...
No Matches
UITypes.h
Go to the documentation of this file.
1#pragma once
2
3#include "glm/glm.hpp"
4
5#include <string>
6#include <vector>
7#include <utility>
8
9class Widget;
10
11//------------------------------------------------------------
12// CSS Value
13//------------------------------------------------------------
14
15enum class CSSValueType : uint8_t
16{
17 None,
18 Number,
19 Percent,
20 Color,
21 String,
22 Enum,
23 Auto
24};
25
27{
29 float mNumber = 0.0f;
30 glm::vec4 mColor = { 0.0f, 0.0f, 0.0f, 1.0f };
31 std::string mString;
32
33 bool IsValid() const { return mType != CSSValueType::None; }
34
35 static CSSValue MakeNumber(float val);
36 static CSSValue MakePercent(float val);
37 static CSSValue MakeColor(glm::vec4 col);
38 static CSSValue MakeString(const std::string& str);
39 static CSSValue MakeEnum(const std::string& str);
40};
41
42//------------------------------------------------------------
43// Element → Widget type mapping
44//------------------------------------------------------------
45
46const char* UIElementToWidgetType(const char* elementName);
47const char* UIWidgetTypeToElement(const char* widgetType);
48
49//------------------------------------------------------------
50// CSS parsing utilities
51//------------------------------------------------------------
52
53CSSValue ParseCSSColor(const char* str);
54CSSValue ParseCSSLength(const char* str);
55CSSValue ParseCSSGenericValue(const char* str);
56
58 const char* styleStr,
59 std::vector<std::pair<std::string, CSSValue>>& outProps);
60
61//------------------------------------------------------------
62// CSS → Widget property application
63//------------------------------------------------------------
64
66 Widget* widget,
67 const char* elementType,
68 const std::string& propName,
69 const CSSValue& value);
const char * UIWidgetTypeToElement(const char *widgetType)
Definition UITypes.cpp:96
CSSValueType
Definition UITypes.h:16
CSSValue ParseCSSColor(const char *str)
Definition UITypes.cpp:124
void ApplyCSSProperty(Widget *widget, const char *elementType, const std::string &propName, const CSSValue &value)
Definition UITypes.cpp:389
CSSValue ParseCSSLength(const char *str)
Definition UITypes.cpp:201
CSSValue ParseCSSGenericValue(const char *str)
Definition UITypes.cpp:233
const char * UIElementToWidgetType(const char *elementName)
Definition UITypes.cpp:69
void ParseInlineStyle(const char *styleStr, std::vector< std::pair< std::string, CSSValue > > &outProps)
Definition UITypes.cpp:311
Definition Widget.h:53
Definition UITypes.h:27
static CSSValue MakeColor(glm::vec4 col)
Definition UITypes.cpp:41
static CSSValue MakeString(const std::string &str)
Definition UITypes.cpp:49
static CSSValue MakePercent(float val)
Definition UITypes.cpp:33
CSSValueType mType
Definition UITypes.h:28
static CSSValue MakeEnum(const std::string &str)
Definition UITypes.cpp:57
glm::vec4 mColor
Definition UITypes.h:30
bool IsValid() const
Definition UITypes.h:33
float mNumber
Definition UITypes.h:29
static CSSValue MakeNumber(float val)
Definition UITypes.cpp:25
std::string mString
Definition UITypes.h:31