From 4334b16ded54e7a1f4b983ad1d33d896c3ec6d34 Mon Sep 17 00:00:00 2001 From: Astrash Date: Fri, 12 Aug 2022 12:34:27 +1000 Subject: [PATCH] Use color pickers in image sampler --- .../dfsek/terra/addons/noise/image/ImageSampler.java | 12 ++++++------ .../noise/image/config/ImageSamplerTemplate.java | 6 +++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java index 90de1dac7..9f9da6a7f 100644 --- a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java +++ b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/ImageSampler.java @@ -7,10 +7,9 @@ package com.dfsek.terra.addons.noise.image; -import net.jafama.FastMath; - import java.awt.image.BufferedImage; +import com.dfsek.terra.addons.image.picker.ColorPicker; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; import com.dfsek.terra.api.noise.NoiseSampler; @@ -21,17 +20,18 @@ public class ImageSampler implements NoiseSampler { private final double frequency; - public ImageSampler(BufferedImage image, Channel channel, double frequency) { + private final ColorPicker colorPicker; + + public ImageSampler(BufferedImage image, ColorPicker colorPicker, Channel channel, double frequency) { this.image = image; this.channel = channel; this.frequency = frequency; + this.colorPicker = colorPicker; } @Override public double noise(long seed, double x, double y) { - return ((channel.getChannel(image.getRGB(FastMath.floorMod(FastMath.floorToInt(x * frequency), image.getWidth()), - FastMath.floorMod(FastMath.floorToInt(y * frequency), image.getHeight()))) / 255D) - 0.5) * - 2; + return channel.getChannel(colorPicker.apply(image, (int) (x * frequency), (int) (y * frequency))) / 255D * 2 - 1; } @Override diff --git a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java index 023fcb11c..bdbc366ef 100644 --- a/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java +++ b/common/addons/config-noise-image/src/main/java/com/dfsek/terra/addons/noise/image/config/ImageSamplerTemplate.java @@ -11,6 +11,7 @@ import com.dfsek.tectonic.api.config.template.annotations.Value; import java.awt.image.BufferedImage; +import com.dfsek.terra.addons.image.picker.ColorPicker; import com.dfsek.terra.addons.image.util.ColorUtil.Channel; import com.dfsek.terra.addons.noise.config.templates.SamplerTemplate; import com.dfsek.terra.addons.noise.image.ImageSampler; @@ -24,6 +25,9 @@ public class ImageSamplerTemplate extends SamplerTemplate { @Value("image") private @Meta BufferedImage image; + @Value("mode") + private @Meta ColorPicker colorPicker; + @Value("frequency") private @Meta double frequency; @@ -32,6 +36,6 @@ public class ImageSamplerTemplate extends SamplerTemplate { @Override public NoiseSampler get() { - return new ImageSampler(image, channel, frequency); + return new ImageSampler(image, colorPicker, channel, frequency); } }