aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-10-17 14:06:48 +0800
committerYuqian Yang <crupest@crupest.life>2025-10-17 14:06:48 +0800
commit5c5c496b605886b286d1b99e0f9e28ec02117ad5 (patch)
treec22b07e81ba179d7cc8790656abddbcc56b5d704 /src/ui
parent32aa6f116acc6e3e20a1ec76cef45b29f7005ad7 (diff)
downloadcru-5c5c496b605886b286d1b99e0f9e28ec02117ad5.tar.gz
cru-5c5c496b605886b286d1b99e0f9e28ec02117ad5.tar.bz2
cru-5c5c496b605886b286d1b99e0f9e28ec02117ad5.zip
Use std::from_chars.
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/components/Input.cpp23
-rw-r--r--src/ui/mapper/ColorMapper.cpp6
-rw-r--r--src/ui/mapper/FontMapper.cpp4
-rw-r--r--src/ui/mapper/MeasureLengthMapper.cpp2
-rw-r--r--src/ui/mapper/PointMapper.cpp5
-rw-r--r--src/ui/mapper/SizeMapper.cpp5
-rw-r--r--src/ui/mapper/ThicknessMapper.cpp4
7 files changed, 25 insertions, 24 deletions
diff --git a/src/ui/components/Input.cpp b/src/ui/components/Input.cpp
index e75eccc5..0a14c7b8 100644
--- a/src/ui/components/Input.cpp
+++ b/src/ui/components/Input.cpp
@@ -1,8 +1,7 @@
#include "cru/ui/components/Input.h"
-#include "cru/base/StringToNumberConverter.h"
+#include "cru/base/StringUtil.h"
#include "cru/ui/controls/Control.h"
-#include <cmath>
#include <optional>
#include <string>
@@ -44,18 +43,18 @@ InputValidateResult Input::GetLastValidateResult() const {
}
InputValidateResult FloatInputValidator::Validate(std::string_view text) const {
- auto result = String::FromUtf8(text).ParseToFloat(
- nullptr, StringToNumberFlags::kAllowLeadingSpaces &
- StringToNumberFlags::kAllowTrailingSpaces);
- if (std::isnan(result)) {
+ auto result = cru::string::ParseToNumber<float>(
+ text, cru::string::ParseToNumberFlags::AllowLeadingSpaces |
+ cru::string::ParseToNumberFlags::AllowTrailingSpaces);
+ if (!result.valid) {
return InputValidateResult{false, "Invalid number."};
}
- if (min && result < *min) {
+ if (min && result.value < *min) {
return InputValidateResult{false, "Value is less than minimum."};
}
- if (max && result > *max) {
+ if (max && result.value > *max) {
return InputValidateResult{false, "Value is greater than maximum."};
}
@@ -67,9 +66,11 @@ FloatInput::FloatInput() {
ChangeEvent()->AddHandler([this](const InputChangeEventArgs& args) {
if (args.valid) {
- value_ = String::FromUtf8(args.text).ParseToFloat(
- nullptr, StringToNumberFlags::kAllowLeadingSpaces &
- StringToNumberFlags::kAllowTrailingSpaces);
+ value_ = cru::string::ParseToNumber<float>(
+ args.text,
+ cru::string::ParseToNumberFlags::AllowLeadingSpaces |
+ cru::string::ParseToNumberFlags::AllowTrailingSpaces)
+ .value;
}
});
}
diff --git a/src/ui/mapper/ColorMapper.cpp b/src/ui/mapper/ColorMapper.cpp
index 82e9dfbc..515eba97 100644
--- a/src/ui/mapper/ColorMapper.cpp
+++ b/src/ui/mapper/ColorMapper.cpp
@@ -1,6 +1,5 @@
#include "cru/ui/mapper/ColorMapper.h"
-
-#include <cru/base/String.h>
+#include "cru/base/StringUtil.h"
namespace cru::ui::mapper {
bool ColorMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
@@ -25,7 +24,8 @@ Color ColorMapper::DoMapFromXml(xml::XmlElementNode* node) {
auto alpha_value_attr =
node->GetOptionalAttributeValueCaseInsensitive("alpha");
if (alpha_value_attr) {
- result.alpha = String::FromUtf8(*alpha_value_attr).ParseToDouble() * 255;
+ result.alpha =
+ cru::string::ParseToNumber<double>(*alpha_value_attr).value * 255;
}
return result;
diff --git a/src/ui/mapper/FontMapper.cpp b/src/ui/mapper/FontMapper.cpp
index 1f749513..a0dcdd9f 100644
--- a/src/ui/mapper/FontMapper.cpp
+++ b/src/ui/mapper/FontMapper.cpp
@@ -1,6 +1,7 @@
#include "cru/ui/mapper/FontMapper.h"
#include "../Helper.h"
#include "cru/base/String.h"
+#include "cru/base/StringUtil.h"
#include "cru/platform/graphics/Factory.h"
namespace cru::ui::mapper {
@@ -15,7 +16,8 @@ std::shared_ptr<platform::graphics::IFont> FontMapper::DoMapFromXml(
auto font_family = font_family_attr.value_or("");
auto font_size =
- font_size_attr ? String::FromUtf8(*font_size_attr).ParseToFloat() : 24.0f;
+ font_size_attr ? cru::string::ParseToNumber<float>(*font_size_attr).value
+ : 24.0f;
return GetGraphicsFactory()->CreateFont(font_family, font_size);
}
diff --git a/src/ui/mapper/MeasureLengthMapper.cpp b/src/ui/mapper/MeasureLengthMapper.cpp
index 9f5c2a26..d36afb0e 100644
--- a/src/ui/mapper/MeasureLengthMapper.cpp
+++ b/src/ui/mapper/MeasureLengthMapper.cpp
@@ -15,7 +15,7 @@ render::MeasureLength MeasureLengthMapper::DoMapFromString(std::string str) {
if (cru::string::CaseInsensitiveCompare(str, "unspecified") == 0) {
return render::MeasureLength::NotSpecified();
}
- auto value = String::FromUtf8(str).ParseToFloat();
+ auto value = cru::string::ParseToNumber<float>(str).value;
if (value < 0) {
return render::MeasureLength::NotSpecified();
}
diff --git a/src/ui/mapper/PointMapper.cpp b/src/ui/mapper/PointMapper.cpp
index 12f000ef..a63e1b9e 100644
--- a/src/ui/mapper/PointMapper.cpp
+++ b/src/ui/mapper/PointMapper.cpp
@@ -1,6 +1,5 @@
#include "cru/ui/mapper/PointMapper.h"
-
-#include <cru/base/String.h>
+#include "cru/base/StringUtil.h"
namespace cru::ui::mapper {
bool PointMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
@@ -8,7 +7,7 @@ bool PointMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
}
Point PointMapper::DoMapFromString(std::string str) {
- std::vector<float> values = String::FromUtf8(str).ParseToFloatList();
+ std::vector<float> values = cru::string::ParseToNumberList<float>(str);
if (values.size() == 2) {
return {values[0], values[1]};
} else if (values.size() == 1) {
diff --git a/src/ui/mapper/SizeMapper.cpp b/src/ui/mapper/SizeMapper.cpp
index de8a0ded..d07d937d 100644
--- a/src/ui/mapper/SizeMapper.cpp
+++ b/src/ui/mapper/SizeMapper.cpp
@@ -1,6 +1,5 @@
#include "cru/ui/mapper/SizeMapper.h"
-
-#include <cru/base/String.h>
+#include "cru/base/StringUtil.h"
namespace cru::ui::mapper {
bool SizeMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
@@ -8,7 +7,7 @@ bool SizeMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
}
Size SizeMapper::DoMapFromString(std::string str) {
- std::vector<float> values = String::FromUtf8(str).ParseToFloatList();
+ std::vector<float> values = cru::string::ParseToNumberList<float>(str);
if (values.size() == 2) {
return {values[0], values[1]};
} else if (values.size() == 1) {
diff --git a/src/ui/mapper/ThicknessMapper.cpp b/src/ui/mapper/ThicknessMapper.cpp
index 96f016a7..e6557689 100644
--- a/src/ui/mapper/ThicknessMapper.cpp
+++ b/src/ui/mapper/ThicknessMapper.cpp
@@ -1,6 +1,6 @@
#include "cru/ui/mapper/ThicknessMapper.h"
+#include "cru/base/StringUtil.h"
#include "cru/xml/XmlNode.h"
-#include "cru/base/String.h"
namespace cru::ui::mapper {
bool ThicknessMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
@@ -8,7 +8,7 @@ bool ThicknessMapper::XmlElementIsOfThisType(xml::XmlElementNode* node) {
}
Thickness ThicknessMapper::DoMapFromString(std::string str) {
- std::vector<float> values = String::FromUtf8(str).ParseToFloatList();
+ std::vector<float> values = cru::string::ParseToNumberList<float>(str);
if (values.size() == 4) {
return Thickness(values[0], values[1], values[2], values[3]);
} else if (values.size() == 2) {