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

summaryrefslogtreecommitdiff
path: root/source/game/StarImageMetadataDatabase.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-24 01:30:55 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-24 01:30:55 +1000
commit2798d4bf668d74028b5c1f88ae5b7b25cd08de2d (patch)
tree4a4df7c000c2e7d8be953dcf0724aa8f4b0d2b24 /source/game/StarImageMetadataDatabase.cpp
parent6832c10ed5482530b4a423a78700b279fc73212a (diff)
what the fuck it's 1:30 AM. god
Diffstat (limited to 'source/game/StarImageMetadataDatabase.cpp')
-rw-r--r--source/game/StarImageMetadataDatabase.cpp51
1 files changed, 24 insertions, 27 deletions
diff --git a/source/game/StarImageMetadataDatabase.cpp b/source/game/StarImageMetadataDatabase.cpp
index 613ed1a..1e5c147 100644
--- a/source/game/StarImageMetadataDatabase.cpp
+++ b/source/game/StarImageMetadataDatabase.cpp
@@ -119,22 +119,20 @@ RectU ImageMetadataDatabase::nonEmptyRegion(String const& path) const {
String ImageMetadataDatabase::filterProcessing(String const& path) {
AssetPath components = AssetPath::split(path);
-
- components.directives.filter([](String const& directive) {
- ImageOperation operation;
- try {
- operation = imageOperationFromString(directive);
- } catch (StarException const&) {
- return true;
- }
-
- return !(operation.is<HueShiftImageOperation>() ||
- operation.is<SaturationShiftImageOperation>() ||
- operation.is<BrightnessMultiplyImageOperation>() ||
- operation.is<FadeToColorImageOperation>() ||
- operation.is<ScanLinesImageOperation>() ||
- operation.is<SetColorImageOperation>());
- });
+ auto directives = move(components.directives);
+ String joined = AssetPath::join(components);
+
+ directives.forEachPair([&](ImageOperation const& operation, String const& string) {
+ if (!(operation.is<HueShiftImageOperation>() ||
+ operation.is<SaturationShiftImageOperation>() ||
+ operation.is<BrightnessMultiplyImageOperation>() ||
+ operation.is<FadeToColorImageOperation>() ||
+ operation.is<ScanLinesImageOperation>() ||
+ operation.is<SetColorImageOperation>())) {
+ joined += "?";
+ joined += string;
+ }
+ });
return AssetPath::join(components);
}
@@ -231,19 +229,18 @@ Vec2U ImageMetadataDatabase::calculateImageSize(String const& path) const {
OperationSizeAdjust osa(imageSize);
- for (auto const& directive : components.directives) {
- ImageOperation operation;
- try {
- operation = imageOperationFromString(directive);
- } catch (StarException const&) {
- return fallback();
+ bool complete = components.directives.forEachAbortable([&](auto const& leaf) -> bool {
+ for (const ImageOperation& operation : leaf.operations) {
+ operation.call(osa);
+ if (osa.hasError())
+ return false;
+ else
+ return true;
}
+ });
- operation.call(osa);
- if (osa.hasError) {
- return fallback();
- }
- }
+ if (!complete)
+ return fallback();
return imageSize;
}