From 7b0185ba7c153ee35bb65d47aa87aeef0ccb3237 Mon Sep 17 00:00:00 2001 From: Astrash Date: Sat, 26 Nov 2022 14:22:08 +1100 Subject: [PATCH] Add translate color sampler --- .../terra/addons/image/ImageLibraryAddon.java | 4 +++- .../mutate/TranslateColorSamplerTemplate.java | 21 +++++++++++++++++++ .../sampler/mutate/TranslateColorSampler.java | 21 +++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/mutate/TranslateColorSamplerTemplate.java create mode 100644 common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/mutate/TranslateColorSampler.java diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java index 9793958c4..433606eec 100644 --- a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/ImageLibraryAddon.java @@ -5,10 +5,11 @@ import com.dfsek.tectonic.api.config.template.object.ObjectTemplate; import java.util.function.Supplier; import com.dfsek.terra.addons.image.config.ImageLoader; -import com.dfsek.terra.addons.image.config.sampler.mutate.RotateColorSamplerTemplate; import com.dfsek.terra.addons.image.config.sampler.ConstantColorSamplerTemplate; import com.dfsek.terra.addons.image.config.sampler.image.SingleImageColorSamplerTemplate; import com.dfsek.terra.addons.image.config.sampler.image.TileImageColorSamplerTemplate; +import com.dfsek.terra.addons.image.config.sampler.mutate.RotateColorSamplerTemplate; +import com.dfsek.terra.addons.image.config.sampler.mutate.TranslateColorSamplerTemplate; import com.dfsek.terra.addons.image.image.Image; import com.dfsek.terra.addons.image.sampler.ColorSampler; import com.dfsek.terra.addons.manifest.api.AddonInitializer; @@ -48,6 +49,7 @@ public class ImageLibraryAddon implements AddonInitializer { colorSamplerRegistry.register(addon.key("TILED_IMAGE"), TileImageColorSamplerTemplate::new); colorSamplerRegistry.register(addon.key("COLOR"), ConstantColorSamplerTemplate::new); colorSamplerRegistry.register(addon.key("ROTATE"), RotateColorSamplerTemplate::new); + colorSamplerRegistry.register(addon.key("TRANSLATE"), TranslateColorSamplerTemplate::new); }); } } diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/mutate/TranslateColorSamplerTemplate.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/mutate/TranslateColorSamplerTemplate.java new file mode 100644 index 000000000..7141c8ad8 --- /dev/null +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/config/sampler/mutate/TranslateColorSamplerTemplate.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.addons.image.config.sampler.mutate; + +import com.dfsek.tectonic.api.config.template.annotations.Value; + +import com.dfsek.terra.addons.image.sampler.ColorSampler; +import com.dfsek.terra.addons.image.sampler.mutate.TranslateColorSampler; + + +public class TranslateColorSamplerTemplate extends MutateColorSamplerTemplate { + + @Value("x") + private int translateX; + + @Value("z") + private int translateZ; + + @Override + public ColorSampler get() { + return new TranslateColorSampler(sampler, translateX, translateZ); + } +} diff --git a/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/mutate/TranslateColorSampler.java b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/mutate/TranslateColorSampler.java new file mode 100644 index 000000000..8f9c35fa8 --- /dev/null +++ b/common/addons/library-image/src/main/java/com/dfsek/terra/addons/image/sampler/mutate/TranslateColorSampler.java @@ -0,0 +1,21 @@ +package com.dfsek.terra.addons.image.sampler.mutate; + +import com.dfsek.terra.addons.image.sampler.ColorSampler; + + +public class TranslateColorSampler implements ColorSampler { + + private final ColorSampler sampler; + private final int translateX, translateZ; + + public TranslateColorSampler(ColorSampler sampler, int translateX, int translateZ) { + this.sampler = sampler; + this.translateX = translateX; + this.translateZ = translateZ; + } + + @Override + public Integer apply(int x, int z) { + return sampler.apply(x - translateX, z - translateZ); + } +}