diff --git a/src/main/java/org/saturnclient/ui2/RenderScope.java b/src/main/java/org/saturnclient/ui2/RenderScope.java index 5cd7f59..1f846e6 100644 --- a/src/main/java/org/saturnclient/ui2/RenderScope.java +++ b/src/main/java/org/saturnclient/ui2/RenderScope.java @@ -9,11 +9,14 @@ import java.util.function.Function; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; import org.saturnclient.ui2.resources.Fonts; +import org.saturnclient.ui2.resources.SvgTexture; + import com.mojang.blaze3d.systems.RenderSystem; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.mixin.DrawContextAccessor; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer.TextLayerType; import net.minecraft.client.gui.DrawContext; @@ -224,6 +227,11 @@ public class RenderScope { private void drawTexturedQuad(Identifier sprite, int x1, int x2, int y1, int y2, float u1, float u2, float v1, float v2, int color) { + + if (sprite.toString().endsWith(".svg")) { + sprite = SvgTexture.getSvg(MinecraftClient.getInstance(), sprite, (x2 - x1) * 2, (y2 - y1) * 2); + } + if (color == 0) return; x1 *= 4; diff --git a/src/main/java/org/saturnclient/ui2/resources/SvgTexture.java b/src/main/java/org/saturnclient/ui2/resources/SvgTexture.java index 438a190..937a79e 100644 --- a/src/main/java/org/saturnclient/ui2/resources/SvgTexture.java +++ b/src/main/java/org/saturnclient/ui2/resources/SvgTexture.java @@ -4,12 +4,13 @@ import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; import com.kitfox.svg.SVGDiagram; import com.kitfox.svg.SVGUniverse; import org.jetbrains.annotations.Nullable; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.cosmetics.cloaks.utils.IdentifierUtils; import net.minecraft.client.MinecraftClient; @@ -17,6 +18,8 @@ import net.minecraft.util.Identifier; public class SvgTexture { + private static List svgCache = new ArrayList<>(); + private static BufferedImage renderSvg(InputStream svgStream, int width, int height) throws Exception { // Load SVG SVGUniverse universe = new SVGUniverse(); @@ -52,6 +55,13 @@ public class SvgTexture { @Nullable @SuppressWarnings("resource") public static Identifier getSvg(MinecraftClient client, Identifier svgImage, int width, int height) { + Identifier id = Identifier + .of(svgImage.toString().replaceAll("\\.svg$", (width + "_" + height).toString() + ".png")); + + if (svgCache.contains(id)) { + return id; + } + try (InputStream svgStream = client .getResourceManager() .getResource(svgImage).get() @@ -59,9 +69,6 @@ public class SvgTexture { BufferedImage image = renderSvg(svgStream, width, height); - System.out.println(svgImage.toString()); - - Identifier id = Identifier.of(SaturnClient.MOD_ID, "img_svg_render_" + (int) (Math.random() * 30)); IdentifierUtils.registerBufferedImageTexture(id, image); return id; diff --git a/src/main/java/org/saturnclient/ui2/resources/Textures.java b/src/main/java/org/saturnclient/ui2/resources/Textures.java index cdaac79..35a238c 100644 --- a/src/main/java/org/saturnclient/ui2/resources/Textures.java +++ b/src/main/java/org/saturnclient/ui2/resources/Textures.java @@ -53,7 +53,7 @@ public class Textures { } public static Identifier getModIcon(String modId) { - return Identifier.of("saturnclient", "textures/gui/mod/" + modId + ".png"); + return Identifier.of("saturnclient", "textures/gui/mod/" + modId + ".svg"); } } diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/armor.png b/src/main/resources/assets/saturnclient/textures/gui/mod/armor.png deleted file mode 100644 index 3d1c75e..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/armor.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/armor.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/armor.svg new file mode 100644 index 0000000..c5995e0 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/armor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/coords.png b/src/main/resources/assets/saturnclient/textures/gui/mod/coords.png deleted file mode 100644 index 5af14bf..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/coords.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/coords.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/coords.svg new file mode 100644 index 0000000..317f49b --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/coords.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png b/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png deleted file mode 100644 index cd208a3..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.svg new file mode 100644 index 0000000..bb0cb50 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/crosshair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/day.png b/src/main/resources/assets/saturnclient/textures/gui/mod/day.png deleted file mode 100644 index 5fb3352..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/day.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/day.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/day.svg new file mode 100644 index 0000000..9432885 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/day.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/effect.png b/src/main/resources/assets/saturnclient/textures/gui/mod/effect.png deleted file mode 100644 index ad39774..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/effect.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/effect.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/effect.svg new file mode 100644 index 0000000..0e61d06 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/effect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/fps.png b/src/main/resources/assets/saturnclient/textures/gui/mod/fps.png deleted file mode 100644 index 0daed16..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/fps.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/fps.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/fps.svg new file mode 100644 index 0000000..6e76d84 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/fps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/freelook.png b/src/main/resources/assets/saturnclient/textures/gui/mod/freelook.png deleted file mode 100644 index 9418d12..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/freelook.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/freelook.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/freelook.svg new file mode 100644 index 0000000..199e319 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/freelook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/fullbright.png b/src/main/resources/assets/saturnclient/textures/gui/mod/fullbright.png deleted file mode 100644 index dfa9f7a..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/fullbright.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/fullbright.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/fullbright.svg new file mode 100644 index 0000000..3e8360d --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/fullbright.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/health.png b/src/main/resources/assets/saturnclient/textures/gui/mod/health.png deleted file mode 100644 index dcca15c..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/health.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/health.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/health.svg new file mode 100644 index 0000000..491bbd7 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/health.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.png b/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.png deleted file mode 100644 index da20fcd..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.svg new file mode 100644 index 0000000..f7e19c9 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/keystrokes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.png b/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.png deleted file mode 100644 index d7dc168..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.svg new file mode 100644 index 0000000..63a48cc --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/nofog.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/particles.png b/src/main/resources/assets/saturnclient/textures/gui/mod/particles.png deleted file mode 100644 index 3709190..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/particles.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/particles.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/particles.svg new file mode 100644 index 0000000..f4addd6 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/particles.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/speed.png b/src/main/resources/assets/saturnclient/textures/gui/mod/speed.png deleted file mode 100644 index 8ad03eb..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/speed.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/speed.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/speed.svg new file mode 100644 index 0000000..e8ff01c --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/speed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/sprint.png b/src/main/resources/assets/saturnclient/textures/gui/mod/sprint.png deleted file mode 100644 index c1c507c..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/sprint.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/sprint.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/sprint.svg new file mode 100644 index 0000000..35e91e7 --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/sprint.svg @@ -0,0 +1,35 @@ + + + + +Created by potrace 1.15, written by Peter Selinger 2001-2017 + + + + + + diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/zoom.png b/src/main/resources/assets/saturnclient/textures/gui/mod/zoom.png deleted file mode 100644 index c6969ae..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/mod/zoom.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/zoom.svg b/src/main/resources/assets/saturnclient/textures/gui/mod/zoom.svg new file mode 100644 index 0000000..320a59d --- /dev/null +++ b/src/main/resources/assets/saturnclient/textures/gui/mod/zoom.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/main/resources/assets/saturnclient/textures/gui/test.svg b/src/main/resources/assets/saturnclient/textures/gui/test.svg deleted file mode 100644 index 15e0aff..0000000 --- a/src/main/resources/assets/saturnclient/textures/gui/test.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file