diff options
author | DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com> | 2022-06-05 17:43:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-05 17:43:23 +0200 |
commit | ab7256dff5d6d37488081ba7a01b36d3ee9ef563 (patch) | |
tree | 8207341e6c402848cdbe7b2f2297f5f975e0e083 /src/main/java/cc/polyfrost/oneconfig/renderer/font | |
parent | a903cfc4d3f76cf3db24749b65156d126fa714e7 (diff) | |
download | OneConfig-ab7256dff5d6d37488081ba7a01b36d3ee9ef563.tar.gz OneConfig-ab7256dff5d6d37488081ba7a01b36d3ee9ef563.tar.bz2 OneConfig-ab7256dff5d6d37488081ba7a01b36d3ee9ef563.zip |
refactor (#36)
* refactor
* fix vig compat
* fix nanovg thingy
* e
* finalize
* gui utils package thingy
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/renderer/font')
3 files changed, 103 insertions, 0 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/renderer/font/Font.java b/src/main/java/cc/polyfrost/oneconfig/renderer/font/Font.java new file mode 100644 index 0000000..b35708b --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/renderer/font/Font.java @@ -0,0 +1,41 @@ +package cc.polyfrost.oneconfig.renderer.font; + +import java.nio.ByteBuffer; + +public class Font { + private final String fileName; + private final String name; + private boolean loaded = false; + private ByteBuffer buffer = null; + + public Font(String name, String fileName) { + this.name = name; + this.fileName = fileName; + } + + public String getName() { + return name; + } + + public String getFileName() { + return fileName; + } + + public boolean isLoaded() { + return loaded; + } + + void setLoaded(boolean loaded) { + this.loaded = loaded; + } + + public ByteBuffer getBuffer() { + return buffer; + } + + void setBuffer(ByteBuffer buffer) { + this.buffer = buffer; + } + +} + diff --git a/src/main/java/cc/polyfrost/oneconfig/renderer/font/FontManager.java b/src/main/java/cc/polyfrost/oneconfig/renderer/font/FontManager.java new file mode 100644 index 0000000..388911d --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/renderer/font/FontManager.java @@ -0,0 +1,47 @@ +package cc.polyfrost.oneconfig.renderer.font; + +import cc.polyfrost.oneconfig.utils.IOUtils; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import static org.lwjgl.nanovg.NanoVG.nvgCreateFontMem; + +public class FontManager { + public static FontManager INSTANCE = new FontManager(); + + /** + * Load all fonts in the Fonts class + * + * @param vg NanoVG context + */ + + public void initialize(long vg) { + for (Fonts fonts : Fonts.values()) { + loadFont(vg, fonts.font); + } + } + + /** + * Load a font into NanoVG + * + * @param vg NanoVG context + * @param font The font to be loaded + */ + public void loadFont(long vg, Font font) { + if (font.isLoaded()) return; + int loaded = -1; + try { + ByteBuffer buffer = IOUtils.resourceToByteBuffer(font.getFileName()); + loaded = nvgCreateFontMem(vg, font.getName(), buffer, 0); + font.setBuffer(buffer); + } catch (IOException e) { + e.printStackTrace(); + } + if (loaded == -1) { + throw new RuntimeException("Failed to initialize font " + font.getName()); + } else { + font.setLoaded(true); + } + } +} diff --git a/src/main/java/cc/polyfrost/oneconfig/renderer/font/Fonts.java b/src/main/java/cc/polyfrost/oneconfig/renderer/font/Fonts.java new file mode 100644 index 0000000..9b6193f --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/renderer/font/Fonts.java @@ -0,0 +1,15 @@ +package cc.polyfrost.oneconfig.renderer.font; + +public enum Fonts { + BOLD(new Font("inter-bold", "/assets/oneconfig/font/Bold.otf")), + SEMIBOLD(new Font("inter-semibold", "/assets/oneconfig/font/SemiBold.otf")), + MEDIUM(new Font("inter-medium", "/assets/oneconfig/font/Medium.otf")), + REGULAR(new Font("inter-regular", "/assets/oneconfig/font/Regular.otf")), + MINECRAFT_REGULAR(new Font("mc-regular", "/assets/oneconfig/font/Minecraft-Regular.otf")), + MINECRAFT_BOLD(new Font("mc-bold", "/assets/oneconfig/font/Minecraft-Bold.otf")); + public final Font font; + + Fonts(Font font) { + this.font = font; + } +} |