Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarImageProcessing.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-26 01:42:18 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-26 01:42:18 +1000
commit09d26d43b5262f480fd55eab9980eff06a71edbb (patch)
tree1e53765861cd966d204782aeefd15b1a67b3266f /source/core/StarImageProcessing.cpp
parent13a74602bd4c46149da9949d448387a40b8ebd1c (diff)
Add string view variant of Star::String and use it
it's 1:30 AM AGAIN !! !!!!! This might have broken the inventory icons of custom hats a little, need to look into that
Diffstat (limited to 'source/core/StarImageProcessing.cpp')
-rw-r--r--source/core/StarImageProcessing.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/source/core/StarImageProcessing.cpp b/source/core/StarImageProcessing.cpp
index 56ac130..0330a2d 100644
--- a/source/core/StarImageProcessing.cpp
+++ b/source/core/StarImageProcessing.cpp
@@ -4,6 +4,7 @@
#include "StarLexicalCast.hpp"
#include "StarColor.hpp"
#include "StarImage.hpp"
+#include "StarStringView.hpp"
namespace Star {
@@ -145,9 +146,13 @@ FadeToColorImageOperation::FadeToColorImageOperation(Vec3B color, float amount)
}
}
-ImageOperation imageOperationFromString(String const& string) {
+ImageOperation imageOperationFromString(StringView string) {
try {
- auto bits = string.splitAny("=;");
+ List<StringView> bits;
+ string.forEachSplitAnyView("=;", [&](StringView split, size_t, size_t) {
+ bits.emplace_back(split);
+ });
+
String type = bits.at(0);
if (type == "hueshift") {
@@ -184,7 +189,7 @@ ImageOperation imageOperationFromString(String const& string) {
else
operation.mode = AlphaMaskImageOperation::Subtractive;
- operation.maskImages = bits.at(1).split('+');
+ operation.maskImages = String(bits.at(1)).split('+');
if (bits.size() > 2)
operation.offset[0] = lexicalCast<int>(bits.at(2));
@@ -202,7 +207,7 @@ ImageOperation imageOperationFromString(String const& string) {
else
operation.mode = BlendImageOperation::Screen;
- operation.blendImages = bits.at(1).split('+');
+ operation.blendImages = String(bits.at(1)).split('+');
if (bits.size() > 2)
operation.offset[0] = lexicalCast<int>(bits.at(2));
@@ -328,22 +333,19 @@ String imageOperationToString(ImageOperation const& operation) {
return "";
}
-void parseImageOperations(String const& params, function<void(ImageOperation&&)> outputter) {
- for (auto const& op : params.split('?')) {
+void parseImageOperations(StringView params, function<void(ImageOperation&&)> outputter) {
+ params.forEachSplitView("?", [&](StringView op, size_t, size_t) {
if (!op.empty())
outputter(imageOperationFromString(op));
- }
+ });
}
-List<ImageOperation> parseImageOperations(String const& params) {
- auto split = params.split('?');
+List<ImageOperation> parseImageOperations(StringView params) {
List<ImageOperation> operations;
- operations.reserve(split.size());
-
- for (auto const& op : split) {
+ params.forEachSplitView("?", [&](StringView op, size_t, size_t) {
if (!op.empty())
operations.append(imageOperationFromString(op));
- }
+ });
return operations;
}