diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-10-17 14:06:48 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-10-17 14:06:48 +0800 |
commit | 5c5c496b605886b286d1b99e0f9e28ec02117ad5 (patch) | |
tree | c22b07e81ba179d7cc8790656abddbcc56b5d704 /src/ui | |
parent | 32aa6f116acc6e3e20a1ec76cef45b29f7005ad7 (diff) | |
download | cru-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.cpp | 23 | ||||
-rw-r--r-- | src/ui/mapper/ColorMapper.cpp | 6 | ||||
-rw-r--r-- | src/ui/mapper/FontMapper.cpp | 4 | ||||
-rw-r--r-- | src/ui/mapper/MeasureLengthMapper.cpp | 2 | ||||
-rw-r--r-- | src/ui/mapper/PointMapper.cpp | 5 | ||||
-rw-r--r-- | src/ui/mapper/SizeMapper.cpp | 5 | ||||
-rw-r--r-- | src/ui/mapper/ThicknessMapper.cpp | 4 |
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) { |