mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-17 14:21:08 +00:00
ColorPicker -> ColorSampler
This commit is contained in:
+7
-7
@@ -6,9 +6,9 @@ import java.awt.image.BufferedImage;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.dfsek.terra.addons.image.config.BufferedImageLoader;
|
||||
import com.dfsek.terra.addons.image.config.picker.SingleColorPickerTemplate;
|
||||
import com.dfsek.terra.addons.image.config.picker.TileColorPickerTemplate;
|
||||
import com.dfsek.terra.addons.image.picker.ColorPicker;
|
||||
import com.dfsek.terra.addons.image.config.sampler.SingleColorSamplerTemplate;
|
||||
import com.dfsek.terra.addons.image.config.sampler.TileColorSamplerTemplate;
|
||||
import com.dfsek.terra.addons.image.sampler.ColorSampler;
|
||||
import com.dfsek.terra.addons.manifest.api.AddonInitializer;
|
||||
import com.dfsek.terra.api.Platform;
|
||||
import com.dfsek.terra.api.addon.BaseAddon;
|
||||
@@ -21,7 +21,7 @@ import com.dfsek.terra.api.util.reflection.TypeKey;
|
||||
|
||||
public class ImageLibraryAddon implements AddonInitializer {
|
||||
|
||||
public static final TypeKey<Supplier<ObjectTemplate<ColorPicker>>> COLOR_PICKER_REGISTRY_KEY = new TypeKey<>() {
|
||||
public static final TypeKey<Supplier<ObjectTemplate<ColorSampler>>> COLOR_PICKER_REGISTRY_KEY = new TypeKey<>() {
|
||||
};
|
||||
|
||||
@Inject
|
||||
@@ -40,10 +40,10 @@ public class ImageLibraryAddon implements AddonInitializer {
|
||||
event.getPack().applyLoader(BufferedImage.class, new BufferedImageLoader(event.getPack().getLoader()));
|
||||
})
|
||||
.then(event -> {
|
||||
CheckedRegistry<Supplier<ObjectTemplate<ColorPicker>>> colorPickerRegistry = event.getPack().getOrCreateRegistry(
|
||||
CheckedRegistry<Supplier<ObjectTemplate<ColorSampler>>> colorSamplerRegistry = event.getPack().getOrCreateRegistry(
|
||||
COLOR_PICKER_REGISTRY_KEY);
|
||||
colorPickerRegistry.register(addon.key("SINGLE"), SingleColorPickerTemplate::new);
|
||||
colorPickerRegistry.register(addon.key("TILED"), TileColorPickerTemplate::new);
|
||||
colorSamplerRegistry.register(addon.key("SINGLE"), SingleColorSamplerTemplate::new);
|
||||
colorSamplerRegistry.register(addon.key("TILED"), TileColorSamplerTemplate::new);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
-17
@@ -1,17 +0,0 @@
|
||||
package com.dfsek.terra.addons.image.config.picker;
|
||||
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Default;
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||
|
||||
import com.dfsek.terra.addons.image.picker.ColorPicker;
|
||||
import com.dfsek.terra.addons.image.picker.transform.Alignment;
|
||||
|
||||
|
||||
public abstract class ColorPickerTemplate implements ObjectTemplate<ColorPicker> {
|
||||
|
||||
@Value("align")
|
||||
@Default
|
||||
protected Alignment alignment = Alignment.NONE;
|
||||
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
package com.dfsek.terra.addons.image.config.picker;
|
||||
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||
|
||||
import com.dfsek.terra.addons.image.picker.ColorPicker;
|
||||
import com.dfsek.terra.addons.image.picker.SimpleColorPicker;
|
||||
|
||||
|
||||
public class SingleColorPickerTemplate extends ColorPickerTemplate {
|
||||
|
||||
@Value("fallback")
|
||||
private int fallback;
|
||||
|
||||
@Override
|
||||
public ColorPicker get() {
|
||||
return new SimpleColorPicker(fallback, alignment);
|
||||
}
|
||||
}
|
||||
-13
@@ -1,13 +0,0 @@
|
||||
package com.dfsek.terra.addons.image.config.picker;
|
||||
|
||||
import com.dfsek.terra.addons.image.picker.ColorPicker;
|
||||
import com.dfsek.terra.addons.image.picker.TileColorPicker;
|
||||
|
||||
|
||||
public class TileColorPickerTemplate extends ColorPickerTemplate {
|
||||
|
||||
@Override
|
||||
public ColorPicker get() {
|
||||
return new TileColorPicker(alignment);
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.dfsek.terra.addons.image.config.sampler;
|
||||
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Default;
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||
import com.dfsek.tectonic.api.config.template.object.ObjectTemplate;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import com.dfsek.terra.addons.image.sampler.ColorSampler;
|
||||
import com.dfsek.terra.addons.image.sampler.transform.Alignment;
|
||||
|
||||
|
||||
public abstract class ColorSamplerTemplate implements ObjectTemplate<ColorSampler> {
|
||||
|
||||
@Value("path")
|
||||
protected BufferedImage image;
|
||||
|
||||
@Value("align")
|
||||
@Default
|
||||
protected Alignment alignment = Alignment.NONE;
|
||||
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.dfsek.terra.addons.image.config.sampler;
|
||||
|
||||
import com.dfsek.tectonic.api.config.template.annotations.Value;
|
||||
|
||||
import com.dfsek.terra.addons.image.sampler.ColorSampler;
|
||||
import com.dfsek.terra.addons.image.sampler.SimpleColorSampler;
|
||||
|
||||
|
||||
public class SingleColorSamplerTemplate extends ColorSamplerTemplate {
|
||||
@Value("fallback")
|
||||
private int fallback;
|
||||
|
||||
@Override
|
||||
public ColorSampler get() {
|
||||
return new SimpleColorSampler(image, fallback, alignment);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.dfsek.terra.addons.image.config.sampler;
|
||||
|
||||
import com.dfsek.terra.addons.image.sampler.ColorSampler;
|
||||
import com.dfsek.terra.addons.image.sampler.TileColorSampler;
|
||||
|
||||
|
||||
public class TileColorSamplerTemplate extends ColorSamplerTemplate {
|
||||
|
||||
@Override
|
||||
public ColorSampler get() {
|
||||
return new TileColorSampler(image, alignment);
|
||||
}
|
||||
}
|
||||
-15
@@ -1,15 +0,0 @@
|
||||
package com.dfsek.terra.addons.image.picker;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
@FunctionalInterface
|
||||
public interface ColorPicker {
|
||||
|
||||
/**
|
||||
* @param image Lookup image
|
||||
* @param x World x coordinate
|
||||
* @param z World z coordinate
|
||||
* @return Integer representing a web color
|
||||
*/
|
||||
Integer apply(BufferedImage image, int x, int z);
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.dfsek.terra.addons.image.sampler;
|
||||
|
||||
@FunctionalInterface
|
||||
public interface ColorSampler {
|
||||
|
||||
/**
|
||||
* @param x World x coordinate
|
||||
* @param z World z coordinate
|
||||
* @return Integer representing a web color
|
||||
*/
|
||||
Integer apply(int x, int z);
|
||||
}
|
||||
+8
-5
@@ -1,23 +1,26 @@
|
||||
package com.dfsek.terra.addons.image.picker;
|
||||
package com.dfsek.terra.addons.image.sampler;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import com.dfsek.terra.addons.image.picker.transform.ImageTransformation;
|
||||
import com.dfsek.terra.addons.image.sampler.transform.ImageTransformation;
|
||||
|
||||
|
||||
public class SimpleColorPicker implements ColorPicker {
|
||||
public class SimpleColorSampler implements ColorSampler {
|
||||
|
||||
private final BufferedImage image;
|
||||
|
||||
private final Integer fallback;
|
||||
|
||||
private final ImageTransformation transformation;
|
||||
|
||||
public SimpleColorPicker(int fallbackColor, ImageTransformation transformation) {
|
||||
public SimpleColorSampler(BufferedImage image, int fallbackColor, ImageTransformation transformation) {
|
||||
this.image = image;
|
||||
this.fallback = fallbackColor;
|
||||
this.transformation = transformation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer apply(BufferedImage image, int x, int z) {
|
||||
public Integer apply(int x, int z) {
|
||||
x = transformation.transformX(image, x);
|
||||
z = transformation.transformZ(image, z);
|
||||
if(x < 0 || z < 0 || x >= image.getWidth() || z >= image.getHeight()) return fallback;
|
||||
+8
-5
@@ -1,22 +1,25 @@
|
||||
package com.dfsek.terra.addons.image.picker;
|
||||
package com.dfsek.terra.addons.image.sampler;
|
||||
|
||||
import net.jafama.FastMath;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import com.dfsek.terra.addons.image.picker.transform.ImageTransformation;
|
||||
import com.dfsek.terra.addons.image.sampler.transform.ImageTransformation;
|
||||
|
||||
|
||||
public class TileColorPicker implements ColorPicker {
|
||||
public class TileColorSampler implements ColorSampler {
|
||||
|
||||
private final BufferedImage image;
|
||||
|
||||
private final ImageTransformation transformation;
|
||||
|
||||
public TileColorPicker(ImageTransformation transformation) {
|
||||
public TileColorSampler(BufferedImage image, ImageTransformation transformation) {
|
||||
this.image = image;
|
||||
this.transformation = transformation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer apply(BufferedImage image, int x, int z) {
|
||||
public Integer apply(int x, int z) {
|
||||
x = transformation.transformX(image, x);
|
||||
z = transformation.transformZ(image, z);
|
||||
return image.getRGB(FastMath.floorMod(x, image.getWidth()), FastMath.floorMod(z, image.getHeight()));
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.dfsek.terra.addons.image.picker.transform;
|
||||
package com.dfsek.terra.addons.image.sampler.transform;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.dfsek.terra.addons.image.picker.transform;
|
||||
package com.dfsek.terra.addons.image.sampler.transform;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
Reference in New Issue
Block a user