aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-22 22:22:45 +0800
committercrupest <crupest@outlook.com>2022-01-22 22:22:45 +0800
commit14d9efc39635dab2c6c0f791d6b0a63c92d941ee (patch)
tree0e974083611d5725a2135928749026ac237884f4 /src/ui
parent0e71e7022ee4cfec5b27e178ee1bb7d6977f6b3e (diff)
downloadcru-14d9efc39635dab2c6c0f791d6b0a63c92d941ee.tar.gz
cru-14d9efc39635dab2c6c0f791d6b0a63c92d941ee.tar.bz2
cru-14d9efc39635dab2c6c0f791d6b0a63c92d941ee.zip
...
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/CMakeLists.txt3
-rw-r--r--src/ui/mapper/BorderStyleMapper.cpp (renamed from src/ui/mapper/style/BorderStyleMapper.cpp)24
-rw-r--r--src/ui/mapper/ColorMapper.cpp8
-rw-r--r--src/ui/mapper/CornerRadiusMapper.cpp16
-rw-r--r--src/ui/mapper/CursorMapper.cpp3
-rw-r--r--src/ui/mapper/PointMapper.cpp10
-rw-r--r--src/ui/mapper/SizeMapper.cpp10
-rw-r--r--src/ui/mapper/ThicknessMapper.cpp16
8 files changed, 44 insertions, 46 deletions
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index b086cce1..4353a541 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -26,14 +26,15 @@ add_library(cru_ui SHARED
helper/ShortcutHub.cpp
host/LayoutPaintCycler.cpp
host/WindowHost.cpp
+ mapper/BorderStyleMapper.cpp
mapper/ColorMapper.cpp
mapper/CornerRadiusMapper.cpp
+ mapper/CursorMapper.cpp
mapper/Mapper.cpp
mapper/MapperRegistry.cpp
mapper/PointMapper.cpp
mapper/SizeMapper.cpp
mapper/ThicknessMapper.cpp
- mapper/style/BorderStyleMapper.cpp
render/BorderRenderObject.cpp
render/CanvasRenderObject.cpp
render/FlexLayoutRenderObject.cpp
diff --git a/src/ui/mapper/style/BorderStyleMapper.cpp b/src/ui/mapper/BorderStyleMapper.cpp
index 0dc8a05f..65dbfe3b 100644
--- a/src/ui/mapper/style/BorderStyleMapper.cpp
+++ b/src/ui/mapper/BorderStyleMapper.cpp
@@ -1,12 +1,12 @@
-#include "cru/ui/mapper/style/BorderStyleMapper.hpp"
-#include "../../Helper.hpp"
+#include "cru/ui/mapper/BorderStyleMapper.hpp"
+#include "../Helper.hpp"
#include "cru/common/Logger.hpp"
#include "cru/platform/graphics/Factory.hpp"
#include "cru/ui/mapper/MapperRegistry.hpp"
#include "cru/ui/style/ApplyBorderStyleInfo.hpp"
#include "cru/xml/XmlNode.hpp"
-namespace cru::ui::mapper::style {
+namespace cru::ui::mapper {
using namespace xml;
using ui::style::ApplyBorderStyleInfo;
@@ -14,9 +14,9 @@ bool BorderStyleMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
return node->GetTag() == u"BorderStyle";
}
-std::unique_ptr<ApplyBorderStyleInfo> BorderStyleMapper::DoMapFromXml(
+ApplyBorderStyleInfo BorderStyleMapper::DoMapFromXml(
xml::XmlElementNode* node) {
- auto result = std::make_unique<ApplyBorderStyleInfo>();
+ ApplyBorderStyleInfo result;
for (auto child : node->GetChildren()) {
if (child->GetType() == XmlNode::Type::Text) {
@@ -29,23 +29,23 @@ std::unique_ptr<ApplyBorderStyleInfo> BorderStyleMapper::DoMapFromXml(
MapperRegistry::GetInstance()->GetMapper<CornerRadius>();
auto color_mapper = MapperRegistry::GetInstance()->GetMapper<Color>();
if (thickness_mapper->XmlElementIsOfThisType(c)) {
- result->border_thickness = *thickness_mapper->MapFromXml(c);
+ result.border_thickness = thickness_mapper->MapFromXml(c);
} else if (corner_radius_mapper->XmlElementIsOfThisType(c)) {
- result->border_radius = *corner_radius_mapper->MapFromXml(c);
+ result.border_radius = corner_radius_mapper->MapFromXml(c);
} else if (color_mapper->XmlElementIsOfThisType(c)) {
auto brush = GetGraphicsFactory()->CreateSolidColorBrush(
- *color_mapper->MapFromXml(c));
+ color_mapper->MapFromXml(c));
auto name = c->GetOptionalAttribute(u"name");
if (name) {
if (name == u"foreground") {
- result->foreground_brush = std::move(brush);
+ result.foreground_brush = std::move(brush);
} else if (name == u"background") {
- result->background_brush = std::move(brush);
+ result.background_brush = std::move(brush);
} else {
log::Debug(u"Unknown brush name: {}", *name);
}
} else {
- result->border_brush = std::move(brush);
+ result.border_brush = std::move(brush);
}
}
}
@@ -53,4 +53,4 @@ std::unique_ptr<ApplyBorderStyleInfo> BorderStyleMapper::DoMapFromXml(
return result;
}
-} // namespace cru::ui::mapper::style
+} // namespace cru::ui::mapper
diff --git a/src/ui/mapper/ColorMapper.cpp b/src/ui/mapper/ColorMapper.cpp
index e17352e1..a5d2c5e3 100644
--- a/src/ui/mapper/ColorMapper.cpp
+++ b/src/ui/mapper/ColorMapper.cpp
@@ -5,18 +5,18 @@ bool ColorMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
return node->GetTag() == u"Color";
}
-std::unique_ptr<Color> ColorMapper::DoMapFromString(String str) {
+Color ColorMapper::DoMapFromString(String str) {
auto c = Color::Parse(str);
if (!c) {
throw Exception(u"Invalid color value.");
}
- return std::make_unique<Color>(*c);
+ return *c;
}
-std::unique_ptr<Color> ColorMapper::DoMapFromXml(xml::XmlElementNode* node) {
+Color ColorMapper::DoMapFromXml(xml::XmlElementNode* node) {
auto value_attr = node->GetOptionalAttribute(u"value");
if (!value_attr) {
- return std::make_unique<Color>(colors::transparent);
+ return colors::transparent;
}
return DoMapFromString(*value_attr);
}
diff --git a/src/ui/mapper/CornerRadiusMapper.cpp b/src/ui/mapper/CornerRadiusMapper.cpp
index ef63e26f..0c13db7c 100644
--- a/src/ui/mapper/CornerRadiusMapper.cpp
+++ b/src/ui/mapper/CornerRadiusMapper.cpp
@@ -10,35 +10,33 @@ bool CornerRadiusMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
return false;
}
-std::unique_ptr<CornerRadius> CornerRadiusMapper::DoMapFromXml(
- xml::XmlElementNode* node) {
+CornerRadius CornerRadiusMapper::DoMapFromXml(xml::XmlElementNode* node) {
auto point_mapper = MapperRegistry::GetInstance()->GetMapper<Point>();
-
- auto result = std::make_unique<CornerRadius>();
+ CornerRadius result;
auto all = node->GetOptionalAttribute(u"all");
if (all) {
- result->SetAll(*point_mapper->MapFromString(*all));
+ result.SetAll(point_mapper->MapFromString(*all));
}
auto lefttop = node->GetOptionalAttribute(u"lefttop");
if (lefttop) {
- result->left_top = *point_mapper->MapFromString(*lefttop);
+ result.left_top = point_mapper->MapFromString(*lefttop);
}
auto righttop = node->GetOptionalAttribute(u"righttop");
if (righttop) {
- result->right_top = *point_mapper->MapFromString(*righttop);
+ result.right_top = point_mapper->MapFromString(*righttop);
}
auto rightbottom = node->GetOptionalAttribute(u"rightbottom");
if (rightbottom) {
- result->right_bottom = *point_mapper->MapFromString(*rightbottom);
+ result.right_bottom = point_mapper->MapFromString(*rightbottom);
}
auto leftbottom = node->GetOptionalAttribute(u"leftbottom");
if (leftbottom) {
- result->left_bottom = *point_mapper->MapFromString(*leftbottom);
+ result.left_bottom = point_mapper->MapFromString(*leftbottom);
}
return result;
diff --git a/src/ui/mapper/CursorMapper.cpp b/src/ui/mapper/CursorMapper.cpp
new file mode 100644
index 00000000..2dd08219
--- /dev/null
+++ b/src/ui/mapper/CursorMapper.cpp
@@ -0,0 +1,3 @@
+#include "cru/ui/mapper/CursorMapper.hpp"
+
+namespace cru::ui::mapper {}
diff --git a/src/ui/mapper/PointMapper.cpp b/src/ui/mapper/PointMapper.cpp
index 2be0ba01..bcf209fb 100644
--- a/src/ui/mapper/PointMapper.cpp
+++ b/src/ui/mapper/PointMapper.cpp
@@ -8,20 +8,20 @@ bool PointMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
return false;
}
-std::unique_ptr<Point> PointMapper::DoMapFromString(String str) {
+Point PointMapper::DoMapFromString(String str) {
std::vector<float> values = str.ParseToFloatList();
if (values.size() == 2) {
- return std::make_unique<Point>(values[0], values[1]);
+ return {values[0], values[1]};
} else if (values.size() == 1) {
- return std::make_unique<Point>(values[0], values[0]);
+ return {values[0], values[0]};
} else {
throw Exception(u"Invalid Point string.");
}
}
-std::unique_ptr<Point> PointMapper::DoMapFromXml(xml::XmlElementNode* node) {
+Point PointMapper::DoMapFromXml(xml::XmlElementNode* node) {
auto value_attr = node->GetOptionalAttribute(u"value");
- if (!value_attr) return std::make_unique<Point>();
+ if (!value_attr) return {};
return DoMapFromString(*value_attr);
}
} // namespace cru::ui::mapper
diff --git a/src/ui/mapper/SizeMapper.cpp b/src/ui/mapper/SizeMapper.cpp
index 4f9dc208..3e3355cd 100644
--- a/src/ui/mapper/SizeMapper.cpp
+++ b/src/ui/mapper/SizeMapper.cpp
@@ -8,20 +8,20 @@ bool SizeMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
return false;
}
-std::unique_ptr<Size> SizeMapper::DoMapFromString(String str) {
+Size SizeMapper::DoMapFromString(String str) {
std::vector<float> values = str.ParseToFloatList();
if (values.size() == 2) {
- return std::make_unique<Size>(values[0], values[1]);
+ return {values[0], values[1]};
} else if (values.size() == 1) {
- return std::make_unique<Size>(values[0], values[0]);
+ return {values[0], values[0]};
} else {
throw Exception(u"Invalid Point string.");
}
}
-std::unique_ptr<Size> SizeMapper::DoMapFromXml(xml::XmlElementNode* node) {
+Size SizeMapper::DoMapFromXml(xml::XmlElementNode* node) {
auto value_attr = node->GetOptionalAttribute(u"value");
- if (!value_attr) return std::make_unique<Size>();
+ if (!value_attr) return {};
return DoMapFromString(*value_attr);
}
} // namespace cru::ui::mapper
diff --git a/src/ui/mapper/ThicknessMapper.cpp b/src/ui/mapper/ThicknessMapper.cpp
index 11f0be0d..1829d64b 100644
--- a/src/ui/mapper/ThicknessMapper.cpp
+++ b/src/ui/mapper/ThicknessMapper.cpp
@@ -9,26 +9,22 @@ bool ThicknessMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
return false;
}
-std::unique_ptr<Thickness> ThicknessMapper::DoMapFromString(String str) {
+Thickness ThicknessMapper::DoMapFromString(String str) {
std::vector<float> values = str.ParseToFloatList();
if (values.size() == 4) {
- return std::make_unique<Thickness>(values[0], values[1], values[2],
- values[3]);
+ return Thickness(values[0], values[1], values[2], values[3]);
} else if (values.size() == 2) {
- return std::make_unique<Thickness>(values[0], values[1], values[0],
- values[1]);
+ return Thickness(values[0], values[1], values[0], values[1]);
} else if (values.size() == 1) {
- return std::make_unique<Thickness>(values[0], values[0], values[0],
- values[0]);
+ return Thickness(values[0], values[0], values[0], values[0]);
} else {
throw Exception(u"Invalid Thickness string.");
}
}
-std::unique_ptr<Thickness> ThicknessMapper::DoMapFromXml(
- xml::XmlElementNode* node) {
+Thickness ThicknessMapper::DoMapFromXml(xml::XmlElementNode* node) {
auto value_attr = node->GetOptionalAttribute(u"value");
- if (!value_attr) return std::make_unique<Thickness>();
+ if (!value_attr) return {};
return DoMapFromString(*value_attr);
}
} // namespace cru::ui::mapper