diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-26 01:42:18 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-26 01:42:18 +1000 |
commit | 09d26d43b5262f480fd55eab9980eff06a71edbb (patch) | |
tree | 1e53765861cd966d204782aeefd15b1a67b3266f /source/core/StarImageProcessing.cpp | |
parent | 13a74602bd4c46149da9949d448387a40b8ebd1c (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.cpp | 28 |
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; } |