aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuuxel <6596629+Juuxel@users.noreply.github.com>2020-08-03 01:24:05 +0300
committerJuuxel <6596629+Juuxel@users.noreply.github.com>2020-08-03 01:24:05 +0300
commitdb467566dcb1341396d629b5ad6fefc8307e221c (patch)
tree9d7105ca2a900cb93eae7c117452334848c1c1e0
parent8b64e485972a150907938edb1b66c9cb066d2aa9 (diff)
downloadLibGui-db467566dcb1341396d629b5ad6fefc8307e221c.tar.gz
LibGui-db467566dcb1341396d629b5ad6fefc8307e221c.tar.bz2
LibGui-db467566dcb1341396d629b5ad6fefc8307e221c.zip
Add Texture class for representing a texture with UV values
Closes #47.
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/client/ScreenDrawing.java32
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/widget/WBar.java28
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/widget/WSprite.java120
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/widget/WTiledSprite.java35
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/widget/WToggleButton.java50
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/widget/data/Texture.java64
-rw-r--r--src/main/java/io/github/cottonmc/cotton/gui/widget/icon/TextureIcon.java13
7 files changed, 291 insertions, 51 deletions
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/client/ScreenDrawing.java b/src/main/java/io/github/cottonmc/cotton/gui/client/ScreenDrawing.java
index 5e07fbb..f382911 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/client/ScreenDrawing.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/client/ScreenDrawing.java
@@ -2,6 +2,7 @@ package io.github.cottonmc.cotton.gui.client;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
+import io.github.cottonmc.cotton.gui.widget.data.Texture;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.Tessellator;
@@ -74,6 +75,37 @@ public class ScreenDrawing {
* @param y the y coordinate of the box on-screen
* @param width the width of the box on-screen
* @param height the height of the box on-screen
+ * @param texture the texture
+ * @param color a color to tint the texture. This can be transparent! Use 0xFF_FFFFFF if you don't want a color tint
+ * @since 3.0.0
+ */
+ public static void texturedRect(int x, int y, int width, int height, Texture texture, int color) {
+ texturedRect(x, y, width, height, texture, color, 1.0f);
+ }
+
+ /**
+ * Draws a textured rectangle.
+ *
+ * @param x the x coordinate of the box on-screen
+ * @param y the y coordinate of the box on-screen
+ * @param width the width of the box on-screen
+ * @param height the height of the box on-screen
+ * @param texture the texture
+ * @param color a color to tint the texture. This can be transparent! Use 0xFF_FFFFFF if you don't want a color tint
+ * @param opacity opacity of the drawn texture. (0f is fully opaque and 1f is fully visible)
+ * @since 3.0.0
+ */
+ public static void texturedRect(int x, int y, int width, int height, Texture texture, int color, float opacity) {
+ texturedRect(x, y, width, height, texture.image, texture.u1, texture.v1, texture.u2, texture.v2, color, opacity);
+ }
+
+ /**
+ * Draws a textured rectangle.
+ *
+ * @param x the x coordinate of the box on-screen
+ * @param y the y coordinate of the box on-screen
+ * @param width the width of the box on-screen
+ * @param height the height of the box on-screen
* @param texture the Identifier for the texture
* @param u1 the left edge of the texture
* @param v1 the top edge of the texture
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WBar.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WBar.java
index 71973b4..1d332ea 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WBar.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WBar.java
@@ -1,5 +1,6 @@
package io.github.cottonmc.cotton.gui.widget;
+import io.github.cottonmc.cotton.gui.widget.data.Texture;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.util.math.MatrixStack;
@@ -11,6 +12,7 @@ import net.minecraft.util.Identifier;
import io.github.cottonmc.cotton.gui.GuiDescription;
import io.github.cottonmc.cotton.gui.client.ScreenDrawing;
+import net.minecraft.util.math.MathHelper;
import javax.annotation.Nullable;
@@ -25,13 +27,15 @@ public class WBar extends WWidget {
* The background texture. If not null, it will be
* drawn behind the bar contents.
*/
- protected final Identifier bg;
+ @Nullable
+ protected final Texture bg;
/**
* The bar texture. If not null, it will be
* drawn to represent the current field.
*/
- protected final Identifier bar;
+ @Nullable
+ protected final Texture bar;
/**
* The ID of the displayed property in the {@link #properties}.
@@ -58,11 +62,11 @@ public class WBar extends WWidget {
protected String tooltipLabel;
protected Text tooltipTextComponent;
- public WBar(Identifier bg, Identifier bar, int field, int maxfield) {
+ public WBar(Texture bg, Texture bar, int field, int maxfield) {
this(bg, bar, field, maxfield, Direction.UP);
}
- public WBar(Identifier bg, Identifier bar, int field, int maxfield, Direction dir) {
+ public WBar(Texture bg, Texture bar, int field, int maxfield, Direction dir) {
this.bg = bg;
this.bar = bar;
this.field = field;
@@ -71,6 +75,14 @@ public class WBar extends WWidget {
this.direction = dir;
}
+ public WBar(Identifier bg, Identifier bar, int field, int maxfield) {
+ this(bg, bar, field, maxfield, Direction.UP);
+ }
+
+ public WBar(Identifier bg, Identifier bar, int field, int maxfield, Direction dir) {
+ this(new Texture(bg), new Texture(bar), field, maxfield, dir);
+ }
+
/**
* Adds a tooltip to the WBar.
*
@@ -124,7 +136,7 @@ public class WBar extends WWidget {
int top = y + getHeight();
top -= barSize;
if (bar!=null) {
- ScreenDrawing.texturedRect(left, top, getWidth(), barSize, bar, 0, 1 - percent, 1, 1, 0xFFFFFFFF);
+ ScreenDrawing.texturedRect(left, top, getWidth(), barSize, bar.image, bar.u1, MathHelper.lerp(percent, bar.v2, bar.v1), bar.u2, bar.v2, 0xFFFFFFFF);
} else {
ScreenDrawing.coloredRect(left, top, getWidth(), barSize, ScreenDrawing.colorAtOpacity(0xFFFFFF, 0.5f));
}
@@ -132,7 +144,7 @@ public class WBar extends WWidget {
}
case RIGHT: {
if (bar!=null) {
- ScreenDrawing.texturedRect(x, y, barSize, getHeight(), bar, 0, 0, percent, 1, 0xFFFFFFFF);
+ ScreenDrawing.texturedRect(x, y, barSize, getHeight(), bar.image, bar.u1, bar.v1, MathHelper.lerp(percent, bar.u1, bar.u2), bar.v2, 0xFFFFFFFF);
} else {
ScreenDrawing.coloredRect(x, y, barSize, getHeight(), ScreenDrawing.colorAtOpacity(0xFFFFFF, 0.5f));
}
@@ -140,7 +152,7 @@ public class WBar extends WWidget {
}
case DOWN: {
if (bar!=null) {
- ScreenDrawing.texturedRect(x, y, getWidth(), barSize, bar, 0, 0, 1, percent, 0xFFFFFFFF);
+ ScreenDrawing.texturedRect(x, y, getWidth(), barSize, bar.image, bar.u1, bar.v1, bar.u2, MathHelper.lerp(percent, bar.v1, bar.v2), 0xFFFFFFFF);
} else {
ScreenDrawing.coloredRect(x, y, getWidth(), barSize, ScreenDrawing.colorAtOpacity(0xFFFFFF, 0.5f));
}
@@ -151,7 +163,7 @@ public class WBar extends WWidget {
int top = y;
left -= barSize;
if (bar!=null) {
- ScreenDrawing.texturedRect(left, top, barSize, getHeight(), bar, 1 - percent, 0, 1, 1, 0xFFFFFFFF);
+ ScreenDrawing.texturedRect(left, top, barSize, getHeight(), bar.image, MathHelper.lerp(percent, bar.u2, bar.u1), bar.v1, bar.u2, bar.v2, 0xFFFFFFFF);
} else {
ScreenDrawing.coloredRect(left, top, barSize, getHeight(), ScreenDrawing.colorAtOpacity(0xFFFFFF, 0.5f));
}
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WSprite.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WSprite.java
index c91e011..9e6f038 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WSprite.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WSprite.java
@@ -1,5 +1,6 @@
package io.github.cottonmc.cotton.gui.widget;
+import io.github.cottonmc.cotton.gui.widget.data.Texture;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.util.math.MatrixStack;
@@ -10,28 +11,28 @@ import io.github.cottonmc.cotton.gui.client.ScreenDrawing;
public class WSprite extends WWidget {
protected int currentFrame= 0;
protected long currentFrameTime = 0;
- protected Identifier[] frames;
+ protected Texture[] frames;
protected int frameTime;
protected long lastFrame;
protected boolean singleImage = false;
protected int tint = 0xFFFFFFFF;
- /** The left edge of the texture as a fraction. */
- protected float u1 = 0;
- /** The top edge of the texture as a fraction. */
- protected float v1 = 0;
- /** The right edge of the texture as a fraction. */
- protected float u2 = 1;
- /** The bottom edge of the texture as a fraction. */
- protected float v2 = 1;
+ /**
+ * Create a new sprite with a single image.
+ * @param texture The image texture to display.
+ * @since 3.0.0
+ */
+ public WSprite(Texture texture) {
+ this.frames = new Texture[]{texture};
+ this.singleImage = true;
+ }
/**
* Create a new sprite with a single image.
* @param image The location of the image to display.
*/
public WSprite(Identifier image) {
- this.frames = new Identifier[]{image};
- this.singleImage = true;
+ this(new Texture(image));
}
/**
@@ -44,11 +45,7 @@ public class WSprite extends WWidget {
* @param v2 the bottom edge of the texture
*/
public WSprite(Identifier image, float u1, float v1, float u2, float v2) {
- this(image);
- this.u1 = u1;
- this.v1 = v1;
- this.u2 = u2;
- this.v2 = v2;
+ this(new Texture(image, u1, v1, u2, v2));
}
/**
@@ -58,19 +55,74 @@ public class WSprite extends WWidget {
*/
public WSprite(int frameTime, Identifier... frames) {
this.frameTime = frameTime;
+ this.frames = new Texture[frames.length];
+
+ for (int i = 0; i < frames.length; i++) {
+ this.frames[i] = new Texture(frames[i]);
+ }
+
+ if (frames.length==1) this.singleImage = true;
+ }
+
+ /**
+ * Create a new animated sprite.
+ * @param frameTime How long in milliseconds to display for. (1 tick = 50 ms)
+ * @param frames The locations of the frames of the animation.
+ * @since 3.0.0
+ */
+ public WSprite(int frameTime, Texture... frames) {
+ this.frameTime = frameTime;
this.frames = frames;
if (frames.length==1) this.singleImage = true;
}
+ /**
+ * Sets the image of this sprite.
+ *
+ * @param image the new image
+ * @return this sprite
+ */
public WSprite setImage(Identifier image) {
- this.frames = new Identifier[]{image};
+ return setImage(new Texture(image));
+ }
+
+ /**
+ * Sets the animation frames of this sprite.
+ *
+ * @param frames the frames
+ * @return this sprite
+ */
+ public WSprite setFrames(Identifier... frames) {
+ Texture[] textures = new Texture[frames.length];
+ for (int i = 0; i < frames.length; i++) {
+ textures[i] = new Texture(frames[i]);
+ }
+ return setFrames(textures);
+ }
+
+ /**
+ * Sets the image of this sprite.
+ *
+ * @param image the new image
+ * @return this sprite
+ * @since 3.0.0
+ */
+ public WSprite setImage(Texture image) {
+ this.frames = new Texture[]{image};
this.singleImage = true;
this.currentFrame = 0;
this.currentFrameTime = 0;
return this;
}
- public WSprite setFrames(Identifier... frames) {
+ /**
+ * Sets the animation frames of this sprite.
+ *
+ * @param frames the frames
+ * @return this sprite
+ * @since 3.0.0
+ */
+ public WSprite setFrames(Texture... frames) {
this.frames = frames;
if (frames.length==1) singleImage = true;
if (currentFrame>=frames.length) {
@@ -83,12 +135,21 @@ public class WSprite extends WWidget {
/**
* Sets the tint for this sprite to the following color-with-alpha. If you don't want to specify
* alpha, use {@link #setOpaqueTint(int)} instead.
+ *
+ * @param tint the new tint
+ * @return this sprite
*/
public WSprite setTint(int tint) {
this.tint = tint;
return this;
}
+ /**
+ * Sets the tint for this sprite to the following opaque color.
+ *
+ * @param tint the new tint
+ * @return this sprite
+ */
public WSprite setOpaqueTint(int tint) {
this.tint = tint | 0xFF000000;
return this;
@@ -106,12 +167,12 @@ public class WSprite extends WWidget {
* @since 1.8.0
*/
public WSprite setUv(float u1, float v1, float u2, float v2) {
- this.u1 = u1;
- this.v1 = v1;
- this.u2 = u2;
- this.v2 = v2;
+ Texture[] newFrames = new Texture[frames.length];
+ for (int i = 0; i < frames.length; i++) {
+ newFrames[i] = frames[i].withUv(u1, v1, u2, v2);
+ }
- return this;
+ return setFrames(newFrames);
}
@Override
@@ -132,7 +193,7 @@ public class WSprite extends WWidget {
boolean inBounds = (currentFrame >= 0) && (currentFrame < frames.length);
if (!inBounds) currentFrame = 0;
//assemble and draw the frame calculated last iteration.
- Identifier currentFrameTex = frames[currentFrame];
+ Texture currentFrameTex = frames[currentFrame];
paintFrame(x, y, currentFrameTex);
//calculate how much time has elapsed since the last animation change, and change the frame if necessary.
@@ -152,8 +213,15 @@ public class WSprite extends WWidget {
}
}
+ /**
+ * Paints a single frame for this sprite.
+ *
+ * @param x the X coordinate to draw it at
+ * @param y the Y coordinate to draw it at
+ * @param texture the texture to draw
+ */
@Environment(EnvType.CLIENT)
- public void paintFrame(int x, int y, Identifier texture) {
- ScreenDrawing.texturedRect(x, y, getWidth(), getHeight(), texture, u1, v1, u2, v2, tint);
+ protected void paintFrame(int x, int y, Texture texture) {
+ ScreenDrawing.texturedRect(x, y, getWidth(), getHeight(), texture, tint);
}
}
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WTiledSprite.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WTiledSprite.java
index 516c876..2b7f3ca 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WTiledSprite.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WTiledSprite.java
@@ -1,6 +1,7 @@
package io.github.cottonmc.cotton.gui.widget;
import io.github.cottonmc.cotton.gui.client.ScreenDrawing;
+import io.github.cottonmc.cotton.gui.widget.data.Texture;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.util.Identifier;
@@ -42,6 +43,35 @@ public class WTiledSprite extends WSprite {
}
/**
+ * Create a tiled sprite.
+ *
+ * @param tileWidth The width a tile
+ * @param tileHeight The height of a tile
+ * @param image The image to tile
+ * @since 3.0.0
+ */
+ public WTiledSprite(int tileWidth, int tileHeight, Texture image) {
+ super(image);
+ this.tileWidth = tileWidth;
+ this.tileHeight = tileHeight;
+ }
+
+ /**
+ * Create a new animated tiled sprite.
+ *
+ * @param tileWidth The width a tile
+ * @param tileHeight The height of a tile
+ * @param frameTime How long in milliseconds to display for. (1 tick = 50 ms)
+ * @param frames The locations of the frames of the animation.
+ * @since 3.0.0
+ */
+ public WTiledSprite(int tileWidth, int tileHeight, int frameTime, Texture... frames) {
+ super(frameTime, frames);
+ this.tileWidth = tileWidth;
+ this.tileHeight = tileHeight;
+ }
+
+ /**
* Sets the tiling size. This determines how often the texture will repeat.
*
* @param width the new tiling width
@@ -98,7 +128,7 @@ public class WTiledSprite extends WSprite {
@Environment(EnvType.CLIENT)
@Override
- public void paintFrame(int x, int y, Identifier texture) {
+ public void paintFrame(int x, int y, Texture texture) {
// Y Direction (down)
for (int tileYOffset = 0; tileYOffset < height; tileYOffset += tileHeight) {
// X Direction (right)
@@ -112,8 +142,7 @@ public class WTiledSprite extends WSprite {
getTileWidth(), getTileHeight(),
// render the current texture
texture,
- // clips the texture if wanted
- u1, v1, u2, v2, tint);
+ tint);
}
}
}
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WToggleButton.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WToggleButton.java
index 29f8648..7c37aa5 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WToggleButton.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WToggleButton.java
@@ -1,5 +1,6 @@
package io.github.cottonmc.cotton.gui.widget;
+import io.github.cottonmc.cotton.gui.widget.data.Texture;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
@@ -17,13 +18,13 @@ import java.util.function.Consumer;
public class WToggleButton extends WWidget {
// Default on/off images
- protected final static Identifier DEFAULT_OFF_IMAGE = new Identifier("libgui:textures/widget/toggle_off.png");
- protected final static Identifier DEFAULT_ON_IMAGE = new Identifier("libgui:textures/widget/toggle_on.png");
- protected final static Identifier DEFAULT_FOCUS_IMAGE = new Identifier("libgui:textures/widget/toggle_focus.png");
+ protected static final Texture DEFAULT_OFF_IMAGE = new Texture(new Identifier("libgui:textures/widget/toggle_off.png"));
+ protected static final Texture DEFAULT_ON_IMAGE = new Texture(new Identifier("libgui:textures/widget/toggle_on.png"));
+ protected static final Texture DEFAULT_FOCUS_IMAGE = new Texture(new Identifier("libgui:textures/widget/toggle_focus.png"));
- protected Identifier onImage;
- protected Identifier offImage;
- protected Identifier focusImage = DEFAULT_FOCUS_IMAGE;
+ protected Texture onImage;
+ protected Texture offImage;
+ protected Texture focusImage = DEFAULT_FOCUS_IMAGE;
@Nullable protected Text label = null;
@@ -57,6 +58,28 @@ public class WToggleButton extends WWidget {
* @param offImage the toggled off image
*/
public WToggleButton(Identifier onImage, Identifier offImage) {
+ this(new Texture(onImage), new Texture(offImage));
+ }
+
+ /**
+ * Constructs a toggle button with custom images.
+ *
+ * @param onImage the toggled on image
+ * @param offImage the toggled off image
+ * @param label the button label
+ */
+ public WToggleButton(Identifier onImage, Identifier offImage, Text label) {
+ this(new Texture(onImage), new Texture(offImage), label);
+ }
+
+ /**
+ * Constructs a toggle button with custom images and no label.
+ *
+ * @param onImage the toggled on image
+ * @param offImage the toggled off image
+ * @since 3.0.0
+ */
+ public WToggleButton(Texture onImage, Texture offImage) {
this.onImage = onImage;
this.offImage = offImage;
}
@@ -67,8 +90,9 @@ public class WToggleButton extends WWidget {
* @param onImage the toggled on image
* @param offImage the toggled off image
* @param label the button label
+ * @since 3.0.0
*/
- public WToggleButton(Identifier onImage, Identifier offImage, Text label) {
+ public WToggleButton(Texture onImage, Texture offImage, Text label) {
this.onImage = onImage;
this.offImage = offImage;
this.label = label;
@@ -151,29 +175,29 @@ public class WToggleButton extends WWidget {
return this;
}
- public Identifier getOnImage() {
+ public Texture getOnImage() {
return onImage;
}
- public WToggleButton setOnImage(Identifier onImage) {
+ public WToggleButton setOnImage(Texture onImage) {
this.onImage = onImage;
return this;
}
- public Identifier getOffImage() {
+ public Texture getOffImage() {
return offImage;
}
- public WToggleButton setOffImage(Identifier offImage) {
+ public WToggleButton setOffImage(Texture offImage) {
this.offImage = offImage;
return this;
}
- public Identifier getFocusImage() {
+ public Texture getFocusImage() {
return focusImage;
}
- public WToggleButton setFocusImage(Identifier focusImage) {
+ public WToggleButton setFocusImage(Texture focusImage) {
this.focusImage = focusImage;
return this;
}
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/data/Texture.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/data/Texture.java
new file mode 100644
index 0000000..408a3cd
--- /dev/null
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/data/Texture.java
@@ -0,0 +1,64 @@
+package io.github.cottonmc.cotton.gui.widget.data;
+
+import net.minecraft.util.Identifier;
+
+import java.util.Objects;
+
+/**
+ * Represents a texture for a widget.
+ *
+ * @since 3.0.0
+ */
+public final class Texture {
+ /**
+ * The image of this texture.
+ */
+ public final Identifier image;
+
+ /**
+ * The UV coordinates of this texture, between 0 and 1.
+ */
+ public final float u1, v1, u2, v2;
+
+ /**
+ * Constructs a new texture that uses the full image.
+ *
+ * @param image the image
+ * @throws NullPointerException if the image is null
+ */
+ public Texture(Identifier image) {
+ this(image, 0, 0, 1, 1);
+ }
+
+ /**
+ * Constructs a new texture with custom UV values.
+ *
+ * @param image the image
+ * @param u1 the left U coordinate
+ * @param v1 the top V coordinate
+ * @param u2 the right U coordinate
+ * @param v2 the bottom V coordinate
+ * @throws NullPointerException if the image is null
+ */
+ public Texture(Identifier image, float u1, float v1, float u2, float v2) {
+ this.image = Objects.requireNonNull(image, "image");
+
+ this.u1 = u1;
+ this.v1 = v1;
+ this.u2 = u2;
+ this.v2 = v2;
+ }
+
+ /**
+ * Creates a new texture with different UV values.
+ *
+ * @param u1 the left U coordinate
+ * @param v1 the top V coordinate
+ * @param u2 the right U coordinate
+ * @param v2 the bottom V coordinate
+ * @return the created texture
+ */
+ public Texture withUv(float u1, float v1, float u2, float v2) {
+ return new Texture(image, u1, v1, u2, v2);
+ }
+}
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/TextureIcon.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/TextureIcon.java
index 0876cb5..1d7dcc9 100644
--- a/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/TextureIcon.java
+++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/icon/TextureIcon.java
@@ -1,6 +1,7 @@
package io.github.cottonmc.cotton.gui.widget.icon;
import io.github.cottonmc.cotton.gui.client.ScreenDrawing;
+import io.github.cottonmc.cotton.gui.widget.data.Texture;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.util.math.MatrixStack;
@@ -12,7 +13,7 @@ import net.minecraft.util.Identifier;
* @since 2.2.0
*/
public class TextureIcon implements Icon {
- private final Identifier texture;
+ private final Texture texture;
private float opacity = 1f;
private int color = 0xFF_FFFFFF;
@@ -22,6 +23,16 @@ public class TextureIcon implements Icon {
* @param texture the identifier of the icon texture
*/
public TextureIcon(Identifier texture) {
+ this(new Texture(texture));
+ }
+
+ /**
+ * Constructs a new texture icon.
+ *
+ * @param texture the identifier of the icon texture
+ * @since 3.0.0
+ */
+ public TextureIcon(Texture texture) {
this.texture = texture;
}