From 4763e62b5318c55ec3aece1985903360bbf4b33b Mon Sep 17 00:00:00 2001 From: Speiger Date: Tue, 28 Sep 2021 01:35:07 +0200 Subject: [PATCH] Reworked a couple systems. -Added: STBImage support. -Added: Dynamic Font Loader that supports Bitmap/TTF fonts (ttf using java not STB, because small deadline) -Added: NativeMemory Loader as optional parser into asset loading. -Reworked: How Images are made reloadable. -Added: A dynamic AtlasBuilder --- build.gradle | 2 +- .../coreengine/application/Application.java | 16 +- .../coreengine/application/BaseUIManager.java | 2 +- .../src/coreengine/assets/AssetLocation.java | 11 +- .../src/coreengine/assets/AssetManager.java | 28 +- .../speiger/src/coreengine/assets/IAsset.java | 5 +- .../src/coreengine/assets/IAssetPackage.java | 3 + .../src/coreengine/assets/IAssetParser.java | 3 +- .../coreengine/assets/impl/FolderAsset.java | 7 + .../assets/impl/FolderAssetPackage.java | 22 + .../src/coreengine/assets/impl/ZipAsset.java | 7 + .../assets/impl/ZipAssetPackage.java | 23 + .../assets/reloader/ResourceReloader.java | 2 +- .../src/coreengine/math/misc/ColorObject.java | 10 + .../coreengine/rendering/gui/FontLoader.java | 118 ----- .../coreengine/rendering/gui/GuiManager.java | 6 +- .../coreengine/rendering/gui/UITextures.java | 19 +- .../gui/components/IconComponent.java | 2 +- .../gui/components/ListComponent.java | 7 + .../gui/components/icon/TexturedIcon.java | 2 +- .../rendering/gui/helper/FontBuilder.java | 241 +++++++++++ .../rendering/gui/helper/TextFilter.java | 2 + .../rendering/gui/renderer/FontRenderer.java | 80 ++-- .../rendering/gui/renderer/IFontRenderer.java | 8 +- .../rendering/gui/renderer/UIRenderer.java | 4 +- .../renderer/provider/BitmapFontProvider.java | 141 ++++++ .../gui/renderer/provider/FontManager.java | 100 +++++ .../gui/renderer/provider/IFontProvider.java | 72 ++++ .../coreengine/rendering/models/DataType.java | 53 +++ .../rendering/models/GLDataType.java | 65 ++- .../rendering/models/VertexBuffer.java | 8 +- .../models/frameBuffer/TextureAttachment.java | 2 +- .../shader/uniforms/UniformTexture.java | 4 +- .../rendering/textures/ITexture.java | 22 - .../textures/{ => base}/AbstractTexture.java | 8 +- .../rendering/textures/base/ITexture.java | 56 +++ .../textures/base/NativeMemoryParser.java | 27 ++ .../textures/{ => base}/TextureManager.java | 4 +- .../textures/{ => base}/WrappedTexture.java | 10 +- .../textures/{ => custom}/DynamicTexture.java | 7 +- .../textures/custom/TextureAtlas.java | 304 +++++++++++++ .../textures/{ => normal}/DirectTexture.java | 8 +- .../textures/{ => normal}/SimpleTexture.java | 7 +- .../textures/stb/STBDirectTexture.java | 109 +++++ .../rendering/textures/stb/STBTexture.java | 98 +++++ .../coreengine/rendering/utils/Cursor.java | 2 +- .../utils/collections/CollectionUtils.java | 2 +- .../managers/dynamic/DynamicDataManager.java | 7 +- .../managers/dynamic/IDynamicDataHandler.java | 4 +- .../managers/fixed/FixedDataManager.java | 13 +- .../managers/fixed/IFixedDataHandler.java | 4 +- .../coreengine/utils/helpers/JsonUtil.java | 62 ++- .../assets/base/font/Roboto-Font-Texture.png | Bin 74194 -> 0 bytes .../assets/base/font/Roboto-Font.fnt | 395 ----------------- .../resources/assets/base/font/roboto.json | 405 ++++++++++++++++++ .../assets/base/font/roboto_texture.png | Bin 0 -> 190876 bytes 56 files changed, 1976 insertions(+), 653 deletions(-) delete mode 100644 src/main/java/speiger/src/coreengine/rendering/gui/FontLoader.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/gui/helper/FontBuilder.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/BitmapFontProvider.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/FontManager.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/IFontProvider.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/models/DataType.java delete mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/ITexture.java rename src/main/java/speiger/src/coreengine/rendering/textures/{ => base}/AbstractTexture.java (84%) create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/base/NativeMemoryParser.java rename src/main/java/speiger/src/coreengine/rendering/textures/{ => base}/TextureManager.java (94%) rename src/main/java/speiger/src/coreengine/rendering/textures/{ => base}/WrappedTexture.java (85%) rename src/main/java/speiger/src/coreengine/rendering/textures/{ => custom}/DynamicTexture.java (93%) create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/custom/TextureAtlas.java rename src/main/java/speiger/src/coreengine/rendering/textures/{ => normal}/DirectTexture.java (90%) rename src/main/java/speiger/src/coreengine/rendering/textures/{ => normal}/SimpleTexture.java (88%) create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java create mode 100644 src/main/java/speiger/src/coreengine/rendering/textures/stb/STBTexture.java delete mode 100644 src/main/resources/assets/base/font/Roboto-Font-Texture.png delete mode 100644 src/main/resources/assets/base/font/Roboto-Font.fnt create mode 100644 src/main/resources/assets/base/font/roboto.json create mode 100644 src/main/resources/assets/base/font/roboto_texture.png diff --git a/build.gradle b/build.gradle index 075ee6e..a126c13 100644 --- a/build.gradle +++ b/build.gradle @@ -64,5 +64,5 @@ dependencies { compile 'com.google.code.gson:gson:2.8.6' //Primitive Collections - compile 'de.speiger:Primitive-Collections:0.3.5' + compile 'de.speiger:Primitive-Collections:0.4.0' } \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/application/Application.java b/src/main/java/speiger/src/coreengine/application/Application.java index 650cc2e..b1966b9 100644 --- a/src/main/java/speiger/src/coreengine/application/Application.java +++ b/src/main/java/speiger/src/coreengine/application/Application.java @@ -1,6 +1,7 @@ package speiger.src.coreengine.application; import java.io.File; +import java.nio.ByteBuffer; import java.util.function.IntConsumer; import java.util.function.ObjLongConsumer; @@ -11,6 +12,7 @@ import speiger.src.coreengine.assets.AssetManager; import speiger.src.coreengine.assets.reloader.ResourceReloader; import speiger.src.coreengine.rendering.gui.GuiManager; import speiger.src.coreengine.rendering.gui.base.DebugOverlay; +import speiger.src.coreengine.rendering.gui.renderer.provider.FontManager; import speiger.src.coreengine.rendering.input.Keyboard; import speiger.src.coreengine.rendering.input.Mouse; import speiger.src.coreengine.rendering.input.camera.Camera; @@ -18,7 +20,8 @@ import speiger.src.coreengine.rendering.input.window.Window; import speiger.src.coreengine.rendering.input.window.WindowProvider; import speiger.src.coreengine.rendering.shader.ProjectionBuffer; import speiger.src.coreengine.rendering.shader.ShaderTracker; -import speiger.src.coreengine.rendering.textures.TextureManager; +import speiger.src.coreengine.rendering.textures.base.NativeMemoryParser; +import speiger.src.coreengine.rendering.textures.base.TextureManager; import speiger.src.coreengine.rendering.utils.Cursor; import speiger.src.coreengine.utils.counters.timers.FPSTimer; import speiger.src.coreengine.utils.eventbus.EventBus; @@ -41,6 +44,7 @@ public abstract class Application protected ResourceReloader reloader = new ResourceReloader(); protected AssetManager assetManager; + protected FontManager fonts = new FontManager(); protected ProjectionBuffer projectionBuffer; protected GuiManager uiManager; @@ -49,10 +53,11 @@ public abstract class Application GLFWErrorCallback.createPrint(System.err).set(); if(!GLFW.glfwInit()) throw new IllegalStateException("OpenGL can't be loaded"); provider.init(); + boolean initEarly = earlyUILoad(); try { mainWindow = createWindow(provider); - mainWindow.finishWindow(); + if(initEarly) mainWindow.finishWindow(); } catch(Exception e) { @@ -68,6 +73,7 @@ public abstract class Application file = file.getName().endsWith(".jar") ? file : new File("bin/main"); internalInit(file); init(file); + if(!initEarly) mainWindow.finishWindow(); executor.start(mainWindow); mainWindow.destroy(); reloader.deleteResources(); @@ -78,8 +84,12 @@ public abstract class Application protected void internalInit(File file) { assetManager = reloader.addReloadableResource(new AssetManager(file), true); + assetManager.registerAssetParser(ByteBuffer.class, new NativeMemoryParser()); + reloader.addReloadableResource(fonts); + fonts.setAssetManager(assetManager); ShaderTracker.INSTANCE.init(assetManager); TextureManager.INSTANCE.init(assetManager); + preinit(); reloader.addReloadableResource(ShaderTracker.INSTANCE); reloader.addReloadableResource(TextureManager.INSTANCE); camera = new Camera(mainWindow); @@ -95,8 +105,10 @@ public abstract class Application public void addExtraTickRates(IntConsumer ticks) {}; public void addExtraTimers(ObjLongConsumer profiler) {}; public boolean initUI() { return true; } + public boolean earlyUILoad() { return true; } public DebugOverlay createCustomDebug() { return null; } public abstract Window createWindow(WindowProvider provider) throws Exception; + public void preinit() {} public abstract void init(File file); public abstract void update(); public abstract void render(float particalTicks); diff --git a/src/main/java/speiger/src/coreengine/application/BaseUIManager.java b/src/main/java/speiger/src/coreengine/application/BaseUIManager.java index 4664662..f63a5fe 100644 --- a/src/main/java/speiger/src/coreengine/application/BaseUIManager.java +++ b/src/main/java/speiger/src/coreengine/application/BaseUIManager.java @@ -13,7 +13,7 @@ public class BaseUIManager extends GuiManager public BaseUIManager(Application application) { - super(application.mainWindow, application.eventBus); + super(application.mainWindow, application.eventBus, application.fonts); this.application = application; } diff --git a/src/main/java/speiger/src/coreengine/assets/AssetLocation.java b/src/main/java/speiger/src/coreengine/assets/AssetLocation.java index c8c7c05..b5eb269 100644 --- a/src/main/java/speiger/src/coreengine/assets/AssetLocation.java +++ b/src/main/java/speiger/src/coreengine/assets/AssetLocation.java @@ -7,9 +7,9 @@ import java.util.function.Function; import speiger.src.collections.objects.maps.impl.hash.Object2ObjectOpenHashMap; import speiger.src.collections.objects.utils.maps.Object2ObjectMaps; -public final class AssetLocation +public final class AssetLocation implements Comparable { - static final Map LOCATION = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap()); + static final Map LOCATION = Object2ObjectMaps.synchronize(new Object2ObjectOpenHashMap<>()); static final Function BUILDER = AssetLocation::compute; final String domain; final String location; @@ -74,6 +74,13 @@ public final class AssetLocation return false; } + @Override + public int compareTo(AssetLocation o) + { + int result = domain.compareToIgnoreCase(o.domain); + return result != 0 ? result : location.compareToIgnoreCase(location); + } + public boolean matches(AssetLocation location) { return location.domain.equals(domain) && location.location.equals(this.location); diff --git a/src/main/java/speiger/src/coreengine/assets/AssetManager.java b/src/main/java/speiger/src/coreengine/assets/AssetManager.java index bbfa933..a3c0587 100644 --- a/src/main/java/speiger/src/coreengine/assets/AssetManager.java +++ b/src/main/java/speiger/src/coreengine/assets/AssetManager.java @@ -5,21 +5,25 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Set; +import java.util.function.Predicate; import java.util.zip.ZipFile; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.collections.objects.maps.impl.hash.Object2ObjectLinkedOpenHashMap; import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; +import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap.Entry; +import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; +import speiger.src.collections.objects.utils.maps.Object2ObjectMaps; import speiger.src.coreengine.assets.impl.FolderAssetPackage; import speiger.src.coreengine.assets.impl.ZipAssetPackage; import speiger.src.coreengine.assets.reloader.IReloadableResource; public class AssetManager implements IReloadableResource { - Map domains = new Object2ObjectLinkedOpenHashMap<>(); + Object2ObjectMap domains = new Object2ObjectLinkedOpenHashMap<>(); Object2ObjectMap, IAssetParser> parsers = new Object2ObjectLinkedOpenHashMap<>(); Path path; @@ -121,11 +125,21 @@ public class AssetManager implements IReloadableResource DomainAssets asset = domains.get(location.getDomain()); if(asset == null) { - throw new FileNotFoundException("File["+location.toString()+"] not found"); + throw new FileNotFoundException("Domain & File["+location.toString()+"] not found"); } return asset.getAllAssets(location); } + public Collection gatherAssets(String location, int maxDepth, Predicate filter) + { + Set result = new ObjectLinkedOpenHashSet<>(); + for(Entry asset : Object2ObjectMaps.fastIterable(domains)) + { + asset.getValue().gatherAssets(AssetLocation.of(asset.getKey(), location), maxDepth, filter, result); + } + return result; + } + protected boolean isZipFile(Path file) { try(ZipFile zip = new ZipFile(file.toFile())) { return true; } @@ -185,5 +199,13 @@ public class AssetManager implements IReloadableResource } return new MultiAsset(assets.toArray(new IAsset[assets.size()])); } + + public void gatherAssets(AssetLocation folder, int maxDepth, Predicate filter, Collection result) + { + for(IAssetPackage entry : packages) + { + entry.getAllAssets(folder, filter, maxDepth, result); + } + } } } diff --git a/src/main/java/speiger/src/coreengine/assets/IAsset.java b/src/main/java/speiger/src/coreengine/assets/IAsset.java index 3708e95..79c3925 100644 --- a/src/main/java/speiger/src/coreengine/assets/IAsset.java +++ b/src/main/java/speiger/src/coreengine/assets/IAsset.java @@ -5,6 +5,7 @@ import java.io.BufferedReader; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; +import java.nio.ByteBuffer; import com.google.gson.JsonObject; @@ -16,11 +17,13 @@ public interface IAsset extends Closeable public InputStream getStream() throws IOException; - public BufferedImage getTexture() throws Exception; + public ByteBuffer getBytes() throws IOException; public BufferedReader getStringReader() throws IOException; public JsonObject getJsonObject() throws IOException; + public BufferedImage getTexture() throws Exception; + public T getCustom(Class clz) throws IOException; } diff --git a/src/main/java/speiger/src/coreengine/assets/IAssetPackage.java b/src/main/java/speiger/src/coreengine/assets/IAssetPackage.java index d4dcd30..7fa5535 100644 --- a/src/main/java/speiger/src/coreengine/assets/IAssetPackage.java +++ b/src/main/java/speiger/src/coreengine/assets/IAssetPackage.java @@ -1,11 +1,14 @@ package speiger.src.coreengine.assets; +import java.util.Collection; import java.util.List; import java.util.function.Function; +import java.util.function.Predicate; public interface IAssetPackage { public void setParsers(Function, IAssetParser> parsers); public List getDomains(); public IAsset getAsset(AssetLocation location); + public void getAllAssets(AssetLocation folder, Predicate fileNames, int maxDepth, Collection result); } diff --git a/src/main/java/speiger/src/coreengine/assets/IAssetParser.java b/src/main/java/speiger/src/coreengine/assets/IAssetParser.java index c6e25ec..76ad375 100644 --- a/src/main/java/speiger/src/coreengine/assets/IAssetParser.java +++ b/src/main/java/speiger/src/coreengine/assets/IAssetParser.java @@ -1,10 +1,11 @@ package speiger.src.coreengine.assets; import java.io.Closeable; +import java.io.IOException; import java.nio.file.Path; import java.util.function.Consumer; public interface IAssetParser { - public T parseAsset(Path path, Consumer autoCloser); + public T parseAsset(Path path, Consumer autoCloser) throws IOException; } diff --git a/src/main/java/speiger/src/coreengine/assets/impl/FolderAsset.java b/src/main/java/speiger/src/coreengine/assets/impl/FolderAsset.java index b95d7d2..1253666 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/FolderAsset.java +++ b/src/main/java/speiger/src/coreengine/assets/impl/FolderAsset.java @@ -5,6 +5,7 @@ import java.io.BufferedReader; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; +import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; @@ -76,6 +77,12 @@ public class FolderAsset implements IAsset return markClosed(Files.newInputStream(path)); } + @Override + public ByteBuffer getBytes() throws IOException + { + return ByteBuffer.wrap(Files.readAllBytes(path)); + } + @Override public BufferedImage getTexture() throws Exception { diff --git a/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java b/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java index efeafe1..4789c61 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java +++ b/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java @@ -5,14 +5,18 @@ import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collection; import java.util.List; import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Stream; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.IAsset; import speiger.src.coreengine.assets.IAssetPackage; import speiger.src.coreengine.assets.IAssetParser; +import speiger.src.coreengine.utils.collections.iterators.IterableWrapper; public class FolderAssetPackage implements IAssetPackage { @@ -59,4 +63,22 @@ public class FolderAssetPackage implements IAssetPackage Path path = baseFolder.resolve(location.getActualLocation()); return Files.exists(path) ? new FolderAsset(location, path, parsers) : null; } + + @Override + public void getAllAssets(AssetLocation folder, Predicate fileNames, int maxDepth, Collection result) + { + Path start = baseFolder.resolve(folder.getActualLocation()); + if(Files.notExists(start)) return; + try(Stream stream = Files.walk(start, maxDepth).filter(Files::isRegularFile).filter(T -> fileNames.test(T.getFileName().toString()))) + { + for(Path path : IterableWrapper.wrap(stream.iterator())) + { + result.add(folder.subAsset(start.relativize(path).toString())); + } + } + catch(IOException e) + { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/assets/impl/ZipAsset.java b/src/main/java/speiger/src/coreengine/assets/impl/ZipAsset.java index 1c4c3a3..df5f972 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/ZipAsset.java +++ b/src/main/java/speiger/src/coreengine/assets/impl/ZipAsset.java @@ -4,6 +4,7 @@ import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; +import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Path; import java.util.function.Function; @@ -71,6 +72,12 @@ public class ZipAsset implements IAsset return Files.newInputStream(path); } + @Override + public ByteBuffer getBytes() throws IOException + { + return ByteBuffer.wrap(Files.readAllBytes(path)); + } + @Override public BufferedImage getTexture() throws Exception { diff --git a/src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java b/src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java index 1f1dcdf..02643c1 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java +++ b/src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java @@ -7,15 +7,19 @@ import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Collection; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Stream; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.IAsset; import speiger.src.coreengine.assets.IAssetPackage; import speiger.src.coreengine.assets.IAssetParser; +import speiger.src.coreengine.utils.collections.iterators.IterableWrapper; public class ZipAssetPackage implements IAssetPackage { @@ -90,4 +94,23 @@ public class ZipAssetPackage implements IAssetPackage } catch(Exception e) { return null; } } + + @Override + public void getAllAssets(AssetLocation folder, Predicate fileNames, int maxDepth, Collection result) + { + try(FileSystem system = FileSystems.newFileSystem(baseFolder, null)) + { + Path start = system.getPath(folder.getActualLocation()); + if(Files.notExists(start)) return; + try(Stream stream = Files.walk(start, maxDepth).filter(Files::isRegularFile).filter(T -> fileNames.test(T.getFileName().toString()))) + { + for(Path path : IterableWrapper.wrap(stream.iterator())) + { + result.add(folder.subAsset(start.relativize(path).toString())); + } + } + catch(IOException e) { e.printStackTrace(); } + } + catch(Exception e) { e.printStackTrace(); } + } } diff --git a/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java b/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java index 349f7ab..312c41d 100644 --- a/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java +++ b/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java @@ -6,7 +6,7 @@ import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet; public class ResourceReloader { - Set resources = new ObjectLinkedOpenHashSet(); + Set resources = new ObjectLinkedOpenHashSet<>(); boolean globalRemoval = false; boolean reloading = false; diff --git a/src/main/java/speiger/src/coreengine/math/misc/ColorObject.java b/src/main/java/speiger/src/coreengine/math/misc/ColorObject.java index d09cad8..e0cc37e 100644 --- a/src/main/java/speiger/src/coreengine/math/misc/ColorObject.java +++ b/src/main/java/speiger/src/coreengine/math/misc/ColorObject.java @@ -316,6 +316,16 @@ public class ColorObject return "Color[r=" + getRedFloat() + ", g=" + getGreenFloat() + ", b=" + getBlueFloat() + ", a=" + getAlphaFloat() + "]"; } + public static byte[] toByteArray(int color, boolean alpha) + { + byte[] data = new byte[alpha ? 4 : 3]; + data[0] = (byte)((color >> 16) & 0xFF); + data[1] = (byte)((color >> 8) & 0xFF); + data[2] = (byte)(color & 0xFF); + if(alpha) data[3] = (byte)((color >> 24) & 0xFF); + return data; + } + public static void pack(int color, boolean alpha, ByteBuffer buffer) { buffer.put((byte)((color >> 16) & 0xFF)).put((byte)((color >> 8) & 0xFF)).put((byte)(color & 0xFF)); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/FontLoader.java b/src/main/java/speiger/src/coreengine/rendering/gui/FontLoader.java deleted file mode 100644 index 52a4198..0000000 --- a/src/main/java/speiger/src/coreengine/rendering/gui/FontLoader.java +++ /dev/null @@ -1,118 +0,0 @@ -package speiger.src.coreengine.rendering.gui; - -import java.io.BufferedReader; -import java.util.HashMap; -import java.util.Map; - -import speiger.src.collections.chars.maps.impl.hash.Char2ObjectOpenHashMap; -import speiger.src.collections.chars.maps.interfaces.Char2ObjectMap; -import speiger.src.coreengine.assets.AssetLocation; -import speiger.src.coreengine.assets.IAsset; -import speiger.src.coreengine.rendering.gui.renderer.FontRenderer; -import speiger.src.coreengine.rendering.gui.renderer.IFontRenderer.CharInstance; -import speiger.src.coreengine.rendering.textures.SimpleTexture; -import speiger.src.coreengine.rendering.textures.TextureManager; - -public class FontLoader -{ - public static FontRenderer createFont(AssetLocation location, String name) - { - return createFont(location, name, 0.35F); - } - - public static FontRenderer createFont(AssetLocation location, String name, float scale) - { - try(IAsset asset = TextureManager.INSTANCE.getManager().getAsset(location.subAsset(name+".fnt"))) - { - Char2ObjectMap[] maps = new Char2ObjectMap[]{new Char2ObjectOpenHashMap(), new Char2ObjectOpenHashMap()}; - BufferedReader reader = asset.getStringReader(); - FontInfo info = new FontInfo(convert(reader.readLine().split(", "))); - String value = null; - while((value = getNextValidLine(reader)) != null) - { - Map dataMap = convert(value.split(", ")); - CharInstance instance = createChar(dataMap, info); - instance.scale(scale); - maps[instance.isBold() ? 1 : 0].putIfAbsent(instance.getCharacter(), instance); - } - info.scale(scale); - return new FontRenderer(maps, new SimpleTexture(location.subAsset(name+"-Texture.png")), info.fontHeight, info.lineHeight); - } - catch(Exception e) - { - e.printStackTrace(); - } - return null; - } - - static String getNextValidLine(BufferedReader reader) throws Exception - { - String line = reader.readLine(); - if(line == null) - { - return null; - } - else if(line.isEmpty() || line.startsWith("//")) - { - return getNextValidLine(reader); - } - return line; - } - - static CharInstance createChar(Map data, FontInfo info) - { - char character = (char)data.get("letter").intValue(); - int minX = data.get("minX"); - int minY = data.get("minY"); - int maxX = data.get("maxX"); - int maxY = data.get("maxY"); - return new CharInstance(character, maxX - minX, maxY - minY, info.getTextureU(minX), info.getTextureV(minY), info.getTextureU(maxX), info.getTextureV(maxY), maxX - minX, data.getOrDefault("bold", 0).intValue() == 1); - } - - static Map convert(String[] data) - { - Map map = new HashMap(); - for(String s : data) - { - int index = s.indexOf("="); - if(index != -1) - { - String[] split = s.split("="); - map.put(split[0], Integer.parseInt(split[1])); - } - } - return map; - } - - public static class FontInfo - { - int height; - int width; - float fontHeight; - float lineHeight; - - public FontInfo(Map data) - { - width = data.get("textureWidth"); - height = data.get("textureHeight"); - fontHeight = data.get("fontHeight"); - lineHeight = data.get("base"); - } - - public void scale(float scale) - { - fontHeight *= scale; - lineHeight *= scale; - } - - public float getTextureU(float value) - { - return value / width; - } - - public float getTextureV(float value) - { - return value / height; - } - } -} diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java b/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java index c07bd06..478b1bd 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/GuiManager.java @@ -8,6 +8,7 @@ import speiger.src.coreengine.rendering.gui.base.DebugOverlay; import speiger.src.coreengine.rendering.gui.renderer.FontRenderer; import speiger.src.coreengine.rendering.gui.renderer.GuiShader; import speiger.src.coreengine.rendering.gui.renderer.UIRenderer; +import speiger.src.coreengine.rendering.gui.renderer.provider.FontManager; import speiger.src.coreengine.rendering.input.events.KeyEvent.CharTypeEvent; import speiger.src.coreengine.rendering.input.events.KeyEvent.KeyPressEvent; import speiger.src.coreengine.rendering.input.events.MouseEvent; @@ -31,12 +32,13 @@ public abstract class GuiManager implements IWindowListener protected ScaledResolution res; protected long globalClock = 0L; protected boolean isReloading = false; - protected FontRenderer font = FontLoader.createFont(AssetLocation.of("font"), "Roboto-Font"); + protected FontRenderer font; protected GuiShader shader = ShaderTracker.INSTANCE.register(GuiShader::create, T -> shader = T); - public GuiManager(Window window, EventBus bus) + public GuiManager(Window window, EventBus bus, FontManager manager) { this.window = window; + font = manager.loadFont(AssetLocation.of("font/roboto.json"), 18.5F); bus.register(MouseEvent.class, this::onMouseEvent); bus.register(KeyPressEvent.class, (T) -> T.setCanceled(onKeyPressed(T.key))); bus.register(CharTypeEvent.class, (T) -> T.setCanceled(onCharTyped(T.character, T.codePoint))); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/UITextures.java b/src/main/java/speiger/src/coreengine/rendering/gui/UITextures.java index b73b9af..c389a83 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/UITextures.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/UITextures.java @@ -1,19 +1,24 @@ package speiger.src.coreengine.rendering.gui; import speiger.src.coreengine.assets.AssetLocation; -import speiger.src.coreengine.rendering.textures.ITexture; -import speiger.src.coreengine.rendering.textures.SimpleTexture; +import speiger.src.coreengine.rendering.textures.base.ITexture; public class UITextures { public static final AssetLocation TEXTURE_LOCATION = AssetLocation.of("textures"); -// public static final ITexture OK_SYMBOL = new SimpleTexture(sub("okSymbol.png")); -// public static final ITexture CANCLE_SYMBOL = new SimpleTexture(sub("cancelSymbol.png")); - public static final ITexture COLOR_WHEEL = new SimpleTexture(sub("colorWheel.png")); + public static final ITexture COLOR_WHEEL = ITexture.simple(sub("colorWheel.png")).makeReloadable(); - public static AssetLocation sub(String name) - { + + public static ITexture createReloadable(String name) { + return ITexture.simple(sub(name)).makeReloadable(); + } + + public static ITexture create(String name) { + return ITexture.simple(sub(name)); + } + + public static AssetLocation sub(String name) { return TEXTURE_LOCATION.subAsset(name); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/components/IconComponent.java b/src/main/java/speiger/src/coreengine/rendering/gui/components/IconComponent.java index 7e6e143..d34dbae 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/components/IconComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/components/IconComponent.java @@ -2,7 +2,7 @@ package speiger.src.coreengine.rendering.gui.components; import speiger.src.coreengine.math.misc.ColorObject; import speiger.src.coreengine.rendering.gui.GuiComponent; -import speiger.src.coreengine.rendering.textures.ITexture; +import speiger.src.coreengine.rendering.textures.base.ITexture; public class IconComponent extends GuiComponent { diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/components/ListComponent.java b/src/main/java/speiger/src/coreengine/rendering/gui/components/ListComponent.java index 46c01f9..56d48eb 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/components/ListComponent.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/components/ListComponent.java @@ -52,6 +52,7 @@ public class ListComponent extends GuiComponent protected int selectionMode = 1; protected int updateMode = 1; protected float entryHeight; + protected float cachedWidth = 0F; protected ScrollBarComponent verticalBar = new ScrollBarComponent(ColorObject.LIGHT_GRAY); protected ScrollBarComponent horizontalBar = new ScrollBarComponent(ColorObject.LIGHT_GRAY).setHorizontal(true); protected Vec2i lastMouse = Vec2i.newMutable(); @@ -416,6 +417,11 @@ public class ListComponent extends GuiComponent return rangeIterator(start, MathUtils.clamp(0, entries.size() - 1, start + getIndexWidth())); } + public float getCachedWidth() + { + return cachedWidth; + } + @Override protected void repaint() { @@ -434,6 +440,7 @@ public class ListComponent extends GuiComponent { width = Math.max(width, entries.get(i).getWidth()); } + this.cachedWidth = width; boolean lastVertical = this.verticalBar.isInUse(); boolean lastHorizontal = this.horizontalBar.isInUse(); verticalBar.setScrollMax(MathUtils.ceil(this.entries.size() * entryHeight)); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/components/icon/TexturedIcon.java b/src/main/java/speiger/src/coreengine/rendering/gui/components/icon/TexturedIcon.java index 15b4830..8b0763b 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/components/icon/TexturedIcon.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/components/icon/TexturedIcon.java @@ -2,7 +2,7 @@ package speiger.src.coreengine.rendering.gui.components.icon; import speiger.src.coreengine.math.misc.ColorObject; import speiger.src.coreengine.rendering.gui.renderer.UIRenderer; -import speiger.src.coreengine.rendering.textures.ITexture; +import speiger.src.coreengine.rendering.textures.base.ITexture; public class TexturedIcon implements IIcon { diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/FontBuilder.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/FontBuilder.java new file mode 100644 index 0000000..38bc27f --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/FontBuilder.java @@ -0,0 +1,241 @@ +package speiger.src.coreengine.rendering.gui.helper; + +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.image.BufferedImage; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.maps.impl.hash.Object2ObjectLinkedOpenHashMap; +import speiger.src.collections.objects.misc.pairs.ObjectObjectPair; +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.math.vector.ints.Vec2i; +import speiger.src.coreengine.rendering.gui.renderer.IFontRenderer.CharInstance; +import speiger.src.coreengine.rendering.textures.custom.TextureAtlas; +import speiger.src.coreengine.rendering.textures.custom.TextureAtlas.AtlasEntry; +import speiger.src.coreengine.rendering.textures.custom.TextureAtlas.Builder; + +public class FontBuilder +{ + public static final int LITERAL = 1; + public static final int PLAIN = 2; + public static final int BOLD = 4; + + public static ObjectObjectPair createBitmapFont(InputStream stream, float size) + { + ObjectObjectPair, List> result = createBitmapFont(stream, "ISO-8859-1", PLAIN | BOLD, size); + if(result == null) return null; + JsonArray array = new JsonArray(); + result.getValue().forEach(T -> array.add(T.seralize())); + JsonObject info = new JsonObject(); + ObjectObjectPair key = result.getKey(); + info.addProperty("width", key.getValue().getWidth()); + info.addProperty("height", key.getValue().getHeight()); + info.addProperty("base", key.getKey().getX()); + info.addProperty("charHeight", key.getKey().getY()); + info.addProperty("tabs", 4); + + JsonObject data = new JsonObject(); + data.addProperty("type", "bitmap"); + data.addProperty("file", "?"); + data.add("info", info); + data.add("chars", array); + return ObjectObjectPair.of(key.getValue(), data); + } + + public static ObjectObjectPair, List> createBitmapFont(InputStream ttf, String characters, int flags, float size) + { + try + { + Map toDraw = new Object2ObjectLinkedOpenHashMap<>(); + Builder builder = TextureAtlas.create(); + + Consumer data = T -> { + AssetLocation location = T.asLocation(); + toDraw.put(location, T); + if(T.width > 0 && !builder.add(location, T.width, T.getExtraY(T.height))) throw new IllegalStateException("Character: " + location + " isnt Accepted, W=" + T.width + ", H=" + T.height); + }; + + Font font = Font.createFont(Font.TRUETYPE_FONT, ttf).deriveFont(size); + String validChars = (flags & LITERAL) != 0 ? characters : getChars(characters, font); + + if((flags & PLAIN) != 0) loadFontData(font, validChars, data); + if((flags & BOLD) != 0) loadFontData(font.deriveFont(Font.BOLD), validChars, data); + + ObjectObjectPair, List> result = ObjectObjectPair.mutableValue(new ObjectArrayList<>()); + + builder.buildHollow((K, V) -> { + BufferedImage image = new BufferedImage(K.getX(), K.getY(), BufferedImage.TYPE_INT_ARGB); + Graphics2D graphics = image.createGraphics(); + + graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + graphics.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); + graphics.setFont(font); + + FontMetrics metric = graphics.getFontMetrics(); + int extra = 0; + + for(AtlasEntry entry : V) + { + CharData pair = toDraw.remove(entry.getLocation()); + extra = pair.extraY; + graphics.setFont(pair.getFont()); + graphics.setColor(Color.WHITE); + graphics.drawString(Character.toString(pair.getLetter()), entry.getX()-pair.xOffset, pair.getExtraY(entry.getY()+metric.getAscent())); + result.getValue().add(new WrittenChar(pair.getLetter(), entry.getX(), entry.getY(), entry.getWidth(), entry.getHeight(), pair.isBold())); + } + toDraw.values().forEach(T -> result.getValue().add(new WrittenChar(T.getLetter(), 0, 0, 0, 0, T.isBold()))); + result.setKey(ObjectObjectPair.of(Vec2i.newVec(metric.getAscent()+extra, metric.getHeight()+extra), image)); + graphics.dispose(); + }); + return result; + } + catch(Exception e) + { + e.printStackTrace(); + return null; + } + } + + private static float convert(float pos, float width) + { + return pos / width; + } + + private static String getChars(String s, Font font) + { + CharsetEncoder encoder = Charset.forName(s).newEncoder(); + StringBuilder builder = new StringBuilder(); + for(char c = 0;c < Character.MAX_VALUE;c++) + { + if(encoder.canEncode(c) && font.canDisplay(c)) builder.append(c); + } + return builder.toString(); + } + + private static void loadFontData(Font font, String chars, Consumer listener) + { + BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); + Graphics2D graphics = (Graphics2D)image.getGraphics(); + graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + graphics.setFont(font); + FontMetrics metric = graphics.getFontMetrics(); + int extraHeight = 0; + List data = new ObjectArrayList<>(); + for(char letter : chars.toCharArray()) + { + Rectangle rect = font.layoutGlyphVector(graphics.getFontRenderContext(), new char[] {letter }, 0, 1, 0).getGlyphPixelBounds(0, graphics.getFontRenderContext(), 0.0F, 0.0F); + extraHeight = Math.min(extraHeight, rect.y); + data.add(new CharData(font, letter, rect, metric.charWidth(letter), metric.getHeight(), font.isBold())); + } + extraHeight = -(extraHeight+metric.getAscent()); + for(int i = 0,m=data.size();i= 0) this.width = width; + else + { + this.width = bounds.width == 0 ? width : bounds.width; + xOffset = bounds.x; + } + this.height = height; + this.bold = bold; + } + + private CharData offset(int offset) + { + extraY += offset; + return this; + } + + public boolean isBold() + { + return bold; + } + + public Font getFont() + { + return font; + } + + public int getExtraY(int asent) + { + return extraY + asent; + } + + public char getLetter() + { + return letter; + } + + public AssetLocation asLocation() + { + return AssetLocation.of("base", font.getFontName().replaceAll(" ", "_") + (bold ? "_Bold" : "") + "_" + ((int)letter)); + } + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/helper/TextFilter.java b/src/main/java/speiger/src/coreengine/rendering/gui/helper/TextFilter.java index 3d59c8d..7f3eceb 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/helper/TextFilter.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/helper/TextFilter.java @@ -7,6 +7,7 @@ public class TextFilter public static final Predicate INTEGER_ONLY = T -> { try { if(T == null || T.isEmpty()); + else if(T.length() == 1 && T.charAt(0) == '-'); else Integer.parseInt(T); return true; } @@ -16,6 +17,7 @@ public class TextFilter public static final Predicate FLOAT_ONLY = T -> { try { if(T == null || T.isEmpty()); + else if(T.length() == 1 && T.charAt(0) == '-'); else Float.parseFloat(T); return true; } diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/FontRenderer.java b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/FontRenderer.java index ccd004b..cebf5a5 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/FontRenderer.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/FontRenderer.java @@ -5,7 +5,6 @@ import java.util.Locale; import org.lwjgl.opengl.GL11; -import speiger.src.collections.chars.maps.interfaces.Char2ObjectMap; import speiger.src.collections.floats.lists.FloatArrayList; import speiger.src.collections.floats.lists.FloatList; import speiger.src.collections.objects.lists.ObjectArrayList; @@ -20,11 +19,12 @@ import speiger.src.coreengine.rendering.gui.renderer.lexer.Line; import speiger.src.coreengine.rendering.gui.renderer.lexer.TextContext; import speiger.src.coreengine.rendering.gui.renderer.lexer.TextContext.WordContext; import speiger.src.coreengine.rendering.gui.renderer.lexer.TextLexer; +import speiger.src.coreengine.rendering.gui.renderer.provider.IFontProvider; import speiger.src.coreengine.rendering.models.DrawCall; import speiger.src.coreengine.rendering.tesselation.IVertexBuilder; import speiger.src.coreengine.rendering.tesselation.Tesselator; import speiger.src.coreengine.rendering.tesselation.VertexType; -import speiger.src.coreengine.rendering.textures.ITexture; +import speiger.src.coreengine.rendering.textures.base.ITexture; import speiger.src.coreengine.utils.helpers.TextUtil; public class FontRenderer implements IFontRenderer @@ -36,45 +36,51 @@ public class FontRenderer implements IFontRenderer public static final char LINE_SEPERATOR = '\n'; Tesselator bufferBuilder = new Tesselator(655340); + IFontProvider provider; final TextLexer lexer = new TextLexer(this); final DelayedRenderBuffer lineBuffer = new DelayedRenderBuffer(); - final Char2ObjectMap[] chars; - final ITexture texture; - final float height; - final float baseLine; - final float space; - public FontRenderer(Char2ObjectMap[] chars, ITexture texture, float height, float baseLine) + public void setProvider(IFontProvider provider) { - this.chars = chars; - this.texture = texture; - this.height = height; - this.baseLine = baseLine; - space = chars[0].get(' ').getXAdvance(); + this.provider = provider; } @Override public CharInstance getInstance(char letter, boolean isBold) { - return chars[isBold ? 1 : 0].get(letter); + return provider.getCharacter(letter, isBold); } @Override public float getFontHeight() { - return height; + return provider.getFontHeight(); } @Override public float getBaseLine() { - return baseLine; + return provider.getBaseLine(); } @Override public ITexture getTexture() { - return texture; + return provider.getTexture(); + } + + public IFontProvider getProvider() + { + return provider; + } + + public void destory() + { + if(provider != null) + { + provider.destroy(); + provider = null; + } } public List renderText(String text, float x, float y, float z) @@ -96,12 +102,12 @@ public class FontRenderer implements IFontRenderer { xOffset += renderChar(letter, xOffset, yOffset, context.getScale(), effects.italic, effects.flipped, textColor, builder, true); } - yOffset += height * context.getScale(); + yOffset += getFontHeight() * context.getScale(); } bufferBuilder.finishData(); if(bufferBuilder.getVertexCount() > 0) { - drawCalls.add(bufferBuilder.getDrawCall(texture.getTextureID())); + drawCalls.add(bufferBuilder.getDrawCall(getTexture().getTextureID())); } bufferBuilder.setOffset(0F, 0F, 0F); return drawCalls; @@ -125,8 +131,8 @@ public class FontRenderer implements IFontRenderer return; } bufferBuilder.begin(GL11.GL_TRIANGLES, VertexType.UI); - int maxLanes = component.isHeightLimited() ? Math.min((int)(boxHeight / (height * context.getScale())), lines.size()) : lines.size(); - float maxHeight = maxLanes * height * context.getScale(); + int maxLanes = component.isHeightLimited() ? Math.min((int)(boxHeight / (getFontHeight() * context.getScale())), lines.size()) : lines.size(); + float maxHeight = maxLanes * getFontHeight() * context.getScale(); float maxWidth = 0F; float yOffset = component.getVertical().align(boxHeight, maxHeight); float startX = component.getHorizontal().align(boxWidth, lines.get(0).getWidth()); @@ -182,11 +188,11 @@ public class FontRenderer implements IFontRenderer { addUnderline(underline, xOffset - underline, yOffset, textColor, lineBuffer, false); } - yOffset += height * context.getScale(); + yOffset += getFontHeight() * context.getScale(); component.getMetadata().addLine(lines.get(i)); } maxWidth /= 2; - buffer.finishShape(texture.getTextureID(), bufferBuilder); + buffer.finishShape(getTexture().getTextureID(), bufferBuilder); if(lineBuffer.hasData()) { Tesselator tes = buffer.start(GL11.GL_TRIANGLES, VertexType.UI).offset(0F, 0F, 0.001F); @@ -201,9 +207,9 @@ public class FontRenderer implements IFontRenderer switch(instance.getCharacter()) { case TAB: - return space * 4 * scale; + return provider.getTabWidth() * scale; case SPACE: - return space * scale; + return provider.getSpaceWidth() * scale; } if(instance.getXAdvance() <= 0F) { @@ -231,7 +237,7 @@ public class FontRenderer implements IFontRenderer { float lineWidth = lines.get(i).getWidth(); float xOffset = align.align(width, lineWidth); - float maxY = flipPos ? yPos - height : yPos + height; + float maxY = flipPos ? yPos - getFontHeight() : yPos + getFontHeight(); tes.pos(xOffset, maxY, 0.0F).tex(0F, 0F).color4f(color).endVertex(); tes.pos(xOffset, yPos, 0.0F).tex(0F, 0F).color4f(color).endVertex(); tes.pos(xOffset + lineWidth, maxY, 0.0F).tex(0F, 0F).color4f(color).endVertex(); @@ -244,12 +250,12 @@ public class FontRenderer implements IFontRenderer protected void addUnderline(float xStart, float width, float yStart, ColorObject color, IVertexBuilder buffer, boolean flipPos) { - float minY = yStart + baseLine + 0.5F; - float maxY = yStart + baseLine + 1.5F; + float minY = yStart + getBaseLine() + 0.5F; + float maxY = yStart + getBaseLine() + 1.5F; if(flipPos) { - minY = yStart - baseLine - 0.5F; - maxY = yStart - baseLine - 1.5F; + minY = yStart - getBaseLine() - 0.5F; + maxY = yStart - getBaseLine() - 1.5F; } buffer.pos(xStart, maxY, 0F).tex(0F, 0F).color4f(color).endVertex(); buffer.pos(xStart, minY, 0F).tex(0F, 0F).color4f(color).endVertex(); @@ -261,8 +267,8 @@ public class FontRenderer implements IFontRenderer protected void addStrikeThrough(float xStart, float width, float yStart, ColorObject color, IVertexBuilder buffer) { - float minY = yStart + height / 2.0F; - float maxY = yStart + height / 2.0F + 1.4F; + float minY = yStart + getFontHeight() / 2.0F; + float maxY = yStart + getFontHeight() / 2.0F + 1.4F; buffer.pos(xStart, maxY, 0.0F).tex(0F, 0F).color4f(color).endVertex(); buffer.pos(xStart, minY, 0.0F).tex(0F, 0F).color4f(color).endVertex(); buffer.pos(xStart + width, maxY, 0.0F).tex(0F, 0F).color4f(color).endVertex(); @@ -301,9 +307,9 @@ public class FontRenderer implements IFontRenderer switch(letter) { case SPACE: - return space; + return provider.getSpaceWidth(); case TAB: - return space * 4; + return provider.getTabWidth(); default: CharInstance instance = getInstance(letter, bold); return instance == null ? 0F : instance.getXAdvance(); @@ -321,7 +327,7 @@ public class FontRenderer implements IFontRenderer char character = text.charAt(i); if(LINE_SEPERATOR == character) { - result = Math.max(result, current += space); + result = Math.max(result, current += provider.getSpaceWidth()); current = 0.0F; continue; } @@ -391,13 +397,13 @@ public class FontRenderer implements IFontRenderer @Override public float getTextHeight(String text, int flags) { - return getTextLengths(text, flags).length - 1 * height; + return getTextLengths(text, flags).length - 1 * getFontHeight(); } @Override public boolean isCharValid(char letter) { - return chars[0].containsKey(letter); + return provider.isCharacterValid(letter); } @Override diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/IFontRenderer.java b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/IFontRenderer.java index 53f616f..2f5b829 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/IFontRenderer.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/IFontRenderer.java @@ -1,7 +1,7 @@ package speiger.src.coreengine.rendering.gui.renderer; import speiger.src.coreengine.rendering.gui.components.TextComponent; -import speiger.src.coreengine.rendering.textures.ITexture; +import speiger.src.coreengine.rendering.textures.base.ITexture; public interface IFontRenderer { @@ -62,6 +62,12 @@ public interface IFontRenderer float xAdvance; boolean bold; + public CharInstance(char character, boolean bold) + { + this.character = character; + this.bold = bold; + } + public CharInstance(char character, int width, int height, float minU, float minV, float maxU, float maxV, int xAdvance, boolean bold) { this.character = character; diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/UIRenderer.java b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/UIRenderer.java index d50d766..cee5f9a 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/UIRenderer.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/UIRenderer.java @@ -28,8 +28,8 @@ import speiger.src.coreengine.rendering.shader.uniforms.UniformVec2f; import speiger.src.coreengine.rendering.tesselation.GLCall; import speiger.src.coreengine.rendering.tesselation.Tesselator; import speiger.src.coreengine.rendering.tesselation.VertexType; -import speiger.src.coreengine.rendering.textures.ITexture; -import speiger.src.coreengine.rendering.textures.TextureManager; +import speiger.src.coreengine.rendering.textures.base.ITexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; import speiger.src.coreengine.rendering.utils.GLUtils; import speiger.src.coreengine.utils.collections.pools.SimplePool; diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/BitmapFontProvider.java b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/BitmapFontProvider.java new file mode 100644 index 0000000..26a19ad --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/BitmapFontProvider.java @@ -0,0 +1,141 @@ +package speiger.src.coreengine.rendering.gui.renderer.provider; + +import java.awt.image.BufferedImage; +import java.util.List; + +import com.google.gson.JsonObject; + +import speiger.src.collections.chars.maps.impl.hash.Char2ObjectOpenHashMap; +import speiger.src.collections.chars.maps.interfaces.Char2ObjectMap; +import speiger.src.collections.chars.utils.maps.Char2ObjectMaps; +import speiger.src.collections.objects.misc.pairs.ObjectObjectPair; +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.assets.AssetManager; +import speiger.src.coreengine.assets.IAsset; +import speiger.src.coreengine.math.vector.ints.Vec2i; +import speiger.src.coreengine.rendering.gui.helper.FontBuilder; +import speiger.src.coreengine.rendering.gui.helper.FontBuilder.WrittenChar; +import speiger.src.coreengine.rendering.gui.renderer.IFontRenderer.CharInstance; +import speiger.src.coreengine.rendering.textures.base.ITexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; +import speiger.src.coreengine.utils.helpers.JsonUtil; + +public class BitmapFontProvider implements IFontProvider +{ + FontInfo info; + ITexture texture; + Char2ObjectMap[] instances; + float space; + + public BitmapFontProvider(FontInfo info, ITexture texture, Char2ObjectMap[] instances) + { + this.info = info; + this.texture = texture; + this.instances = instances; + if(instances[0].containsKey(' ')) space = instances[0].get(' ').getXAdvance(); + else if(instances[1].containsKey(' ')) space = instances[1].get(' ').getXAdvance(); + } + + @Override + public void destroy() + { + if(texture != null) + { + texture.destroy(); + texture = null; + } + } + + @Override + public ITexture getTexture() + { + return texture; + } + + @Override + public boolean isCharacterValid(char value) + { + return instances[0].containsKey(value) || instances[1].containsKey(value); + } + + @Override + public CharInstance getCharacter(char value, boolean bold) + { + Char2ObjectMap map = instances[bold ? 1 : 0]; + return (map.isEmpty() ? instances[bold ? 0 : 1] : map).get(value); + } + + @Override + public float getFontHeight() + { + return info.fontHeight; + } + + @Override + public float getBaseLine() + { + return info.fontBase; + } + + @Override + public float getSpaceWidth() + { + return space; + } + + @Override + public float getTabWidth() + { + return space * info.tabs; + } + + public static IFontProvider load(JsonObject object, float desiredSize, AssetManager manager) + { + FontInfo info = new FontInfo(object.getAsJsonObject("info")); + float multiplier = info.setDesiredHeight(desiredSize); + Char2ObjectMap[] maps = new Char2ObjectMap[]{new Char2ObjectOpenHashMap(), new Char2ObjectOpenHashMap()}; + JsonUtil.iterate(object.get("chars"), T -> { + CharInstance instance = info.create(T); + instance.scale(multiplier); + maps[instance.isBold() ? 1 : 0].put(instance.getCharacter(), instance); + }); + if(maps[0].isEmpty()) maps[0] = Char2ObjectMaps.empty(); + if(maps[1].isEmpty()) maps[1] = Char2ObjectMaps.empty(); + return new BitmapFontProvider(info, ITexture.simple(AssetLocation.of(object.get("file").getAsString())), maps); + } + + public static IFontProvider create(JsonObject object, float desiredSize, AssetManager manager) + { + try(IAsset asset = TextureManager.INSTANCE.getManager().getAsset(AssetLocation.of(object.get("file").getAsString()))) + { + JsonObject info = object.getAsJsonObject("info"); + int tabs = JsonUtil.getOrDefault(info, "tabs", 4); + boolean literal = JsonUtil.getOrDefault(info, "literal", false); + boolean plain = JsonUtil.getOrDefault(info, "plain", true); + boolean bold = JsonUtil.getOrDefault(info, "bold", true); + if(!plain && !bold) throw new IllegalStateException("You need a plain or bold font at the very least"); + + int flags = (literal ? FontBuilder.LITERAL : 0) | (plain ? FontBuilder.PLAIN : 0) | (bold ? FontBuilder.BOLD : 0); + ObjectObjectPair, List> written = FontBuilder.createBitmapFont(asset.getStream(), info.get("charset").getAsString(), flags, info.get("size").getAsFloat()); + BufferedImage image = written.getKey().getValue(); + Vec2i size = written.getKey().getKey(); + FontInfo fontInfo = new FontInfo(image.getWidth(), image.getHeight(), size.getY(), size.getX(), tabs); + float mulitplier = fontInfo.setDesiredHeight(desiredSize); + Char2ObjectMap[] maps = new Char2ObjectMap[]{new Char2ObjectOpenHashMap(), new Char2ObjectOpenHashMap()}; + for(WrittenChar entry : written.getValue()) + { + CharInstance instance = entry.create(fontInfo.textureWidth, fontInfo.textureHeight); + instance.scale(mulitplier); + maps[instance.isBold() ? 1 : 0].put(instance.getCharacter(), instance); + } + if(maps[0].isEmpty()) maps[0] = Char2ObjectMaps.empty(); + if(maps[1].isEmpty()) maps[1] = Char2ObjectMaps.empty(); + return new BitmapFontProvider(fontInfo, ITexture.direct(image), maps); + } + catch(Exception e) + { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/FontManager.java b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/FontManager.java new file mode 100644 index 0000000..803359b --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/gui/renderer/provider/FontManager.java @@ -0,0 +1,100 @@ +package speiger.src.coreengine.rendering.gui.renderer.provider; + +import java.util.List; +import java.util.Map; + +import com.google.gson.JsonObject; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.maps.impl.hash.Object2FloatLinkedOpenHashMap; +import speiger.src.collections.objects.maps.impl.hash.Object2ObjectLinkedOpenHashMap; +import speiger.src.collections.objects.maps.impl.hash.Object2ObjectOpenHashMap; +import speiger.src.collections.objects.maps.interfaces.Object2FloatMap; +import speiger.src.collections.objects.maps.interfaces.Object2FloatMap.Entry; +import speiger.src.collections.objects.utils.maps.Object2FloatMaps; +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.assets.AssetManager; +import speiger.src.coreengine.assets.IAsset; +import speiger.src.coreengine.assets.reloader.IReloadableResource; +import speiger.src.coreengine.rendering.gui.renderer.FontRenderer; + +public class FontManager implements IReloadableResource +{ + Map fontRenders = new Object2ObjectLinkedOpenHashMap<>(); + Object2FloatMap fontSizes = new Object2FloatLinkedOpenHashMap<>(); + Map loaders = new Object2ObjectOpenHashMap<>(); + + AssetManager manager; + + public FontManager() + { + registerFontLoader("bitmap", BitmapFontProvider::load); + registerFontLoader("java-ttf", BitmapFontProvider::create); + } + + public void setAssetManager(AssetManager manager) + { + this.manager = manager; + } + + public void registerFontLoader(String id, IFontLoader provider) + { + loaders.put(id, provider); + } + + public FontRenderer loadFont(AssetLocation location, float desiredSize) + { + FontRenderer render = fontRenders.get(location); + if(render == null) + { + IFontProvider provider = loadProvider(location, desiredSize); + if(provider != null) + { + render = new FontRenderer(); + render.setProvider(provider); + fontRenders.put(location, render); + fontSizes.putIfAbsent(location, desiredSize); + } + } + return render; + } + + private IFontProvider loadProvider(AssetLocation location, float desiredSize) + { + try(IAsset asset = manager.getAsset(location)) + { + JsonObject obj = asset.getJsonObject(); + IFontLoader loader = loaders.get(obj.get("type").getAsString()); + if(loader == null) return null; + return loader.create(obj, desiredSize, manager); + } + catch(Exception e) { e.printStackTrace(); } + return null; + } + + public static interface IFontLoader + { + public IFontProvider create(JsonObject obj, float desiredSize, AssetManager loader); + } + + @Override + public void reload() + { + List providers = new ObjectArrayList<>(); + for(Entry entry : Object2FloatMaps.fastIterable(fontSizes)) + { + AssetLocation location = entry.getKey(); + FontRenderer font = fontRenders.get(location); + providers.add(font.getProvider()); + font.setProvider(loadProvider(location, entry.getFloatValue())); + } + for(int i = 0,m=providers.size();i BY_ID = new Object2ObjectOpenHashMap<>(); + final String type; + final int byteSize; + + private DataType(String type, int byteSize) + { + this.type = type; + this.byteSize = byteSize; + } + + public String getType() + { + return type; + } + + public int getByteSize() + { + return byteSize; + } + + public boolean isFloatingPoint() + { + return this == FLOAT || this == DOUBLE; + } + + public static DataType byID(String id) + { + return BY_ID.get(id); + } + + static + { + for(DataType type : values()) + { + BY_ID.put(type.getType(), type); + } + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/models/GLDataType.java b/src/main/java/speiger/src/coreengine/rendering/models/GLDataType.java index de2ce46..56be93c 100644 --- a/src/main/java/speiger/src/coreengine/rendering/models/GLDataType.java +++ b/src/main/java/speiger/src/coreengine/rendering/models/GLDataType.java @@ -1,42 +1,56 @@ package speiger.src.coreengine.rendering.models; +import java.util.Map; + import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import org.lwjgl.opengl.GL30; +import speiger.src.collections.ints.maps.impl.hash.Int2ObjectOpenHashMap; +import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap; +import speiger.src.collections.objects.maps.impl.hash.Object2ObjectOpenHashMap; + public class GLDataType { + static final Int2ObjectMap ID_TO_TYPE = new Int2ObjectOpenHashMap<>(); + static final Map NAME_TO_TYPE = new Object2ObjectOpenHashMap<>(); //Normal Types - public static final GLDataType BYTE = new GLDataType(GL11.GL_BYTE, 1); - public static final GLDataType UNSIGNED_BYTE = new GLDataType(GL11.GL_UNSIGNED_BYTE, 1); - public static final GLDataType SHORT = new GLDataType(GL11.GL_SHORT, 2); - public static final GLDataType UNSIGNED_SHORT = new GLDataType(GL11.GL_UNSIGNED_SHORT, 2); - public static final GLDataType INT = new GLDataType(GL11.GL_INT, 4); - public static final GLDataType UNSIGNED_INT = new GLDataType(GL11.GL_UNSIGNED_INT, 4); - public static final GLDataType FLOAT = new GLDataType(GL11.GL_FLOAT, 4); + public static final GLDataType BYTE = new GLDataType(GL11.GL_BYTE, DataType.BYTE, "byte"); + public static final GLDataType UNSIGNED_BYTE = new GLDataType(GL11.GL_UNSIGNED_BYTE, DataType.BYTE, "u_byte"); + public static final GLDataType SHORT = new GLDataType(GL11.GL_SHORT, DataType.SHORT, "short"); + public static final GLDataType UNSIGNED_SHORT = new GLDataType(GL11.GL_UNSIGNED_SHORT, DataType.SHORT, "u_short"); + public static final GLDataType INT = new GLDataType(GL11.GL_INT, DataType.INT, "int"); + public static final GLDataType UNSIGNED_INT = new GLDataType(GL11.GL_UNSIGNED_INT, DataType.INT, "u_int"); + public static final GLDataType FLOAT = new GLDataType(GL11.GL_FLOAT, DataType.FLOAT, "float"); + public static final GLDataType DOUBLE = new GLDataType(GL11.GL_DOUBLE, DataType.DOUBLE, "double"); + //Compression Types - public static final GLDataType UNSIGNED_INT_10_10_10_2 = new GLDataType(GL12.GL_UNSIGNED_INT_10_10_10_2, 4, true); - public static final GLDataType UNSIGNED_INT_2_10_10_10_REV = new GLDataType(GL12.GL_UNSIGNED_INT_2_10_10_10_REV, 4, true); + public static final GLDataType UNSIGNED_INT_10_10_10_2 = new GLDataType(GL12.GL_UNSIGNED_INT_10_10_10_2, DataType.INT, true, "u_int_10_10_10_2"); + public static final GLDataType UNSIGNED_INT_2_10_10_10_REV = new GLDataType(GL12.GL_UNSIGNED_INT_2_10_10_10_REV, DataType.INT, true, "u_int_2_10_10_10_rev"); //Special Types - public static final GLDataType UNSIGNED_INT_10F_11F_11F_REV = new GLDataType(GL30.GL_UNSIGNED_INT_10F_11F_11F_REV, 4, true); - public static final GLDataType UNSIGNED_INT_5_9_9_9_REV = new GLDataType(GL30.GL_UNSIGNED_INT_5_9_9_9_REV, 4, true); + public static final GLDataType UNSIGNED_INT_10F_11F_11F_REV = new GLDataType(GL30.GL_UNSIGNED_INT_10F_11F_11F_REV, DataType.INT, true, "u_int_10_11_11_rev"); + public static final GLDataType UNSIGNED_INT_5_9_9_9_REV = new GLDataType(GL30.GL_UNSIGNED_INT_5_9_9_9_REV, DataType.INT, true, "u_int_5_9_9_9_rev"); final int glType; - final int byteSize; + final DataType dataType; final boolean ignoreAttributeSize; + final String name; - public GLDataType(int glType, int byteSize) + public GLDataType(int glType, DataType dataType, String name) { - this(glType, byteSize, false); + this(glType, dataType, false, name); } - public GLDataType(int glType, int byteSize, boolean ignoreAttributeSize) + public GLDataType(int glType, DataType dataType, boolean ignoreAttributeSize, String name) { this.glType = glType; - this.byteSize = byteSize; + this.dataType = dataType; this.ignoreAttributeSize = ignoreAttributeSize; + this.name = name; + ID_TO_TYPE.put(glType, this); + NAME_TO_TYPE.put(name, this); } public int getGLType() @@ -44,13 +58,28 @@ public class GLDataType return glType; } + public String getName() + { + return name; + } + public int getByteSize() { - return byteSize; + return dataType.getByteSize(); + } + + public boolean isSpecialType() + { + return ignoreAttributeSize; + } + + public DataType getDataType() + { + return dataType; } public int calulateSize(int attributeSize) { - return ignoreAttributeSize ? byteSize : attributeSize * byteSize; + return ignoreAttributeSize ? dataType.getByteSize() : attributeSize * dataType.getByteSize(); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/models/VertexBuffer.java b/src/main/java/speiger/src/coreengine/rendering/models/VertexBuffer.java index dfcefc0..fd0d54f 100644 --- a/src/main/java/speiger/src/coreengine/rendering/models/VertexBuffer.java +++ b/src/main/java/speiger/src/coreengine/rendering/models/VertexBuffer.java @@ -9,7 +9,7 @@ import java.util.function.Consumer; import org.lwjgl.opengl.GL15; import org.lwjgl.system.MemoryUtil; -import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap.Entry; +import speiger.src.collections.ints.misc.pairs.IntObjectPair; import speiger.src.coreengine.rendering.utils.AllocationTracker; import speiger.src.coreengine.utils.io.GameLog; @@ -213,12 +213,12 @@ public class VertexBuffer return this; } - public VertexBuffer fillBuffer(List> data) + public VertexBuffer fillBuffer(List> data) { return fillBuffer(0, data); } - public VertexBuffer fillBuffer(int byteOffset, List> data) + public VertexBuffer fillBuffer(int byteOffset, List> data) { if(data.isEmpty()) { @@ -228,7 +228,7 @@ public class VertexBuffer ByteBuffer buffer = GL15.glMapBuffer(bufferType, GL15.GL_WRITE_ONLY); for(int i = 0,m=data.size();i entry = data.get(i); + IntObjectPair entry = data.get(i); buffer.position(entry.getIntKey()+byteOffset); buffer.put(entry.getValue()); totalData += entry.getValue().length; diff --git a/src/main/java/speiger/src/coreengine/rendering/models/frameBuffer/TextureAttachment.java b/src/main/java/speiger/src/coreengine/rendering/models/frameBuffer/TextureAttachment.java index b44e8bb..f60e659 100644 --- a/src/main/java/speiger/src/coreengine/rendering/models/frameBuffer/TextureAttachment.java +++ b/src/main/java/speiger/src/coreengine/rendering/models/frameBuffer/TextureAttachment.java @@ -7,7 +7,7 @@ import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL30; import org.lwjgl.opengl.GL32; -import speiger.src.coreengine.rendering.textures.TextureManager; +import speiger.src.coreengine.rendering.textures.base.TextureManager; public class TextureAttachment implements IFrameAttachment { diff --git a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java index 1e82a50..a054473 100644 --- a/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/shader/uniforms/UniformTexture.java @@ -1,7 +1,7 @@ package speiger.src.coreengine.rendering.shader.uniforms; -import speiger.src.coreengine.rendering.textures.ITexture; -import speiger.src.coreengine.rendering.textures.TextureManager; +import speiger.src.coreengine.rendering.textures.base.ITexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; public class UniformTexture extends UniformInt { diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/ITexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/ITexture.java deleted file mode 100644 index 1ce92f2..0000000 --- a/src/main/java/speiger/src/coreengine/rendering/textures/ITexture.java +++ /dev/null @@ -1,22 +0,0 @@ -package speiger.src.coreengine.rendering.textures; - -import speiger.src.coreengine.assets.reloader.IReloadableResource; - -public interface ITexture extends IReloadableResource -{ - public int getTextureID(); - - public void bindTexture(); - public void deleteTexture(); - - public int getWidth(); - public int getHeight(); - - public float getUMin(); - public float getVMin(); - public float getUMax(); - public float getVMax(); - - public default float getInterpolatedU(float u){return getUMin() + ((getUMax() - getUMin()) * u);} - public default float getINterpolatedV(float v){return getUMin() + ((getUMax() - getUMin()) * v);} -} diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/AbstractTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java similarity index 84% rename from src/main/java/speiger/src/coreengine/rendering/textures/AbstractTexture.java rename to src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java index 4b3a4ff..fd9da64 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/AbstractTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/AbstractTexture.java @@ -1,12 +1,14 @@ -package speiger.src.coreengine.rendering.textures; +package speiger.src.coreengine.rendering.textures.base; public abstract class AbstractTexture implements ITexture { - int textureID; + protected int textureID; - public AbstractTexture() + @Override + public ITexture makeReloadable() { TextureManager.INSTANCE.addTexture(this); + return this; } public void setTextureID(int textureID) diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java new file mode 100644 index 0000000..cc6d47d --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/ITexture.java @@ -0,0 +1,56 @@ +package speiger.src.coreengine.rendering.textures.base; + +import java.awt.image.BufferedImage; +import java.nio.ByteBuffer; + +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.assets.reloader.IReloadableResource; +import speiger.src.coreengine.rendering.textures.normal.DirectTexture; +import speiger.src.coreengine.rendering.textures.normal.SimpleTexture; +import speiger.src.coreengine.rendering.textures.stb.STBDirectTexture; +import speiger.src.coreengine.rendering.textures.stb.STBTexture; + +public interface ITexture extends IReloadableResource +{ + public int getTextureID(); + + public void bindTexture(); + public void deleteTexture(); + + public int getWidth(); + public int getHeight(); + + public float getUMin(); + public float getVMin(); + public float getUMax(); + public float getVMax(); + + public ITexture makeReloadable(); + + public default float getInterpolatedU(float u){return getUMin() + ((getUMax() - getUMin()) * u);} + public default float getInterpolatedV(float v){return getUMin() + ((getUMax() - getUMin()) * v);} + + public static ITexture simple(AssetLocation location) { + return new STBTexture(location); + } + + public static ITexture direct(ByteBuffer stbImageData, int width, int height) { + return new STBDirectTexture(stbImageData, width, height); + } + + public static ITexture direct(long stbImageData, int width, int height) { + return new STBDirectTexture(stbImageData, width, height); + } + + public static ITexture direct(BufferedImage imageData) { + return new STBDirectTexture(imageData); + } + + public static ITexture awtSimple(AssetLocation location) { + return new SimpleTexture(location); + } + + public static ITexture awtDirect(BufferedImage imageData) { + return new DirectTexture(imageData); + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/base/NativeMemoryParser.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/NativeMemoryParser.java new file mode 100644 index 0000000..f1f6b3e --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/NativeMemoryParser.java @@ -0,0 +1,27 @@ +package speiger.src.coreengine.rendering.textures.base; + +import java.io.Closeable; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.function.Consumer; + +import org.lwjgl.system.MemoryUtil; + +import speiger.src.coreengine.assets.IAssetParser; + +public class NativeMemoryParser implements IAssetParser +{ + + @Override + public ByteBuffer parseAsset(Path path, Consumer autoCloser) throws IOException + { + byte[] data = Files.readAllBytes(path); + ByteBuffer buffer = MemoryUtil.memAlloc(data.length); + buffer.put(data); + buffer.flip(); + return buffer; + } + +} diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/TextureManager.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java similarity index 94% rename from src/main/java/speiger/src/coreengine/rendering/textures/TextureManager.java rename to src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java index b101bd2..3921287 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/TextureManager.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/TextureManager.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.rendering.textures; +package speiger.src.coreengine.rendering.textures.base; import java.awt.image.BufferedImage; import java.nio.ByteBuffer; @@ -13,6 +13,8 @@ import speiger.src.coreengine.assets.AssetManager; import speiger.src.coreengine.assets.IAsset; import speiger.src.coreengine.assets.reloader.IReloadableResource; import speiger.src.coreengine.assets.reloader.ResourceReloader; +import speiger.src.coreengine.rendering.textures.base.ITexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; import speiger.src.coreengine.rendering.utils.GLUtils; import speiger.src.coreengine.rendering.utils.states.GLState; import speiger.src.coreengine.utils.io.GameLog; diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/WrappedTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/base/WrappedTexture.java similarity index 85% rename from src/main/java/speiger/src/coreengine/rendering/textures/WrappedTexture.java rename to src/main/java/speiger/src/coreengine/rendering/textures/base/WrappedTexture.java index fa61518..7771703 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/WrappedTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/base/WrappedTexture.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.rendering.textures; +package speiger.src.coreengine.rendering.textures.base; public class WrappedTexture implements ITexture { @@ -8,7 +8,13 @@ public class WrappedTexture implements ITexture { this.textureId = textureId; } - + + @Override + public ITexture makeReloadable() + { + return this; + } + @Override public void reload() { diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/DynamicTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/custom/DynamicTexture.java similarity index 93% rename from src/main/java/speiger/src/coreengine/rendering/textures/DynamicTexture.java rename to src/main/java/speiger/src/coreengine/rendering/textures/custom/DynamicTexture.java index 6e9ab86..ee8dd88 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/DynamicTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/custom/DynamicTexture.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.rendering.textures; +package speiger.src.coreengine.rendering.textures.custom; import java.nio.ByteBuffer; import java.util.Iterator; @@ -16,6 +16,8 @@ import speiger.src.collections.ints.sets.IntSet; import speiger.src.collections.ints.utils.maps.Int2ObjectMaps; import speiger.src.collections.utils.ITrimmable; import speiger.src.coreengine.math.BitUtil; +import speiger.src.coreengine.rendering.textures.base.AbstractTexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; import speiger.src.coreengine.rendering.utils.AllocationTracker; public class DynamicTexture extends AbstractTexture @@ -132,8 +134,9 @@ public class DynamicTexture extends AbstractTexture @Override public void reload() { - TextureManager.INSTANCE.removeTexture(getTextureID()); + int old = getTextureID(); setTextureID(GL11.glGenTextures()); + TextureManager.INSTANCE.removeTexture(old); dirtyChunks.clear(); first = true; updateData(); diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/custom/TextureAtlas.java b/src/main/java/speiger/src/coreengine/rendering/textures/custom/TextureAtlas.java new file mode 100644 index 0000000..6a4b166 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/custom/TextureAtlas.java @@ -0,0 +1,304 @@ +package speiger.src.coreengine.rendering.textures.custom; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.function.BiConsumer; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.maps.impl.hash.Object2ObjectLinkedOpenHashMap; +import speiger.src.collections.objects.maps.interfaces.Object2ObjectMap; +import speiger.src.collections.objects.misc.pairs.ObjectObjectPair; +import speiger.src.collections.objects.sets.ObjectOpenHashSet; +import speiger.src.collections.objects.utils.ObjectIterators; +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.math.vector.ints.Vec2i; +import speiger.src.coreengine.rendering.textures.custom.TextureAtlas; + +/** + * Inspired by: AtlasGenerator + */ +public class TextureAtlas +{ + int width; + int height; + Object2ObjectMap textures; + + protected TextureAtlas(Vec2i bounds, Object2ObjectMap textures) + { + width = bounds.getX(); + height = bounds.getY(); + this.textures = textures; + } + + public int getWidth() + { + return width; + } + + public int getHeight() + { + return height; + } + + public AtlasEntry getTexture(AssetLocation texture) + { + return textures.getObject(texture); + } + + public Iterator getContents() + { + return ObjectIterators.unmodifiable(textures.values().iterator()); + } + + public static Builder create() + { + return new Builder(); + } + + public static class Builder + { + Set names = new ObjectOpenHashSet<>(); + List records = new ObjectArrayList<>(); + int pixelsUsed = 0; + + public boolean add(AssetLocation location, int width, int height) + { + return add(location, width, height, 0); + } + + public boolean add(AssetLocation location, int width, int height, int padding) + { + if(location == null || width <= 0 || height <= 0 || padding < 0 || !names.add(location)) return false; + records.add(new Record(location, width, height, padding)); + pixelsUsed += (width + padding) * (height + padding); + return true; + } + + private ObjectObjectPair> stitch() + { + int textureWidth = 2; + int textureHeight = 2; + boolean height = false; + for(;textureHeight * textureWidth <= pixelsUsed;height = !height) + { + if(height) textureHeight *= 2; + else textureWidth *= 2; + } + records.sort(null); + int attempts = 0; + while(attempts < 50) + { + Slot slot = new Slot(0, 0, textureWidth, textureHeight); + boolean failed = false; + for(int i = 0,m=records.size();i entries = new Object2ObjectLinkedOpenHashMap<>(); + slot.build(entries::put); + return ObjectObjectPair.of(Vec2i.newVec(textureWidth, textureHeight), entries); + } + throw new IllegalStateException("Couldn't fit Texture Atlas after growing it 5 Times"); + } + + public void buildHollow(BiConsumer> builder) + { + ObjectObjectPair> pairs = stitch(); + builder.accept(pairs.getKey(), pairs.getValue().values()); + } + + public TextureAtlas build(BiConsumer> builder) + { + ObjectObjectPair> pairs = stitch(); + builder.accept(pairs.getKey(), pairs.getValue().values()); + return new TextureAtlas(pairs.getKey(), pairs.getValue()); + } + + public TextureAtlas build() + { + ObjectObjectPair> pairs = stitch(); + return new TextureAtlas(pairs.getKey(), pairs.getValue()); + } + } + + public static class AtlasEntry + { + AssetLocation location; + int x; + int y; + int width; + int height; + + private AtlasEntry(Slot slot) + { + Record record = slot.record; + location = record == null ? null : record.getLocation(); + x = slot.x; + y = slot.y; + width = record == null ? slot.width : record.width; + height = record == null ? slot.height : record.height; + } + + public AssetLocation getLocation() + { + return location; + } + + public int getX() + { + return x; + } + + public int getY() + { + return y; + } + + public int getWidth() + { + return width; + } + + public int getHeight() + { + return height; + } + } + + private static class Slot + { + int x; + int y; + int width; + int height; + Record record; + Slot[] children = null; + + public Slot(int x, int y, int width, int height) + { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + public boolean isLeaf() + { + return children == null; + } + + public void build(BiConsumer builder) + { + if(!isLeaf()) + { + for(int i = 0,m=children.length;i width || rh > height) return false; + if(rw == width && rh == height) + { + this.record = record; + return true; + } + int p = record.getPadding(); + int dw = width - rw; + int dh = height - rh; + children = new Slot[dw > 0 && dh > 0 ? 3 : 2]; + children[0] = new Slot(x, y, rw, rh); + if(dw > 0 && dh > 0) + { + if(dw > dh) + { + children[1] = new Slot(x + rw + p, y, dw - p, rh); + children[2] = new Slot(x, y + rh + p, width, dh - p); + } + else + { + children[1] = new Slot(x, y + rh + p, rw, dh - p); + children[2] = new Slot(x + rw + p, y, dw - p, height); + } + } + else if(dw == 0) children[1] = new Slot(x, y + rh + p, rw, dh - p); + else if(dh == 0) children[1] = new Slot(x + rw + p, y, dw - p, rh); + return children[0].addRecord(record); + } + for(int i = 0,m=children.length;i + { + AssetLocation location; + int width; + int height; + int padding; + + public Record(AssetLocation location, int width, int height, int padding) + { + this.location = location; + this.width = width; + this.height = height; + this.padding = padding; + } + + public int getHeight() + { + return height; + } + + public int getWidth() + { + return width; + } + + public int getPadding() + { + return padding; + } + + public AssetLocation getLocation() + { + return location; + } + + private int getPixelCount() + { + return (width + padding) * (height + padding); + } + + @Override + public int compareTo(Record o) + { + int result = Integer.compare(o.getPixelCount(), getPixelCount()); + return result == 0 ? getLocation().compareTo(o.getLocation()) : result; + } + } +} \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/DirectTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/normal/DirectTexture.java similarity index 90% rename from src/main/java/speiger/src/coreengine/rendering/textures/DirectTexture.java rename to src/main/java/speiger/src/coreengine/rendering/textures/normal/DirectTexture.java index 055a377..26e9936 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/DirectTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/normal/DirectTexture.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.rendering.textures; +package speiger.src.coreengine.rendering.textures.normal; import java.awt.image.BufferedImage; import java.nio.ByteBuffer; @@ -8,6 +8,9 @@ import org.lwjgl.opengl.GL13; import org.lwjgl.opengl.GL30; import org.lwjgl.system.MemoryUtil; +import speiger.src.coreengine.rendering.textures.base.AbstractTexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; + public class DirectTexture extends AbstractTexture { BufferedImage image; @@ -93,7 +96,8 @@ public class DirectTexture extends AbstractTexture @Override public void reload() { - TextureManager.INSTANCE.removeTexture(textureID); + int old = textureID; loadTexture(); + TextureManager.INSTANCE.removeTexture(old); } } diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/SimpleTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/normal/SimpleTexture.java similarity index 88% rename from src/main/java/speiger/src/coreengine/rendering/textures/SimpleTexture.java rename to src/main/java/speiger/src/coreengine/rendering/textures/normal/SimpleTexture.java index a06247e..ce0800f 100644 --- a/src/main/java/speiger/src/coreengine/rendering/textures/SimpleTexture.java +++ b/src/main/java/speiger/src/coreengine/rendering/textures/normal/SimpleTexture.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.rendering.textures; +package speiger.src.coreengine.rendering.textures.normal; import java.awt.image.BufferedImage; import java.nio.ByteBuffer; @@ -10,6 +10,8 @@ import org.lwjgl.system.MemoryUtil; import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.IAsset; +import speiger.src.coreengine.rendering.textures.base.AbstractTexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; public class SimpleTexture extends AbstractTexture { @@ -66,8 +68,9 @@ public class SimpleTexture extends AbstractTexture @Override public void reload() { - TextureManager.INSTANCE.removeTexture(textureID); + int old = textureID; loadTexture(); + TextureManager.INSTANCE.removeTexture(old); } @Override diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java new file mode 100644 index 0000000..0641038 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBDirectTexture.java @@ -0,0 +1,109 @@ +package speiger.src.coreengine.rendering.textures.stb; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.nio.ByteBuffer; + +import javax.imageio.ImageIO; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL13; +import org.lwjgl.opengl.GL30; +import org.lwjgl.stb.STBImage; +import org.lwjgl.system.MemoryUtil; + +import speiger.src.coreengine.rendering.textures.base.AbstractTexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; + +public class STBDirectTexture extends AbstractTexture +{ + long imageData; + int width; + int height; + + public STBDirectTexture(BufferedImage imageData) + { + this(convert(imageData), imageData.getWidth(), imageData.getHeight()); + } + + public STBDirectTexture(ByteBuffer imageData, int width, int height) + { + this(MemoryUtil.memAddress(imageData), width, height); + } + + public STBDirectTexture(long imageData, int width, int height) + { + this.imageData = imageData; + this.width = width; + this.height = height; + loadTexture(); + } + + protected void loadTexture() + { + setTextureID(GL11.glGenTextures()); + bindTexture(); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL13.GL_CLAMP_TO_BORDER); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL13.GL_CLAMP_TO_BORDER); + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, imageData); + GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); + } + + @Override + public int getWidth() + { + return width; + } + + @Override + public int getHeight() + { + return height; + } + + @Override + public void reload() + { + int old = textureID; + loadTexture(); + TextureManager.INSTANCE.removeTexture(old); + } + + @Override + public void deleteTexture() + { + if(imageData != 0) + { + STBImage.nstbi_image_free(imageData); + imageData = 0; + } + super.deleteTexture(); + } + + private static ByteBuffer convert(BufferedImage image) + { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + try + { + ImageIO.write(image, "png", stream); + ByteBuffer buffer = MemoryUtil.memAlloc(stream.size()); + buffer.put(stream.toByteArray()); + buffer.flip(); + ByteBuffer result = STBImage.stbi_load_from_memory(buffer, new int[1], new int[1], new int[1], 4); + if(result == null) { + MemoryUtil.memFree(buffer); + throw new IOException("Could not load image: " + STBImage.stbi_failure_reason()); + } + MemoryUtil.memFree(buffer); + return result; + } + catch(Exception e) + { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBTexture.java b/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBTexture.java new file mode 100644 index 0000000..c134b51 --- /dev/null +++ b/src/main/java/speiger/src/coreengine/rendering/textures/stb/STBTexture.java @@ -0,0 +1,98 @@ +package speiger.src.coreengine.rendering.textures.stb; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL13; +import org.lwjgl.opengl.GL30; +import org.lwjgl.stb.STBImage; +import org.lwjgl.system.MemoryUtil; + +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.assets.IAsset; +import speiger.src.coreengine.rendering.textures.base.AbstractTexture; +import speiger.src.coreengine.rendering.textures.base.TextureManager; + +public class STBTexture extends AbstractTexture +{ + AssetLocation location; + long imageData; + int width; + int height; + + public STBTexture(AssetLocation location) + { + this.location = location; + loadTexture(); + } + + private void loadTexture() + { + try(IAsset asset = TextureManager.INSTANCE.getManager().getAsset(location)) + { + ByteBuffer buffer = asset.getCustom(ByteBuffer.class); + int[] width = new int[1]; + int[] height = new int[1]; + int[] fileChannels = new int[1]; + ByteBuffer image = STBImage.stbi_load_from_memory(buffer, width, height, fileChannels, 4); + if(image == null) { + MemoryUtil.memFree(buffer); + throw new IOException("Could not load image: " + STBImage.stbi_failure_reason()); + } + imageData = MemoryUtil.memAddress(image); + this.width = width[0]; + this.height = height[0]; + MemoryUtil.memFree(buffer); + } + catch(Exception e) + { + e.printStackTrace(); + return; + } + setTextureID(GL11.glGenTextures()); + bindTexture(); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL13.GL_CLAMP_TO_BORDER); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL13.GL_CLAMP_TO_BORDER); + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, imageData); + GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); + } + + @Override + public int getWidth() + { + return width; + } + + @Override + public int getHeight() + { + return height; + } + + @Override + public void reload() + { + if(imageData != 0) + { + STBImage.nstbi_image_free(imageData); + imageData = 0; + } + int old = textureID; + loadTexture(); + TextureManager.INSTANCE.removeTexture(old); + } + + @Override + public void deleteTexture() + { + super.deleteTexture(); + if(imageData != 0) + { + STBImage.nstbi_image_free(imageData); + imageData = 0; + } + } +} diff --git a/src/main/java/speiger/src/coreengine/rendering/utils/Cursor.java b/src/main/java/speiger/src/coreengine/rendering/utils/Cursor.java index 959a636..c37f204 100644 --- a/src/main/java/speiger/src/coreengine/rendering/utils/Cursor.java +++ b/src/main/java/speiger/src/coreengine/rendering/utils/Cursor.java @@ -12,7 +12,7 @@ import speiger.src.collections.objects.utils.maps.Object2ObjectMaps; import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.reloader.IReloadableResource; import speiger.src.coreengine.rendering.input.window.Window; -import speiger.src.coreengine.rendering.textures.TextureManager; +import speiger.src.coreengine.rendering.textures.base.TextureManager; public final class Cursor implements IReloadableResource { diff --git a/src/main/java/speiger/src/coreengine/utils/collections/CollectionUtils.java b/src/main/java/speiger/src/coreengine/utils/collections/CollectionUtils.java index c5b6a1c..d9d4ca7 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/CollectionUtils.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/CollectionUtils.java @@ -37,7 +37,7 @@ public class CollectionUtils List[] list = new List[size]; for(int i = 0;i(); + list[i] = new ObjectArrayList<>(); } return list; } diff --git a/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/DynamicDataManager.java b/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/DynamicDataManager.java index 195f178..4c93199 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/DynamicDataManager.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/DynamicDataManager.java @@ -6,10 +6,9 @@ import java.util.Set; import speiger.src.collections.ints.collections.IntIterator; import speiger.src.collections.ints.maps.abstracts.AbstractInt2IntMap.BasicEntry; -import speiger.src.collections.ints.maps.abstracts.AbstractInt2ObjectMap; import speiger.src.collections.ints.maps.interfaces.Int2IntMap; import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap; -import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap.Entry; +import speiger.src.collections.ints.misc.pairs.IntObjectPair; import speiger.src.collections.ints.sets.IntAVLTreeSet; import speiger.src.collections.ints.sets.IntSet; import speiger.src.collections.objects.lists.ObjectArrayList; @@ -166,7 +165,7 @@ public class DynamicDataManager } return; } - List> list = new ObjectArrayList<>(); + List> list = new ObjectArrayList<>(); while(!changedSlots.isEmpty()) { DataSlot start = null; @@ -196,7 +195,7 @@ public class DynamicDataManager bytesAllocated += start.getUsedBytes(); start = start.next; } - list.add(new AbstractInt2ObjectMap.BasicEntry<>(byteOffset, data)); + list.add(IntObjectPair.of(byteOffset, data)); } if(!list.isEmpty()) { diff --git a/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/IDynamicDataHandler.java b/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/IDynamicDataHandler.java index fa34aeb..929c8e2 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/IDynamicDataHandler.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/managers/dynamic/IDynamicDataHandler.java @@ -2,10 +2,10 @@ package speiger.src.coreengine.utils.collections.managers.dynamic; import java.util.List; -import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap.Entry; +import speiger.src.collections.ints.misc.pairs.IntObjectPair; public interface IDynamicDataHandler { public byte[] toBytes(T entry); - public void uploadBytes(List> list, int newArraySize); + public void uploadBytes(List> list, int newArraySize); } diff --git a/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/FixedDataManager.java b/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/FixedDataManager.java index 5f69bea..fdbf2a7 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/FixedDataManager.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/FixedDataManager.java @@ -10,10 +10,9 @@ import speiger.src.collections.ints.collections.IntIterator; import speiger.src.collections.ints.functions.IntComparator; import speiger.src.collections.ints.lists.IntArrayList; import speiger.src.collections.ints.lists.IntList; -import speiger.src.collections.ints.maps.abstracts.AbstractInt2ObjectMap.BasicEntry; import speiger.src.collections.ints.maps.impl.hash.Int2IntOpenHashMap; import speiger.src.collections.ints.maps.interfaces.Int2IntMap; -import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap.Entry; +import speiger.src.collections.ints.misc.pairs.IntObjectPair; import speiger.src.collections.ints.sets.IntAVLTreeSet; import speiger.src.collections.ints.sets.IntLinkedOpenHashSet; import speiger.src.collections.ints.sets.IntSet; @@ -284,7 +283,7 @@ public class FixedDataManager { ObjectArrays.quickSort(slots); List fixed = new ObjectArrayList(); - List> data = new ObjectArrayList>(); + List> data = new ObjectArrayList<>(); FixedSlot first = null; FixedSlot last = null; for(int i = 0,m=slots.length;i(first.index * bytes, buffer.array())); + data.add(IntObjectPair.of(first.index * bytes, buffer.array())); i--; first = last = null; } @@ -313,7 +312,7 @@ public class FixedDataManager ByteBuffer buffer = ByteBuffer.allocate(fixed.size() * bytes).order(ByteOrder.nativeOrder()); handler.createData(buffer, fixed.size(), fixed); fixed.clear(); - data.add(new BasicEntry(first.index * bytes, buffer.array())); + data.add(IntObjectPair.of(first.index * bytes, buffer.array())); } SLOTS.accept(slots); return new FinishingTask(handler, data, size); @@ -339,10 +338,10 @@ public class FixedDataManager static class FinishingTask implements Runnable { IFixedDataHandler handler; - List> data; + List> data; int size; - public FinishingTask(IFixedDataHandler handler, List> data, int size) + public FinishingTask(IFixedDataHandler handler, List> data, int size) { this.handler = handler; this.data = data; diff --git a/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/IFixedDataHandler.java b/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/IFixedDataHandler.java index 110abf0..c459d8c 100644 --- a/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/IFixedDataHandler.java +++ b/src/main/java/speiger/src/coreengine/utils/collections/managers/fixed/IFixedDataHandler.java @@ -3,11 +3,11 @@ package speiger.src.coreengine.utils.collections.managers.fixed; import java.nio.ByteBuffer; import java.util.List; -import speiger.src.collections.ints.maps.interfaces.Int2ObjectMap.Entry; +import speiger.src.collections.ints.misc.pairs.IntObjectPair; public interface IFixedDataHandler { public void createData(ByteBuffer data, int size, List slots); - public void updateData(List> list, int newSize); + public void updateData(List> list, int newSize); } \ No newline at end of file diff --git a/src/main/java/speiger/src/coreengine/utils/helpers/JsonUtil.java b/src/main/java/speiger/src/coreengine/utils/helpers/JsonUtil.java index 39c33e1..b8410ef 100644 --- a/src/main/java/speiger/src/coreengine/utils/helpers/JsonUtil.java +++ b/src/main/java/speiger/src/coreengine/utils/helpers/JsonUtil.java @@ -8,6 +8,8 @@ import java.io.InputStreamReader; import java.io.Reader; import java.nio.file.Files; import java.nio.file.Path; +import java.util.function.BiConsumer; +import java.util.function.Consumer; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -55,6 +57,32 @@ public class JsonUtil } } + public static void iterate(JsonElement element, Consumer listener) + { + if(element.isJsonObject()) listener.accept(element.getAsJsonObject()); + else if(element.isJsonArray()) + { + JsonArray array = element.getAsJsonArray(); + for(int i = 0,m=array.size();i void iterate(JsonElement element, T input, BiConsumer listener) + { + if(element.isJsonObject()) listener.accept(element.getAsJsonObject(), input); + else if(element.isJsonArray()) + { + JsonArray array = element.getAsJsonArray(); + for(int i = 0,m=array.size();iqZl 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 GkNyvUktz%T diff --git a/src/main/resources/assets/base/font/Roboto-Font.fnt b/src/main/resources/assets/base/font/Roboto-Font.fnt deleted file mode 100644 index e7cdf08..0000000 --- a/src/main/resources/assets/base/font/Roboto-Font.fnt +++ /dev/null @@ -1,395 +0,0 @@ -textureWidth=1024, textureHeight=512, base=39, fontHeight=50 -letter=0, minX=0, minY=0, maxX=0, maxY=50, bold=0 -letter=2, minX=0, minY=0, maxX=0, maxY=50, bold=0 -letter=9, minX=0, minY=0, maxX=0, maxY=50, bold=0 -letter=10, minX=0, minY=0, maxX=0, maxY=50, bold=0 -letter=13, minX=0, minY=0, maxX=0, maxY=50, bold=0 -letter=32, minX=0, minY=0, maxX=10, maxY=50, bold=0 -letter=33, minX=10, minY=0, maxX=21, maxY=50, bold=0 -letter=34, minX=21, minY=0, maxX=35, maxY=50, bold=0 -letter=35, minX=35, minY=0, maxX=61, maxY=50, bold=0 -letter=36, minX=61, minY=0, maxX=85, maxY=50, bold=0 -letter=37, minX=85, minY=0, maxX=116, maxY=50, bold=0 -letter=38, minX=116, minY=0, maxX=143, maxY=50, bold=0 -letter=39, minX=143, minY=0, maxX=150, maxY=50, bold=0 -letter=40, minX=150, minY=0, maxX=165, maxY=50, bold=0 -letter=41, minX=165, minY=0, maxX=180, maxY=50, bold=0 -letter=42, minX=180, minY=0, maxX=199, maxY=50, bold=0 -letter=43, minX=199, minY=0, maxX=222, maxY=50, bold=0 -letter=44, minX=222, minY=0, maxX=231, maxY=50, bold=0 -letter=45, minX=231, minY=0, maxX=245, maxY=50, bold=0 -letter=46, minX=245, minY=0, maxX=257, maxY=50, bold=0 -letter=47, minX=257, minY=0, maxX=274, maxY=50, bold=0 -letter=48, minX=274, minY=0, maxX=298, maxY=50, bold=0 -letter=49, minX=298, minY=0, maxX=322, maxY=50, bold=0 -letter=50, minX=322, minY=0, maxX=346, maxY=50, bold=0 -letter=51, minX=346, minY=0, maxX=370, maxY=50, bold=0 -letter=52, minX=370, minY=0, maxX=394, maxY=50, bold=0 -letter=53, minX=394, minY=0, maxX=418, maxY=50, bold=0 -letter=54, minX=418, minY=0, maxX=442, maxY=50, bold=0 -letter=55, minX=442, minY=0, maxX=466, maxY=50, bold=0 -letter=56, minX=466, minY=0, maxX=490, maxY=50, bold=0 -letter=57, minX=490, minY=0, maxX=514, maxY=50, bold=0 -letter=58, minX=514, minY=0, maxX=525, maxY=50, bold=0 -letter=59, minX=525, minY=0, maxX=535, maxY=50, bold=0 -letter=60, minX=535, minY=0, maxX=556, maxY=50, bold=0 -letter=61, minX=556, minY=0, maxX=580, maxY=50, bold=0 -letter=62, minX=580, minY=0, maxX=602, maxY=50, bold=0 -letter=63, minX=602, minY=0, maxX=622, maxY=50, bold=0 -letter=64, minX=622, minY=0, maxX=660, maxY=50, bold=0 -letter=65, minX=660, minY=0, maxX=688, maxY=50, bold=0 -letter=66, minX=688, minY=0, maxX=715, maxY=50, bold=0 -letter=67, minX=715, minY=0, maxX=742, maxY=50, bold=0 -letter=68, minX=742, minY=0, maxX=769, maxY=50, bold=0 -letter=69, minX=769, minY=0, maxX=793, maxY=50, bold=0 -letter=70, minX=793, minY=0, maxX=816, maxY=50, bold=0 -letter=71, minX=816, minY=0, maxX=845, maxY=50, bold=0 -letter=72, minX=845, minY=0, maxX=875, maxY=50, bold=0 -letter=73, minX=875, minY=0, maxX=887, maxY=50, bold=0 -letter=74, minX=887, minY=0, maxX=910, maxY=50, bold=0 -letter=75, minX=910, minY=0, maxX=936, maxY=50, bold=0 -letter=76, minX=936, minY=0, maxX=959, maxY=50, bold=0 -letter=77, minX=959, minY=0, maxX=996, maxY=50, bold=0 -letter=78, minX=0, minY=51, maxX=30, maxY=101, bold=0 -letter=79, minX=30, minY=51, maxX=59, maxY=101, bold=0 -letter=80, minX=59, minY=51, maxX=86, maxY=101, bold=0 -letter=81, minX=86, minY=51, maxX=115, maxY=101, bold=0 -letter=82, minX=115, minY=51, maxX=141, maxY=101, bold=0 -letter=83, minX=141, minY=51, maxX=166, maxY=101, bold=0 -letter=84, minX=166, minY=51, maxX=191, maxY=101, bold=0 -letter=85, minX=191, minY=51, maxX=218, maxY=101, bold=0 -letter=86, minX=218, minY=51, maxX=245, maxY=101, bold=0 -letter=87, minX=245, minY=51, maxX=282, maxY=101, bold=0 -letter=88, minX=282, minY=51, maxX=309, maxY=101, bold=0 -letter=89, minX=309, minY=51, maxX=335, maxY=101, bold=0 -letter=90, minX=335, minY=51, maxX=360, maxY=101, bold=0 -letter=91, minX=360, minY=51, maxX=372, maxY=101, bold=0 -letter=92, minX=372, minY=51, maxX=390, maxY=101, bold=0 -letter=93, minX=390, minY=51, maxX=402, maxY=101, bold=0 -letter=94, minX=402, minY=51, maxX=420, maxY=101, bold=0 -letter=95, minX=420, minY=51, maxX=439, maxY=101, bold=0 -letter=96, minX=439, minY=51, maxX=453, maxY=101, bold=0 -letter=97, minX=453, minY=51, maxX=476, maxY=101, bold=0 -letter=98, minX=476, minY=51, maxX=500, maxY=101, bold=0 -letter=99, minX=500, minY=51, maxX=522, maxY=101, bold=0 -letter=100, minX=522, minY=51, maxX=546, maxY=101, bold=0 -letter=101, minX=546, minY=51, maxX=569, maxY=101, bold=0 -letter=102, minX=569, minY=51, maxX=584, maxY=101, bold=0 -letter=103, minX=584, minY=51, maxX=608, maxY=101, bold=0 -letter=104, minX=608, minY=51, maxX=631, maxY=101, bold=0 -letter=105, minX=631, minY=51, maxX=642, maxY=101, bold=0 -letter=32, minX=642, minY=51, maxX=652, maxY=101, bold=0 -letter=106, minX=652, minY=51, maxX=663, maxY=101, bold=0 -letter=107, minX=663, minY=51, maxX=685, maxY=101, bold=0 -letter=108, minX=685, minY=51, maxX=696, maxY=101, bold=0 -letter=109, minX=696, minY=51, maxX=733, maxY=101, bold=0 -letter=110, minX=733, minY=51, maxX=756, maxY=101, bold=0 -letter=111, minX=756, minY=51, maxX=780, maxY=101, bold=0 -letter=112, minX=780, minY=51, maxX=804, maxY=101, bold=0 -letter=113, minX=804, minY=51, maxX=828, maxY=101, bold=0 -letter=114, minX=828, minY=51, maxX=843, maxY=101, bold=0 -letter=115, minX=843, minY=51, maxX=865, maxY=101, bold=0 -letter=116, minX=865, minY=51, maxX=879, maxY=101, bold=0 -letter=117, minX=879, minY=51, maxX=902, maxY=101, bold=0 -letter=118, minX=902, minY=51, maxX=923, maxY=101, bold=0 -letter=119, minX=923, minY=51, maxX=954, maxY=101, bold=0 -letter=120, minX=954, minY=51, maxX=975, maxY=101, bold=0 -letter=121, minX=975, minY=51, maxX=995, maxY=101, bold=0 -letter=122, minX=995, minY=51, maxX=1016, maxY=101, bold=0 -letter=123, minX=0, minY=102, maxX=14, maxY=152, bold=0 -letter=124, minX=14, minY=102, maxX=25, maxY=152, bold=0 -letter=125, minX=25, minY=102, maxX=39, maxY=152, bold=0 -letter=126, minX=39, minY=102, maxX=67, maxY=152, bold=0 -letter=160, minX=67, minY=102, maxX=77, maxY=152, bold=0 -letter=161, minX=77, minY=102, maxX=88, maxY=152, bold=0 -letter=162, minX=88, minY=102, maxX=112, maxY=152, bold=0 -letter=163, minX=112, minY=102, maxX=137, maxY=152, bold=0 -letter=164, minX=137, minY=102, maxX=166, maxY=152, bold=0 -letter=165, minX=166, minY=102, maxX=188, maxY=152, bold=0 -letter=166, minX=188, minY=102, maxX=198, maxY=152, bold=0 -letter=167, minX=198, minY=102, maxX=224, maxY=152, bold=0 -letter=168, minX=224, minY=102, maxX=242, maxY=152, bold=0 -letter=169, minX=242, minY=102, maxX=275, maxY=152, bold=0 -letter=170, minX=275, minY=102, maxX=294, maxY=152, bold=0 -letter=171, minX=294, minY=102, maxX=314, maxY=152, bold=0 -letter=172, minX=314, minY=102, maxX=337, maxY=152, bold=0 -letter=173, minX=337, minY=102, maxX=351, maxY=152, bold=0 -letter=174, minX=351, minY=102, maxX=384, maxY=152, bold=0 -letter=175, minX=384, minY=102, maxX=404, maxY=152, bold=0 -letter=176, minX=404, minY=102, maxX=420, maxY=152, bold=0 -letter=177, minX=420, minY=102, maxX=443, maxY=152, bold=0 -letter=178, minX=443, minY=102, maxX=459, maxY=152, bold=0 -letter=179, minX=459, minY=102, maxX=475, maxY=152, bold=0 -letter=180, minX=475, minY=102, maxX=489, maxY=152, bold=0 -letter=181, minX=489, minY=102, maxX=514, maxY=152, bold=0 -letter=182, minX=514, minY=102, maxX=535, maxY=152, bold=0 -letter=183, minX=535, minY=102, maxX=547, maxY=152, bold=0 -letter=184, minX=547, minY=102, maxX=558, maxY=152, bold=0 -letter=185, minX=558, minY=102, maxX=574, maxY=152, bold=0 -letter=186, minX=574, minY=102, maxX=593, maxY=152, bold=0 -letter=187, minX=593, minY=102, maxX=613, maxY=152, bold=0 -letter=188, minX=613, minY=102, maxX=644, maxY=152, bold=0 -letter=189, minX=644, minY=102, maxX=676, maxY=152, bold=0 -letter=190, minX=676, minY=102, maxX=709, maxY=152, bold=0 -letter=191, minX=709, minY=102, maxX=729, maxY=152, bold=0 -letter=192, minX=729, minY=102, maxX=757, maxY=152, bold=0 -letter=193, minX=757, minY=102, maxX=785, maxY=152, bold=0 -letter=194, minX=785, minY=102, maxX=813, maxY=152, bold=0 -letter=195, minX=813, minY=102, maxX=841, maxY=152, bold=0 -letter=196, minX=841, minY=102, maxX=869, maxY=152, bold=0 -letter=197, minX=869, minY=102, maxX=897, maxY=152, bold=0 -letter=198, minX=897, minY=102, maxX=936, maxY=152, bold=0 -letter=199, minX=936, minY=102, maxX=963, maxY=152, bold=0 -letter=200, minX=963, minY=102, maxX=987, maxY=152, bold=0 -letter=201, minX=987, minY=102, maxX=1011, maxY=152, bold=0 -letter=202, minX=0, minY=153, maxX=24, maxY=203, bold=0 -letter=203, minX=24, minY=153, maxX=48, maxY=203, bold=0 -letter=204, minX=48, minY=153, maxX=60, maxY=203, bold=0 -letter=205, minX=60, minY=153, maxX=72, maxY=203, bold=0 -letter=206, minX=72, minY=153, maxX=84, maxY=203, bold=0 -letter=207, minX=84, minY=153, maxX=96, maxY=203, bold=0 -letter=208, minX=96, minY=153, maxX=124, maxY=203, bold=0 -letter=209, minX=124, minY=153, maxX=154, maxY=203, bold=0 -letter=210, minX=154, minY=153, maxX=183, maxY=203, bold=0 -letter=211, minX=183, minY=153, maxX=212, maxY=203, bold=0 -letter=212, minX=212, minY=153, maxX=241, maxY=203, bold=0 -letter=213, minX=241, minY=153, maxX=270, maxY=203, bold=0 -letter=214, minX=270, minY=153, maxX=299, maxY=203, bold=0 -letter=215, minX=299, minY=153, maxX=321, maxY=203, bold=0 -letter=216, minX=321, minY=153, maxX=350, maxY=203, bold=0 -letter=217, minX=350, minY=153, maxX=377, maxY=203, bold=0 -letter=218, minX=377, minY=153, maxX=404, maxY=203, bold=0 -letter=219, minX=404, minY=153, maxX=431, maxY=203, bold=0 -letter=220, minX=431, minY=153, maxX=458, maxY=203, bold=0 -letter=221, minX=458, minY=153, maxX=484, maxY=203, bold=0 -letter=222, minX=484, minY=153, maxX=509, maxY=203, bold=0 -letter=223, minX=509, minY=153, maxX=535, maxY=203, bold=0 -letter=224, minX=535, minY=153, maxX=558, maxY=203, bold=0 -letter=225, minX=558, minY=153, maxX=581, maxY=203, bold=0 -letter=226, minX=581, minY=153, maxX=604, maxY=203, bold=0 -letter=227, minX=604, minY=153, maxX=627, maxY=203, bold=0 -letter=228, minX=627, minY=153, maxX=650, maxY=203, bold=0 -letter=229, minX=650, minY=153, maxX=673, maxY=203, bold=0 -letter=230, minX=673, minY=153, maxX=708, maxY=203, bold=0 -letter=231, minX=708, minY=153, maxX=730, maxY=203, bold=0 -letter=232, minX=730, minY=153, maxX=753, maxY=203, bold=0 -letter=233, minX=753, minY=153, maxX=776, maxY=203, bold=0 -letter=234, minX=776, minY=153, maxX=799, maxY=203, bold=0 -letter=235, minX=799, minY=153, maxX=822, maxY=203, bold=0 -letter=236, minX=822, minY=153, maxX=833, maxY=203, bold=0 -letter=237, minX=833, minY=153, maxX=844, maxY=203, bold=0 -letter=238, minX=844, minY=153, maxX=855, maxY=203, bold=0 -letter=239, minX=855, minY=153, maxX=866, maxY=203, bold=0 -letter=240, minX=866, minY=153, maxX=890, maxY=203, bold=0 -letter=241, minX=890, minY=153, maxX=913, maxY=203, bold=0 -letter=242, minX=913, minY=153, maxX=937, maxY=203, bold=0 -letter=243, minX=937, minY=153, maxX=961, maxY=203, bold=0 -letter=244, minX=961, minY=153, maxX=985, maxY=203, bold=0 -letter=245, minX=985, minY=153, maxX=1009, maxY=203, bold=0 -letter=246, minX=0, minY=204, maxX=24, maxY=254, bold=0 -letter=247, minX=24, minY=204, maxX=48, maxY=254, bold=0 -letter=248, minX=48, minY=204, maxX=72, maxY=254, bold=0 -letter=249, minX=72, minY=204, maxX=95, maxY=254, bold=0 -letter=250, minX=95, minY=204, maxX=118, maxY=254, bold=0 -letter=251, minX=118, minY=204, maxX=141, maxY=254, bold=0 -letter=252, minX=141, minY=204, maxX=164, maxY=254, bold=0 -letter=253, minX=164, minY=204, maxX=184, maxY=254, bold=0 -letter=254, minX=184, minY=204, maxX=208, maxY=254, bold=0 -letter=255, minX=208, minY=204, maxX=228, maxY=254, bold=0 -letter=0, minX=0, minY=0, maxX=0, maxY=50, bold=1 -letter=2, minX=0, minY=0, maxX=0, maxY=50, bold=1 -letter=9, minX=0, minY=0, maxX=0, maxY=50, bold=1 -letter=10, minX=0, minY=0, maxX=0, maxY=50, bold=1 -letter=13, minX=0, minY=0, maxX=0, maxY=50, bold=1 -letter=32, minX=228, minY=204, maxX=240, maxY=254, bold=1 -letter=33, minX=240, minY=204, maxX=253, maxY=254, bold=1 -letter=34, minX=253, minY=204, maxX=269, maxY=254, bold=1 -letter=35, minX=269, minY=204, maxX=297, maxY=254, bold=1 -letter=36, minX=297, minY=204, maxX=323, maxY=254, bold=1 -letter=37, minX=323, minY=204, maxX=356, maxY=254, bold=1 -letter=38, minX=356, minY=204, maxX=385, maxY=254, bold=1 -letter=39, minX=385, minY=204, maxX=394, maxY=254, bold=1 -letter=40, minX=394, minY=204, maxX=411, maxY=254, bold=1 -letter=41, minX=411, minY=204, maxX=428, maxY=254, bold=1 -letter=42, minX=428, minY=204, maxX=449, maxY=254, bold=1 -letter=43, minX=449, minY=204, maxX=474, maxY=254, bold=1 -letter=44, minX=474, minY=204, maxX=485, maxY=254, bold=1 -letter=45, minX=485, minY=204, maxX=501, maxY=254, bold=1 -letter=46, minX=501, minY=204, maxX=515, maxY=254, bold=1 -letter=47, minX=515, minY=204, maxX=534, maxY=254, bold=1 -letter=48, minX=534, minY=204, maxX=560, maxY=254, bold=1 -letter=49, minX=560, minY=204, maxX=586, maxY=254, bold=1 -letter=50, minX=586, minY=204, maxX=612, maxY=254, bold=1 -letter=51, minX=612, minY=204, maxX=638, maxY=254, bold=1 -letter=52, minX=638, minY=204, maxX=664, maxY=254, bold=1 -letter=53, minX=664, minY=204, maxX=690, maxY=254, bold=1 -letter=54, minX=690, minY=204, maxX=716, maxY=254, bold=1 -letter=55, minX=716, minY=204, maxX=742, maxY=254, bold=1 -letter=56, minX=742, minY=204, maxX=768, maxY=254, bold=1 -letter=57, minX=768, minY=204, maxX=794, maxY=254, bold=1 -letter=58, minX=794, minY=204, maxX=807, maxY=254, bold=1 -letter=59, minX=807, minY=204, maxX=819, maxY=254, bold=1 -letter=60, minX=819, minY=204, maxX=842, maxY=254, bold=1 -letter=61, minX=842, minY=204, maxX=868, maxY=254, bold=1 -letter=62, minX=868, minY=204, maxX=892, maxY=254, bold=1 -letter=63, minX=892, minY=204, maxX=914, maxY=254, bold=1 -letter=64, minX=914, minY=204, maxX=954, maxY=254, bold=1 -letter=65, minX=954, minY=204, maxX=984, maxY=254, bold=1 -letter=66, minX=984, minY=204, maxX=1013, maxY=254, bold=1 -letter=67, minX=0, minY=255, maxX=29, maxY=305, bold=1 -letter=68, minX=29, minY=255, maxX=58, maxY=305, bold=1 -letter=69, minX=58, minY=255, maxX=84, maxY=305, bold=1 -letter=70, minX=84, minY=255, maxX=109, maxY=305, bold=1 -letter=71, minX=109, minY=255, maxX=140, maxY=305, bold=1 -letter=72, minX=140, minY=255, maxX=172, maxY=305, bold=1 -letter=73, minX=172, minY=255, maxX=186, maxY=305, bold=1 -letter=74, minX=186, minY=255, maxX=211, maxY=305, bold=1 -letter=75, minX=211, minY=255, maxX=239, maxY=305, bold=1 -letter=76, minX=239, minY=255, maxX=264, maxY=305, bold=1 -letter=77, minX=264, minY=255, maxX=303, maxY=305, bold=1 -letter=78, minX=303, minY=255, maxX=335, maxY=305, bold=1 -letter=79, minX=335, minY=255, maxX=366, maxY=305, bold=1 -letter=80, minX=366, minY=255, maxX=395, maxY=305, bold=1 -letter=81, minX=395, minY=255, maxX=426, maxY=305, bold=1 -letter=82, minX=426, minY=255, maxX=454, maxY=305, bold=1 -letter=83, minX=454, minY=255, maxX=481, maxY=305, bold=1 -letter=84, minX=481, minY=255, maxX=508, maxY=305, bold=1 -letter=85, minX=508, minY=255, maxX=537, maxY=305, bold=1 -letter=86, minX=537, minY=255, maxX=566, maxY=305, bold=1 -letter=87, minX=566, minY=255, maxX=605, maxY=305, bold=1 -letter=88, minX=605, minY=255, maxX=634, maxY=305, bold=1 -letter=89, minX=634, minY=255, maxX=662, maxY=305, bold=1 -letter=90, minX=662, minY=255, maxX=689, maxY=305, bold=1 -letter=91, minX=689, minY=255, maxX=703, maxY=305, bold=1 -letter=92, minX=703, minY=255, maxX=723, maxY=305, bold=1 -letter=93, minX=723, minY=255, maxX=737, maxY=305, bold=1 -letter=94, minX=737, minY=255, maxX=757, maxY=305, bold=1 -letter=95, minX=757, minY=255, maxX=778, maxY=305, bold=1 -letter=96, minX=778, minY=255, maxX=794, maxY=305, bold=1 -letter=97, minX=794, minY=255, maxX=819, maxY=305, bold=1 -letter=98, minX=819, minY=255, maxX=845, maxY=305, bold=1 -letter=99, minX=845, minY=255, maxX=869, maxY=305, bold=1 -letter=100, minX=869, minY=255, maxX=895, maxY=305, bold=1 -letter=101, minX=895, minY=255, maxX=920, maxY=305, bold=1 -letter=102, minX=920, minY=255, maxX=937, maxY=305, bold=1 -letter=103, minX=937, minY=255, maxX=963, maxY=305, bold=1 -letter=104, minX=963, minY=255, maxX=988, maxY=305, bold=1 -letter=105, minX=988, minY=255, maxX=1001, maxY=305, bold=1 -letter=32, minX=1001, minY=255, maxX=1013, maxY=305, bold=1 -letter=106, minX=0, minY=306, maxX=13, maxY=356, bold=1 -letter=107, minX=13, minY=306, maxX=37, maxY=356, bold=1 -letter=108, minX=37, minY=306, maxX=50, maxY=356, bold=1 -letter=109, minX=50, minY=306, maxX=89, maxY=356, bold=1 -letter=110, minX=89, minY=306, maxX=114, maxY=356, bold=1 -letter=111, minX=114, minY=306, maxX=140, maxY=356, bold=1 -letter=112, minX=140, minY=306, maxX=166, maxY=356, bold=1 -letter=113, minX=166, minY=306, maxX=192, maxY=356, bold=1 -letter=114, minX=192, minY=306, maxX=209, maxY=356, bold=1 -letter=115, minX=209, minY=306, maxX=233, maxY=356, bold=1 -letter=116, minX=233, minY=306, maxX=249, maxY=356, bold=1 -letter=117, minX=249, minY=306, maxX=274, maxY=356, bold=1 -letter=118, minX=274, minY=306, maxX=297, maxY=356, bold=1 -letter=119, minX=297, minY=306, maxX=330, maxY=356, bold=1 -letter=120, minX=330, minY=306, maxX=353, maxY=356, bold=1 -letter=121, minX=353, minY=306, maxX=375, maxY=356, bold=1 -letter=122, minX=375, minY=306, maxX=398, maxY=356, bold=1 -letter=123, minX=398, minY=306, maxX=414, maxY=356, bold=1 -letter=124, minX=414, minY=306, maxX=427, maxY=356, bold=1 -letter=125, minX=427, minY=306, maxX=443, maxY=356, bold=1 -letter=126, minX=443, minY=306, maxX=473, maxY=356, bold=1 -letter=160, minX=473, minY=306, maxX=485, maxY=356, bold=1 -letter=161, minX=485, minY=306, maxX=498, maxY=356, bold=1 -letter=162, minX=498, minY=306, maxX=524, maxY=356, bold=1 -letter=163, minX=524, minY=306, maxX=551, maxY=356, bold=1 -letter=164, minX=551, minY=306, maxX=582, maxY=356, bold=1 -letter=165, minX=582, minY=306, maxX=606, maxY=356, bold=1 -letter=166, minX=606, minY=306, maxX=618, maxY=356, bold=1 -letter=167, minX=618, minY=306, maxX=646, maxY=356, bold=1 -letter=168, minX=646, minY=306, maxX=666, maxY=356, bold=1 -letter=169, minX=666, minY=306, maxX=701, maxY=356, bold=1 -letter=170, minX=701, minY=306, maxX=722, maxY=356, bold=1 -letter=171, minX=722, minY=306, maxX=744, maxY=356, bold=1 -letter=172, minX=744, minY=306, maxX=769, maxY=356, bold=1 -letter=173, minX=769, minY=306, maxX=785, maxY=356, bold=1 -letter=174, minX=785, minY=306, maxX=820, maxY=356, bold=1 -letter=175, minX=820, minY=306, maxX=842, maxY=356, bold=1 -letter=176, minX=842, minY=306, maxX=860, maxY=356, bold=1 -letter=177, minX=860, minY=306, maxX=885, maxY=356, bold=1 -letter=178, minX=885, minY=306, maxX=903, maxY=356, bold=1 -letter=179, minX=903, minY=306, maxX=921, maxY=356, bold=1 -letter=180, minX=921, minY=306, maxX=937, maxY=356, bold=1 -letter=181, minX=937, minY=306, maxX=964, maxY=356, bold=1 -letter=182, minX=964, minY=306, maxX=987, maxY=356, bold=1 -letter=183, minX=987, minY=306, maxX=1001, maxY=356, bold=1 -letter=184, minX=1001, minY=306, maxX=1014, maxY=356, bold=1 -letter=185, minX=0, minY=357, maxX=18, maxY=407, bold=1 -letter=186, minX=18, minY=357, maxX=39, maxY=407, bold=1 -letter=187, minX=39, minY=357, maxX=61, maxY=407, bold=1 -letter=188, minX=61, minY=357, maxX=94, maxY=407, bold=1 -letter=189, minX=94, minY=357, maxX=128, maxY=407, bold=1 -letter=190, minX=128, minY=357, maxX=163, maxY=407, bold=1 -letter=191, minX=163, minY=357, maxX=185, maxY=407, bold=1 -letter=192, minX=185, minY=357, maxX=215, maxY=407, bold=1 -letter=193, minX=215, minY=357, maxX=245, maxY=407, bold=1 -letter=194, minX=245, minY=357, maxX=275, maxY=407, bold=1 -letter=195, minX=275, minY=357, maxX=305, maxY=407, bold=1 -letter=196, minX=305, minY=357, maxX=335, maxY=407, bold=1 -letter=197, minX=335, minY=357, maxX=365, maxY=407, bold=1 -letter=198, minX=365, minY=357, maxX=406, maxY=407, bold=1 -letter=199, minX=406, minY=357, maxX=435, maxY=407, bold=1 -letter=200, minX=435, minY=357, maxX=461, maxY=407, bold=1 -letter=201, minX=461, minY=357, maxX=487, maxY=407, bold=1 -letter=202, minX=487, minY=357, maxX=513, maxY=407, bold=1 -letter=203, minX=513, minY=357, maxX=539, maxY=407, bold=1 -letter=204, minX=539, minY=357, maxX=553, maxY=407, bold=1 -letter=205, minX=553, minY=357, maxX=567, maxY=407, bold=1 -letter=206, minX=567, minY=357, maxX=581, maxY=407, bold=1 -letter=207, minX=581, minY=357, maxX=595, maxY=407, bold=1 -letter=208, minX=595, minY=357, maxX=625, maxY=407, bold=1 -letter=209, minX=625, minY=357, maxX=657, maxY=407, bold=1 -letter=210, minX=657, minY=357, maxX=688, maxY=407, bold=1 -letter=211, minX=688, minY=357, maxX=719, maxY=407, bold=1 -letter=212, minX=719, minY=357, maxX=750, maxY=407, bold=1 -letter=213, minX=750, minY=357, maxX=781, maxY=407, bold=1 -letter=214, minX=781, minY=357, maxX=812, maxY=407, bold=1 -letter=215, minX=812, minY=357, maxX=836, maxY=407, bold=1 -letter=216, minX=836, minY=357, maxX=867, maxY=407, bold=1 -letter=217, minX=867, minY=357, maxX=896, maxY=407, bold=1 -letter=218, minX=896, minY=357, maxX=925, maxY=407, bold=1 -letter=219, minX=925, minY=357, maxX=954, maxY=407, bold=1 -letter=220, minX=954, minY=357, maxX=983, maxY=407, bold=1 -letter=221, minX=983, minY=357, maxX=1011, maxY=407, bold=1 -letter=222, minX=0, minY=408, maxX=27, maxY=458, bold=1 -letter=223, minX=27, minY=408, maxX=55, maxY=458, bold=1 -letter=224, minX=55, minY=408, maxX=80, maxY=458, bold=1 -letter=225, minX=80, minY=408, maxX=105, maxY=458, bold=1 -letter=226, minX=105, minY=408, maxX=130, maxY=458, bold=1 -letter=227, minX=130, minY=408, maxX=155, maxY=458, bold=1 -letter=228, minX=155, minY=408, maxX=180, maxY=458, bold=1 -letter=229, minX=180, minY=408, maxX=205, maxY=458, bold=1 -letter=230, minX=205, minY=408, maxX=242, maxY=458, bold=1 -letter=231, minX=242, minY=408, maxX=266, maxY=458, bold=1 -letter=232, minX=266, minY=408, maxX=291, maxY=458, bold=1 -letter=233, minX=291, minY=408, maxX=316, maxY=458, bold=1 -letter=234, minX=316, minY=408, maxX=341, maxY=458, bold=1 -letter=235, minX=341, minY=408, maxX=366, maxY=458, bold=1 -letter=236, minX=366, minY=408, maxX=379, maxY=458, bold=1 -letter=237, minX=379, minY=408, maxX=392, maxY=458, bold=1 -letter=238, minX=392, minY=408, maxX=405, maxY=458, bold=1 -letter=239, minX=405, minY=408, maxX=418, maxY=458, bold=1 -letter=240, minX=418, minY=408, maxX=444, maxY=458, bold=1 -letter=241, minX=444, minY=408, maxX=469, maxY=458, bold=1 -letter=242, minX=469, minY=408, maxX=495, maxY=458, bold=1 -letter=243, minX=495, minY=408, maxX=521, maxY=458, bold=1 -letter=244, minX=521, minY=408, maxX=547, maxY=458, bold=1 -letter=245, minX=547, minY=408, maxX=573, maxY=458, bold=1 -letter=246, minX=573, minY=408, maxX=599, maxY=458, bold=1 -letter=247, minX=599, minY=408, maxX=625, maxY=458, bold=1 -letter=248, minX=625, minY=408, maxX=651, maxY=458, bold=1 -letter=249, minX=651, minY=408, maxX=676, maxY=458, bold=1 -letter=250, minX=676, minY=408, maxX=701, maxY=458, bold=1 -letter=251, minX=701, minY=408, maxX=726, maxY=458, bold=1 -letter=252, minX=726, minY=408, maxX=751, maxY=458, bold=1 -letter=253, minX=751, minY=408, maxX=773, maxY=458, bold=1 -letter=254, minX=773, minY=408, maxX=799, maxY=458, bold=1 -letter=255, minX=799, minY=408, maxX=821, maxY=458, bold=1 diff --git a/src/main/resources/assets/base/font/roboto.json b/src/main/resources/assets/base/font/roboto.json new file mode 100644 index 0000000..1b5913a --- /dev/null +++ b/src/main/resources/assets/base/font/roboto.json @@ -0,0 +1,405 @@ +{ + "type": "bitmap", + "file": "base:font/roboto_texture.png", + "info": { + "width": 2048, + "height": 1024, + "base": 80, + "charHeight": 100, + "tabs": 4 + }, + "chars": [ + {"char": 198, "minX": 0, "minY": 0, "maxX": 79, "maxY": 100, "bold": true}, + {"char": 64, "minX": 79, "minY": 0, "maxX": 154, "maxY": 100, "bold": true}, + {"char": 109, "minX": 154, "minY": 0, "maxX": 227, "maxY": 100, "bold": true}, + {"char": 87, "minX": 227, "minY": 0, "maxX": 300, "maxY": 100, "bold": true}, + {"char": 77, "minX": 300, "minY": 0, "maxX": 373, "maxY": 100, "bold": true}, + {"char": 198, "minX": 373, "minY": 0, "maxX": 448, "maxY": 96, "bold": false}, + {"char": 64, "minX": 448, "minY": 0, "maxX": 520, "maxY": 96, "bold": false}, + {"char": 109, "minX": 520, "minY": 0, "maxX": 590, "maxY": 96, "bold": false}, + {"char": 87, "minX": 590, "minY": 0, "maxX": 660, "maxY": 96, "bold": false}, + {"char": 77, "minX": 660, "minY": 0, "maxX": 730, "maxY": 96, "bold": false}, + {"char": 230, "minX": 730, "minY": 0, "maxX": 798, "maxY": 96, "bold": false}, + {"char": 190, "minX": 798, "minY": 0, "maxX": 861, "maxY": 96, "bold": false}, + {"char": 174, "minX": 861, "minY": 0, "maxX": 924, "maxY": 96, "bold": false}, + {"char": 169, "minX": 924, "minY": 0, "maxX": 987, "maxY": 96, "bold": false}, + {"char": 189, "minX": 987, "minY": 0, "maxX": 1049, "maxY": 96, "bold": false}, + {"char": 119, "minX": 1049, "minY": 0, "maxX": 1108, "maxY": 96, "bold": false}, + {"char": 37, "minX": 1108, "minY": 0, "maxX": 1167, "maxY": 96, "bold": false}, + {"char": 188, "minX": 1167, "minY": 0, "maxX": 1225, "maxY": 96, "bold": false}, + {"char": 209, "minX": 1225, "minY": 0, "maxX": 1282, "maxY": 96, "bold": false}, + {"char": 72, "minX": 1282, "minY": 0, "maxX": 1339, "maxY": 96, "bold": false}, + {"char": 78, "minX": 1339, "minY": 0, "maxX": 1396, "maxY": 96, "bold": false}, + {"char": 164, "minX": 1396, "minY": 0, "maxX": 1452, "maxY": 96, "bold": false}, + {"char": 210, "minX": 1452, "minY": 0, "maxX": 1507, "maxY": 96, "bold": false}, + {"char": 211, "minX": 1507, "minY": 0, "maxX": 1562, "maxY": 96, "bold": false}, + {"char": 212, "minX": 1562, "minY": 0, "maxX": 1617, "maxY": 96, "bold": false}, + {"char": 213, "minX": 1617, "minY": 0, "maxX": 1672, "maxY": 96, "bold": false}, + {"char": 214, "minX": 1672, "minY": 0, "maxX": 1727, "maxY": 96, "bold": false}, + {"char": 216, "minX": 1727, "minY": 0, "maxX": 1782, "maxY": 96, "bold": false}, + {"char": 79, "minX": 1782, "minY": 0, "maxX": 1837, "maxY": 96, "bold": false}, + {"char": 81, "minX": 1837, "minY": 0, "maxX": 1892, "maxY": 96, "bold": false}, + {"char": 71, "minX": 1892, "minY": 0, "maxX": 1946, "maxY": 96, "bold": false}, + {"char": 196, "minX": 1946, "minY": 0, "maxX": 1999, "maxY": 96, "bold": false}, + {"char": 221, "minX": 1999, "minY": 0, "maxX": 2048, "maxY": 96, "bold": false}, + {"char": 230, "minX": 0, "minY": 100, "maxX": 71, "maxY": 200, "bold": true}, + {"char": 190, "minX": 71, "minY": 100, "maxX": 137, "maxY": 200, "bold": true}, + {"char": 174, "minX": 137, "minY": 100, "maxX": 203, "maxY": 200, "bold": true}, + {"char": 169, "minX": 203, "minY": 100, "maxX": 269, "maxY": 200, "bold": true}, + {"char": 189, "minX": 269, "minY": 100, "maxX": 334, "maxY": 200, "bold": true}, + {"char": 119, "minX": 334, "minY": 100, "maxX": 396, "maxY": 200, "bold": true}, + {"char": 37, "minX": 396, "minY": 100, "maxX": 458, "maxY": 200, "bold": true}, + {"char": 188, "minX": 458, "minY": 100, "maxX": 519, "maxY": 200, "bold": true}, + {"char": 209, "minX": 519, "minY": 100, "maxX": 579, "maxY": 200, "bold": true}, + {"char": 72, "minX": 579, "minY": 100, "maxX": 639, "maxY": 200, "bold": true}, + {"char": 78, "minX": 639, "minY": 100, "maxX": 699, "maxY": 200, "bold": true}, + {"char": 164, "minX": 699, "minY": 100, "maxX": 758, "maxY": 200, "bold": true}, + {"char": 210, "minX": 758, "minY": 100, "maxX": 816, "maxY": 200, "bold": true}, + {"char": 211, "minX": 816, "minY": 100, "maxX": 874, "maxY": 200, "bold": true}, + {"char": 212, "minX": 874, "minY": 100, "maxX": 932, "maxY": 200, "bold": true}, + {"char": 213, "minX": 932, "minY": 100, "maxX": 990, "maxY": 200, "bold": true}, + {"char": 214, "minX": 990, "minY": 100, "maxX": 1048, "maxY": 200, "bold": true}, + {"char": 216, "minX": 1048, "minY": 100, "maxX": 1106, "maxY": 200, "bold": true}, + {"char": 196, "minX": 1106, "minY": 100, "maxX": 1164, "maxY": 200, "bold": true}, + {"char": 197, "minX": 1164, "minY": 100, "maxX": 1222, "maxY": 200, "bold": true}, + {"char": 192, "minX": 1222, "minY": 100, "maxX": 1280, "maxY": 200, "bold": true}, + {"char": 193, "minX": 1280, "minY": 100, "maxX": 1338, "maxY": 200, "bold": true}, + {"char": 194, "minX": 1338, "minY": 100, "maxX": 1396, "maxY": 200, "bold": true}, + {"char": 195, "minX": 1396, "minY": 100, "maxX": 1454, "maxY": 200, "bold": true}, + {"char": 79, "minX": 1454, "minY": 100, "maxX": 1512, "maxY": 200, "bold": true}, + {"char": 81, "minX": 1512, "minY": 100, "maxX": 1570, "maxY": 200, "bold": true}, + {"char": 65, "minX": 1570, "minY": 100, "maxX": 1628, "maxY": 200, "bold": true}, + {"char": 71, "minX": 1628, "minY": 100, "maxX": 1685, "maxY": 200, "bold": true}, + {"char": 126, "minX": 1685, "minY": 100, "maxX": 1741, "maxY": 200, "bold": true}, + {"char": 220, "minX": 1741, "minY": 100, "maxX": 1796, "maxY": 200, "bold": true}, + {"char": 217, "minX": 1796, "minY": 100, "maxX": 1851, "maxY": 200, "bold": true}, + {"char": 218, "minX": 1851, "minY": 100, "maxX": 1906, "maxY": 200, "bold": true}, + {"char": 219, "minX": 1906, "minY": 100, "maxX": 1961, "maxY": 200, "bold": true}, + {"char": 199, "minX": 1961, "minY": 100, "maxX": 2016, "maxY": 200, "bold": true}, + {"char": 239, "minX": 2016, "minY": 100, "maxX": 2048, "maxY": 200, "bold": true}, + {"char": 85, "minX": 0, "minY": 200, "maxX": 55, "maxY": 300, "bold": true}, + {"char": 86, "minX": 55, "minY": 200, "maxX": 110, "maxY": 300, "bold": true}, + {"char": 67, "minX": 110, "minY": 200, "maxX": 165, "maxY": 300, "bold": true}, + {"char": 68, "minX": 165, "minY": 200, "maxX": 220, "maxY": 300, "bold": true}, + {"char": 221, "minX": 220, "minY": 200, "maxX": 274, "maxY": 300, "bold": true}, + {"char": 208, "minX": 274, "minY": 200, "maxX": 328, "maxY": 300, "bold": true}, + {"char": 80, "minX": 328, "minY": 200, "maxX": 382, "maxY": 300, "bold": true}, + {"char": 88, "minX": 382, "minY": 200, "maxX": 436, "maxY": 300, "bold": true}, + {"char": 89, "minX": 436, "minY": 200, "maxX": 490, "maxY": 300, "bold": true}, + {"char": 38, "minX": 490, "minY": 200, "maxX": 544, "maxY": 300, "bold": true}, + {"char": 167, "minX": 544, "minY": 200, "maxX": 597, "maxY": 300, "bold": true}, + {"char": 82, "minX": 597, "minY": 200, "maxX": 650, "maxY": 300, "bold": true}, + {"char": 75, "minX": 650, "minY": 200, "maxX": 703, "maxY": 300, "bold": true}, + {"char": 66, "minX": 703, "minY": 200, "maxX": 756, "maxY": 300, "bold": true}, + {"char": 223, "minX": 756, "minY": 200, "maxX": 808, "maxY": 300, "bold": true}, + {"char": 84, "minX": 808, "minY": 200, "maxX": 860, "maxY": 300, "bold": true}, + {"char": 35, "minX": 860, "minY": 200, "maxX": 912, "maxY": 300, "bold": true}, + {"char": 222, "minX": 912, "minY": 200, "maxX": 963, "maxY": 300, "bold": true}, + {"char": 83, "minX": 963, "minY": 200, "maxX": 1014, "maxY": 300, "bold": true}, + {"char": 90, "minX": 1014, "minY": 200, "maxX": 1065, "maxY": 300, "bold": true}, + {"char": 197, "minX": 1065, "minY": 200, "maxX": 1118, "maxY": 296, "bold": false}, + {"char": 192, "minX": 1118, "minY": 200, "maxX": 1171, "maxY": 296, "bold": false}, + {"char": 193, "minX": 1171, "minY": 200, "maxX": 1224, "maxY": 296, "bold": false}, + {"char": 194, "minX": 1224, "minY": 200, "maxX": 1277, "maxY": 296, "bold": false}, + {"char": 195, "minX": 1277, "minY": 200, "maxX": 1330, "maxY": 296, "bold": false}, + {"char": 126, "minX": 1330, "minY": 200, "maxX": 1383, "maxY": 296, "bold": false}, + {"char": 65, "minX": 1383, "minY": 200, "maxX": 1436, "maxY": 296, "bold": false}, + {"char": 220, "minX": 1436, "minY": 200, "maxX": 1488, "maxY": 296, "bold": false}, + {"char": 217, "minX": 1488, "minY": 200, "maxX": 1540, "maxY": 296, "bold": false}, + {"char": 218, "minX": 1540, "minY": 200, "maxX": 1592, "maxY": 296, "bold": false}, + {"char": 219, "minX": 1592, "minY": 200, "maxX": 1644, "maxY": 296, "bold": false}, + {"char": 199, "minX": 1644, "minY": 200, "maxX": 1696, "maxY": 296, "bold": false}, + {"char": 85, "minX": 1696, "minY": 200, "maxX": 1748, "maxY": 296, "bold": false}, + {"char": 86, "minX": 1748, "minY": 200, "maxX": 1800, "maxY": 296, "bold": false}, + {"char": 67, "minX": 1800, "minY": 200, "maxX": 1852, "maxY": 296, "bold": false}, + {"char": 68, "minX": 1852, "minY": 200, "maxX": 1904, "maxY": 296, "bold": false}, + {"char": 208, "minX": 1904, "minY": 200, "maxX": 1955, "maxY": 296, "bold": false}, + {"char": 80, "minX": 1955, "minY": 200, "maxX": 2006, "maxY": 296, "bold": false}, + {"char": 231, "minX": 2006, "minY": 200, "maxX": 2048, "maxY": 296, "bold": false}, + {"char": 240, "minX": 0, "minY": 300, "maxX": 50, "maxY": 400, "bold": true}, + {"char": 181, "minX": 50, "minY": 300, "maxX": 100, "maxY": 400, "bold": true}, + {"char": 163, "minX": 100, "minY": 300, "maxX": 150, "maxY": 400, "bold": true}, + {"char": 244, "minX": 150, "minY": 300, "maxX": 199, "maxY": 400, "bold": true}, + {"char": 245, "minX": 199, "minY": 300, "maxX": 248, "maxY": 400, "bold": true}, + {"char": 246, "minX": 248, "minY": 300, "maxX": 297, "maxY": 400, "bold": true}, + {"char": 247, "minX": 297, "minY": 300, "maxX": 346, "maxY": 400, "bold": true}, + {"char": 254, "minX": 346, "minY": 300, "maxX": 395, "maxY": 400, "bold": true}, + {"char": 242, "minX": 395, "minY": 300, "maxX": 444, "maxY": 400, "bold": true}, + {"char": 243, "minX": 444, "minY": 300, "maxX": 493, "maxY": 400, "bold": true}, + {"char": 111, "minX": 493, "minY": 300, "maxX": 542, "maxY": 400, "bold": true}, + {"char": 88, "minX": 542, "minY": 300, "maxX": 593, "maxY": 396, "bold": false}, + {"char": 38, "minX": 593, "minY": 300, "maxX": 644, "maxY": 396, "bold": false}, + {"char": 167, "minX": 644, "minY": 300, "maxX": 694, "maxY": 396, "bold": false}, + {"char": 82, "minX": 694, "minY": 300, "maxX": 744, "maxY": 396, "bold": false}, + {"char": 75, "minX": 744, "minY": 300, "maxX": 794, "maxY": 396, "bold": false}, + {"char": 66, "minX": 794, "minY": 300, "maxX": 844, "maxY": 396, "bold": false}, + {"char": 223, "minX": 844, "minY": 300, "maxX": 893, "maxY": 396, "bold": false}, + {"char": 84, "minX": 893, "minY": 300, "maxX": 942, "maxY": 396, "bold": false}, + {"char": 89, "minX": 942, "minY": 300, "maxX": 991, "maxY": 396, "bold": false}, + {"char": 35, "minX": 991, "minY": 300, "maxX": 1040, "maxY": 396, "bold": false}, + {"char": 222, "minX": 1040, "minY": 300, "maxX": 1088, "maxY": 396, "bold": false}, + {"char": 83, "minX": 1088, "minY": 300, "maxX": 1136, "maxY": 396, "bold": false}, + {"char": 90, "minX": 1136, "minY": 300, "maxX": 1184, "maxY": 396, "bold": false}, + {"char": 240, "minX": 1184, "minY": 300, "maxX": 1231, "maxY": 396, "bold": false}, + {"char": 181, "minX": 1231, "minY": 300, "maxX": 1278, "maxY": 396, "bold": false}, + {"char": 163, "minX": 1278, "minY": 300, "maxX": 1325, "maxY": 396, "bold": false}, + {"char": 244, "minX": 1325, "minY": 300, "maxX": 1371, "maxY": 396, "bold": false}, + {"char": 245, "minX": 1371, "minY": 300, "maxX": 1417, "maxY": 396, "bold": false}, + {"char": 246, "minX": 1417, "minY": 300, "maxX": 1463, "maxY": 396, "bold": false}, + {"char": 247, "minX": 1463, "minY": 300, "maxX": 1509, "maxY": 396, "bold": false}, + {"char": 254, "minX": 1509, "minY": 300, "maxX": 1555, "maxY": 396, "bold": false}, + {"char": 242, "minX": 1555, "minY": 300, "maxX": 1601, "maxY": 396, "bold": false}, + {"char": 243, "minX": 1601, "minY": 300, "maxX": 1647, "maxY": 396, "bold": false}, + {"char": 111, "minX": 1647, "minY": 300, "maxX": 1693, "maxY": 396, "bold": false}, + {"char": 248, "minX": 1693, "minY": 300, "maxX": 1738, "maxY": 396, "bold": false}, + {"char": 241, "minX": 1738, "minY": 300, "maxX": 1783, "maxY": 396, "bold": false}, + {"char": 200, "minX": 1783, "minY": 300, "maxX": 1828, "maxY": 396, "bold": false}, + {"char": 201, "minX": 1828, "minY": 300, "maxX": 1873, "maxY": 396, "bold": false}, + {"char": 202, "minX": 1873, "minY": 300, "maxX": 1918, "maxY": 396, "bold": false}, + {"char": 203, "minX": 1918, "minY": 300, "maxX": 1963, "maxY": 396, "bold": false}, + {"char": 162, "minX": 1963, "minY": 300, "maxX": 2008, "maxY": 396, "bold": false}, + {"char": 118, "minX": 2008, "minY": 300, "maxX": 2048, "maxY": 396, "bold": false}, + {"char": 248, "minX": 0, "minY": 400, "maxX": 48, "maxY": 500, "bold": true}, + {"char": 241, "minX": 48, "minY": 400, "maxX": 96, "maxY": 500, "bold": true}, + {"char": 200, "minX": 96, "minY": 400, "maxX": 144, "maxY": 500, "bold": true}, + {"char": 201, "minX": 144, "minY": 400, "maxX": 192, "maxY": 500, "bold": true}, + {"char": 202, "minX": 192, "minY": 400, "maxX": 240, "maxY": 500, "bold": true}, + {"char": 203, "minX": 240, "minY": 400, "maxX": 288, "maxY": 500, "bold": true}, + {"char": 162, "minX": 288, "minY": 400, "maxX": 336, "maxY": 500, "bold": true}, + {"char": 165, "minX": 336, "minY": 400, "maxX": 384, "maxY": 500, "bold": true}, + {"char": 103, "minX": 384, "minY": 400, "maxX": 432, "maxY": 500, "bold": true}, + {"char": 110, "minX": 432, "minY": 400, "maxX": 480, "maxY": 500, "bold": true}, + {"char": 112, "minX": 480, "minY": 400, "maxX": 528, "maxY": 500, "bold": true}, + {"char": 113, "minX": 528, "minY": 400, "maxX": 576, "maxY": 500, "bold": true}, + {"char": 98, "minX": 576, "minY": 400, "maxX": 624, "maxY": 500, "bold": true}, + {"char": 100, "minX": 624, "minY": 400, "maxX": 672, "maxY": 500, "bold": true}, + {"char": 69, "minX": 672, "minY": 400, "maxX": 720, "maxY": 500, "bold": true}, + {"char": 55, "minX": 720, "minY": 400, "maxX": 768, "maxY": 500, "bold": true}, + {"char": 56, "minX": 768, "minY": 400, "maxX": 816, "maxY": 500, "bold": true}, + {"char": 57, "minX": 816, "minY": 400, "maxX": 864, "maxY": 500, "bold": true}, + {"char": 61, "minX": 864, "minY": 400, "maxX": 912, "maxY": 500, "bold": true}, + {"char": 43, "minX": 912, "minY": 400, "maxX": 960, "maxY": 500, "bold": true}, + {"char": 48, "minX": 960, "minY": 400, "maxX": 1008, "maxY": 500, "bold": true}, + {"char": 49, "minX": 1008, "minY": 400, "maxX": 1056, "maxY": 500, "bold": true}, + {"char": 50, "minX": 1056, "minY": 400, "maxX": 1104, "maxY": 500, "bold": true}, + {"char": 51, "minX": 1104, "minY": 400, "maxX": 1152, "maxY": 500, "bold": true}, + {"char": 52, "minX": 1152, "minY": 400, "maxX": 1200, "maxY": 500, "bold": true}, + {"char": 53, "minX": 1200, "minY": 400, "maxX": 1248, "maxY": 500, "bold": true}, + {"char": 54, "minX": 1248, "minY": 400, "maxX": 1296, "maxY": 500, "bold": true}, + {"char": 36, "minX": 1296, "minY": 400, "maxX": 1344, "maxY": 500, "bold": true}, + {"char": 249, "minX": 1344, "minY": 400, "maxX": 1391, "maxY": 500, "bold": true}, + {"char": 250, "minX": 1391, "minY": 400, "maxX": 1438, "maxY": 500, "bold": true}, + {"char": 251, "minX": 1438, "minY": 400, "maxX": 1485, "maxY": 500, "bold": true}, + {"char": 252, "minX": 1485, "minY": 400, "maxX": 1532, "maxY": 500, "bold": true}, + {"char": 172, "minX": 1532, "minY": 400, "maxX": 1579, "maxY": 500, "bold": true}, + {"char": 117, "minX": 1579, "minY": 400, "maxX": 1626, "maxY": 500, "bold": true}, + {"char": 104, "minX": 1626, "minY": 400, "maxX": 1673, "maxY": 500, "bold": true}, + {"char": 70, "minX": 1673, "minY": 400, "maxX": 1720, "maxY": 500, "bold": true}, + {"char": 74, "minX": 1720, "minY": 400, "maxX": 1767, "maxY": 500, "bold": true}, + {"char": 232, "minX": 1767, "minY": 400, "maxX": 1813, "maxY": 500, "bold": true}, + {"char": 233, "minX": 1813, "minY": 400, "maxX": 1859, "maxY": 500, "bold": true}, + {"char": 234, "minX": 1859, "minY": 400, "maxX": 1905, "maxY": 500, "bold": true}, + {"char": 235, "minX": 1905, "minY": 400, "maxX": 1951, "maxY": 500, "bold": true}, + {"char": 224, "minX": 1951, "minY": 400, "maxX": 1997, "maxY": 500, "bold": true}, + {"char": 225, "minX": 1997, "minY": 400, "maxX": 2043, "maxY": 500, "bold": true}, + {"char": 226, "minX": 0, "minY": 500, "maxX": 46, "maxY": 600, "bold": true}, + {"char": 227, "minX": 46, "minY": 500, "maxX": 92, "maxY": 600, "bold": true}, + {"char": 228, "minX": 92, "minY": 500, "maxX": 138, "maxY": 600, "bold": true}, + {"char": 229, "minX": 138, "minY": 500, "maxX": 184, "maxY": 600, "bold": true}, + {"char": 215, "minX": 184, "minY": 500, "maxX": 230, "maxY": 600, "bold": true}, + {"char": 177, "minX": 230, "minY": 500, "maxX": 276, "maxY": 600, "bold": true}, + {"char": 97, "minX": 276, "minY": 500, "maxX": 322, "maxY": 600, "bold": true}, + {"char": 101, "minX": 322, "minY": 500, "maxX": 368, "maxY": 600, "bold": true}, + {"char": 76, "minX": 368, "minY": 500, "maxX": 414, "maxY": 600, "bold": true}, + {"char": 231, "minX": 414, "minY": 500, "maxX": 459, "maxY": 600, "bold": true}, + {"char": 120, "minX": 459, "minY": 500, "maxX": 504, "maxY": 600, "bold": true}, + {"char": 107, "minX": 504, "minY": 500, "maxX": 549, "maxY": 600, "bold": true}, + {"char": 99, "minX": 549, "minY": 500, "maxX": 594, "maxY": 600, "bold": true}, + {"char": 62, "minX": 594, "minY": 500, "maxX": 639, "maxY": 600, "bold": true}, + {"char": 253, "minX": 639, "minY": 500, "maxX": 683, "maxY": 600, "bold": true}, + {"char": 255, "minX": 683, "minY": 500, "maxX": 727, "maxY": 600, "bold": true}, + {"char": 115, "minX": 727, "minY": 500, "maxX": 771, "maxY": 600, "bold": true}, + {"char": 121, "minX": 771, "minY": 500, "maxX": 815, "maxY": 600, "bold": true}, + {"char": 60, "minX": 815, "minY": 500, "maxX": 859, "maxY": 600, "bold": true}, + {"char": 103, "minX": 859, "minY": 500, "maxX": 904, "maxY": 596, "bold": false}, + {"char": 110, "minX": 904, "minY": 500, "maxX": 949, "maxY": 596, "bold": false}, + {"char": 112, "minX": 949, "minY": 500, "maxX": 994, "maxY": 596, "bold": false}, + {"char": 113, "minX": 994, "minY": 500, "maxX": 1039, "maxY": 596, "bold": false}, + {"char": 98, "minX": 1039, "minY": 500, "maxX": 1084, "maxY": 596, "bold": false}, + {"char": 100, "minX": 1084, "minY": 500, "maxX": 1129, "maxY": 596, "bold": false}, + {"char": 69, "minX": 1129, "minY": 500, "maxX": 1174, "maxY": 596, "bold": false}, + {"char": 55, "minX": 1174, "minY": 500, "maxX": 1219, "maxY": 596, "bold": false}, + {"char": 56, "minX": 1219, "minY": 500, "maxX": 1264, "maxY": 596, "bold": false}, + {"char": 57, "minX": 1264, "minY": 500, "maxX": 1309, "maxY": 596, "bold": false}, + {"char": 61, "minX": 1309, "minY": 500, "maxX": 1354, "maxY": 596, "bold": false}, + {"char": 43, "minX": 1354, "minY": 500, "maxX": 1399, "maxY": 596, "bold": false}, + {"char": 48, "minX": 1399, "minY": 500, "maxX": 1444, "maxY": 596, "bold": false}, + {"char": 49, "minX": 1444, "minY": 500, "maxX": 1489, "maxY": 596, "bold": false}, + {"char": 50, "minX": 1489, "minY": 500, "maxX": 1534, "maxY": 596, "bold": false}, + {"char": 51, "minX": 1534, "minY": 500, "maxX": 1579, "maxY": 596, "bold": false}, + {"char": 52, "minX": 1579, "minY": 500, "maxX": 1624, "maxY": 596, "bold": false}, + {"char": 53, "minX": 1624, "minY": 500, "maxX": 1669, "maxY": 596, "bold": false}, + {"char": 54, "minX": 1669, "minY": 500, "maxX": 1714, "maxY": 596, "bold": false}, + {"char": 36, "minX": 1714, "minY": 500, "maxX": 1759, "maxY": 596, "bold": false}, + {"char": 249, "minX": 1759, "minY": 500, "maxX": 1803, "maxY": 596, "bold": false}, + {"char": 250, "minX": 1803, "minY": 500, "maxX": 1847, "maxY": 596, "bold": false}, + {"char": 251, "minX": 1847, "minY": 500, "maxX": 1891, "maxY": 596, "bold": false}, + {"char": 252, "minX": 1891, "minY": 500, "maxX": 1935, "maxY": 596, "bold": false}, + {"char": 172, "minX": 1935, "minY": 500, "maxX": 1979, "maxY": 596, "bold": false}, + {"char": 117, "minX": 1979, "minY": 500, "maxX": 2023, "maxY": 596, "bold": false}, + {"char": 205, "minX": 2023, "minY": 500, "maxX": 2046, "maxY": 596, "bold": false}, + {"char": 118, "minX": 0, "minY": 600, "maxX": 43, "maxY": 700, "bold": true}, + {"char": 122, "minX": 43, "minY": 600, "maxX": 86, "maxY": 700, "bold": true}, + {"char": 104, "minX": 86, "minY": 600, "maxX": 130, "maxY": 696, "bold": false}, + {"char": 70, "minX": 130, "minY": 600, "maxX": 174, "maxY": 696, "bold": false}, + {"char": 74, "minX": 174, "minY": 600, "maxX": 218, "maxY": 696, "bold": false}, + {"char": 232, "minX": 218, "minY": 600, "maxX": 261, "maxY": 696, "bold": false}, + {"char": 233, "minX": 261, "minY": 600, "maxX": 304, "maxY": 696, "bold": false}, + {"char": 234, "minX": 304, "minY": 600, "maxX": 347, "maxY": 696, "bold": false}, + {"char": 235, "minX": 347, "minY": 600, "maxX": 390, "maxY": 696, "bold": false}, + {"char": 224, "minX": 390, "minY": 600, "maxX": 433, "maxY": 696, "bold": false}, + {"char": 225, "minX": 433, "minY": 600, "maxX": 476, "maxY": 696, "bold": false}, + {"char": 226, "minX": 476, "minY": 600, "maxX": 519, "maxY": 696, "bold": false}, + {"char": 227, "minX": 519, "minY": 600, "maxX": 562, "maxY": 696, "bold": false}, + {"char": 228, "minX": 562, "minY": 600, "maxX": 605, "maxY": 696, "bold": false}, + {"char": 229, "minX": 605, "minY": 600, "maxX": 648, "maxY": 696, "bold": false}, + {"char": 215, "minX": 648, "minY": 600, "maxX": 691, "maxY": 696, "bold": false}, + {"char": 177, "minX": 691, "minY": 600, "maxX": 734, "maxY": 696, "bold": false}, + {"char": 165, "minX": 734, "minY": 600, "maxX": 777, "maxY": 696, "bold": false}, + {"char": 97, "minX": 777, "minY": 600, "maxX": 820, "maxY": 696, "bold": false}, + {"char": 101, "minX": 820, "minY": 600, "maxX": 863, "maxY": 696, "bold": false}, + {"char": 76, "minX": 863, "minY": 600, "maxX": 906, "maxY": 696, "bold": false}, + {"char": 107, "minX": 906, "minY": 600, "maxX": 948, "maxY": 696, "bold": false}, + {"char": 99, "minX": 948, "minY": 600, "maxX": 990, "maxY": 696, "bold": false}, + {"char": 62, "minX": 990, "minY": 600, "maxX": 1032, "maxY": 696, "bold": false}, + {"char": 115, "minX": 1032, "minY": 600, "maxX": 1073, "maxY": 696, "bold": false}, + {"char": 60, "minX": 1073, "minY": 600, "maxX": 1114, "maxY": 696, "bold": false}, + {"char": 120, "minX": 1114, "minY": 600, "maxX": 1154, "maxY": 696, "bold": false}, + {"char": 122, "minX": 1154, "minY": 600, "maxX": 1194, "maxY": 696, "bold": false}, + {"char": 253, "minX": 1194, "minY": 600, "maxX": 1233, "maxY": 696, "bold": false}, + {"char": 255, "minX": 1233, "minY": 600, "maxX": 1272, "maxY": 696, "bold": false}, + {"char": 187, "minX": 1272, "minY": 600, "maxX": 1311, "maxY": 696, "bold": false}, + {"char": 191, "minX": 1311, "minY": 600, "maxX": 1350, "maxY": 696, "bold": false}, + {"char": 175, "minX": 1350, "minY": 600, "maxX": 1389, "maxY": 696, "bold": false}, + {"char": 182, "minX": 1389, "minY": 600, "maxX": 1428, "maxY": 696, "bold": false}, + {"char": 171, "minX": 1428, "minY": 600, "maxX": 1467, "maxY": 696, "bold": false}, + {"char": 121, "minX": 1467, "minY": 600, "maxX": 1506, "maxY": 696, "bold": false}, + {"char": 63, "minX": 1506, "minY": 600, "maxX": 1545, "maxY": 696, "bold": false}, + {"char": 186, "minX": 1545, "minY": 600, "maxX": 1582, "maxY": 696, "bold": false}, + {"char": 170, "minX": 1582, "minY": 600, "maxX": 1618, "maxY": 696, "bold": false}, + {"char": 95, "minX": 1618, "minY": 600, "maxX": 1654, "maxY": 696, "bold": false}, + {"char": 168, "minX": 1654, "minY": 600, "maxX": 1689, "maxY": 696, "bold": false}, + {"char": 42, "minX": 1689, "minY": 600, "maxX": 1724, "maxY": 696, "bold": false}, + {"char": 94, "minX": 1724, "minY": 600, "maxX": 1758, "maxY": 696, "bold": false}, + {"char": 92, "minX": 1758, "minY": 600, "maxX": 1791, "maxY": 696, "bold": false}, + {"char": 47, "minX": 1791, "minY": 600, "maxX": 1823, "maxY": 696, "bold": false}, + {"char": 185, "minX": 1823, "minY": 600, "maxX": 1853, "maxY": 696, "bold": false}, + {"char": 176, "minX": 1853, "minY": 600, "maxX": 1883, "maxY": 696, "bold": false}, + {"char": 178, "minX": 1883, "minY": 600, "maxX": 1913, "maxY": 696, "bold": false}, + {"char": 179, "minX": 1913, "minY": 600, "maxX": 1943, "maxY": 696, "bold": false}, + {"char": 239, "minX": 1943, "minY": 600, "maxX": 1972, "maxY": 696, "bold": false}, + {"char": 207, "minX": 1972, "minY": 600, "maxX": 2001, "maxY": 696, "bold": false}, + {"char": 238, "minX": 2001, "minY": 600, "maxX": 2029, "maxY": 696, "bold": false}, + {"char": 106, "minX": 2029, "minY": 600, "maxX": 2048, "maxY": 696, "bold": false}, + {"char": 187, "minX": 0, "minY": 700, "maxX": 42, "maxY": 800, "bold": true}, + {"char": 191, "minX": 42, "minY": 700, "maxX": 84, "maxY": 800, "bold": true}, + {"char": 175, "minX": 84, "minY": 700, "maxX": 126, "maxY": 800, "bold": true}, + {"char": 182, "minX": 126, "minY": 700, "maxX": 168, "maxY": 800, "bold": true}, + {"char": 171, "minX": 168, "minY": 700, "maxX": 210, "maxY": 800, "bold": true}, + {"char": 63, "minX": 210, "minY": 700, "maxX": 252, "maxY": 800, "bold": true}, + {"char": 186, "minX": 252, "minY": 700, "maxX": 292, "maxY": 800, "bold": true}, + {"char": 170, "minX": 292, "minY": 700, "maxX": 331, "maxY": 800, "bold": true}, + {"char": 95, "minX": 331, "minY": 700, "maxX": 370, "maxY": 800, "bold": true}, + {"char": 168, "minX": 370, "minY": 700, "maxX": 408, "maxY": 800, "bold": true}, + {"char": 42, "minX": 408, "minY": 700, "maxX": 446, "maxY": 800, "bold": true}, + {"char": 94, "minX": 446, "minY": 700, "maxX": 483, "maxY": 800, "bold": true}, + {"char": 92, "minX": 483, "minY": 700, "maxX": 519, "maxY": 800, "bold": true}, + {"char": 47, "minX": 519, "minY": 700, "maxX": 554, "maxY": 800, "bold": true}, + {"char": 185, "minX": 554, "minY": 700, "maxX": 587, "maxY": 800, "bold": true}, + {"char": 176, "minX": 587, "minY": 700, "maxX": 620, "maxY": 800, "bold": true}, + {"char": 178, "minX": 620, "minY": 700, "maxX": 653, "maxY": 800, "bold": true}, + {"char": 179, "minX": 653, "minY": 700, "maxX": 686, "maxY": 800, "bold": true}, + {"char": 207, "minX": 686, "minY": 700, "maxX": 718, "maxY": 800, "bold": true}, + {"char": 238, "minX": 718, "minY": 700, "maxX": 749, "maxY": 800, "bold": true}, + {"char": 206, "minX": 749, "minY": 700, "maxX": 780, "maxY": 800, "bold": true}, + {"char": 114, "minX": 780, "minY": 700, "maxX": 811, "maxY": 800, "bold": true}, + {"char": 102, "minX": 811, "minY": 700, "maxX": 842, "maxY": 800, "bold": true}, + {"char": 40, "minX": 842, "minY": 700, "maxX": 873, "maxY": 800, "bold": true}, + {"char": 41, "minX": 873, "minY": 700, "maxX": 904, "maxY": 800, "bold": true}, + {"char": 116, "minX": 904, "minY": 700, "maxX": 934, "maxY": 800, "bold": true}, + {"char": 123, "minX": 934, "minY": 700, "maxX": 964, "maxY": 800, "bold": true}, + {"char": 125, "minX": 964, "minY": 700, "maxX": 994, "maxY": 800, "bold": true}, + {"char": 173, "minX": 994, "minY": 700, "maxX": 1023, "maxY": 800, "bold": true}, + {"char": 180, "minX": 1023, "minY": 700, "maxX": 1052, "maxY": 800, "bold": true}, + {"char": 45, "minX": 1052, "minY": 700, "maxX": 1081, "maxY": 800, "bold": true}, + {"char": 34, "minX": 1081, "minY": 700, "maxX": 1110, "maxY": 800, "bold": true}, + {"char": 206, "minX": 1110, "minY": 700, "maxX": 1138, "maxY": 796, "bold": false}, + {"char": 114, "minX": 1138, "minY": 700, "maxX": 1166, "maxY": 796, "bold": false}, + {"char": 102, "minX": 1166, "minY": 700, "maxX": 1194, "maxY": 796, "bold": false}, + {"char": 40, "minX": 1194, "minY": 700, "maxX": 1222, "maxY": 796, "bold": false}, + {"char": 41, "minX": 1222, "minY": 700, "maxX": 1250, "maxY": 796, "bold": false}, + {"char": 116, "minX": 1250, "minY": 700, "maxX": 1277, "maxY": 796, "bold": false}, + {"char": 123, "minX": 1277, "minY": 700, "maxX": 1304, "maxY": 796, "bold": false}, + {"char": 125, "minX": 1304, "minY": 700, "maxX": 1331, "maxY": 796, "bold": false}, + {"char": 173, "minX": 1331, "minY": 700, "maxX": 1357, "maxY": 796, "bold": false}, + {"char": 180, "minX": 1357, "minY": 700, "maxX": 1383, "maxY": 796, "bold": false}, + {"char": 96, "minX": 1383, "minY": 700, "maxX": 1409, "maxY": 796, "bold": false}, + {"char": 45, "minX": 1409, "minY": 700, "maxX": 1435, "maxY": 796, "bold": false}, + {"char": 34, "minX": 1435, "minY": 700, "maxX": 1461, "maxY": 796, "bold": false}, + {"char": 183, "minX": 1461, "minY": 700, "maxX": 1484, "maxY": 796, "bold": false}, + {"char": 73, "minX": 1484, "minY": 700, "maxX": 1507, "maxY": 796, "bold": false}, + {"char": 91, "minX": 1507, "minY": 700, "maxX": 1529, "maxY": 796, "bold": false}, + {"char": 93, "minX": 1529, "minY": 700, "maxX": 1551, "maxY": 796, "bold": false}, + {"char": 46, "minX": 1551, "minY": 700, "maxX": 1573, "maxY": 796, "bold": false}, + {"char": 237, "minX": 1573, "minY": 700, "maxX": 1594, "maxY": 796, "bold": false}, + {"char": 184, "minX": 1594, "minY": 700, "maxX": 1615, "maxY": 796, "bold": false}, + {"char": 161, "minX": 1615, "minY": 700, "maxX": 1636, "maxY": 796, "bold": false}, + {"char": 58, "minX": 1636, "minY": 700, "maxX": 1657, "maxY": 796, "bold": false}, + {"char": 33, "minX": 1657, "minY": 700, "maxX": 1678, "maxY": 796, "bold": false}, + {"char": 236, "minX": 1678, "minY": 700, "maxX": 1698, "maxY": 796, "bold": false}, + {"char": 204, "minX": 1698, "minY": 700, "maxX": 1718, "maxY": 796, "bold": false}, + {"char": 160, "minX": 1718, "minY": 700, "maxX": 1738, "maxY": 796, "bold": false}, + {"char": 166, "minX": 1738, "minY": 700, "maxX": 1758, "maxY": 796, "bold": false}, + {"char": 124, "minX": 1758, "minY": 700, "maxX": 1778, "maxY": 796, "bold": false}, + {"char": 105, "minX": 1778, "minY": 700, "maxX": 1798, "maxY": 796, "bold": false}, + {"char": 108, "minX": 1798, "minY": 700, "maxX": 1818, "maxY": 796, "bold": false}, + {"char": 32, "minX": 1818, "minY": 700, "maxX": 1838, "maxY": 796, "bold": false}, + {"char": 59, "minX": 1838, "minY": 700, "maxX": 1857, "maxY": 796, "bold": false}, + {"char": 44, "minX": 1857, "minY": 700, "maxX": 1875, "maxY": 796, "bold": false}, + {"char": 39, "minX": 1875, "minY": 700, "maxX": 1889, "maxY": 796, "bold": false}, + {"char": 236, "minX": 0, "minY": 800, "maxX": 26, "maxY": 900, "bold": true}, + {"char": 204, "minX": 26, "minY": 800, "maxX": 52, "maxY": 900, "bold": true}, + {"char": 205, "minX": 52, "minY": 800, "maxX": 78, "maxY": 900, "bold": true}, + {"char": 183, "minX": 78, "minY": 800, "maxX": 104, "maxY": 900, "bold": true}, + {"char": 96, "minX": 104, "minY": 800, "maxX": 130, "maxY": 900, "bold": true}, + {"char": 73, "minX": 130, "minY": 800, "maxX": 156, "maxY": 900, "bold": true}, + {"char": 91, "minX": 156, "minY": 800, "maxX": 181, "maxY": 900, "bold": true}, + {"char": 93, "minX": 181, "minY": 800, "maxX": 206, "maxY": 900, "bold": true}, + {"char": 46, "minX": 206, "minY": 800, "maxX": 231, "maxY": 900, "bold": true}, + {"char": 237, "minX": 231, "minY": 800, "maxX": 255, "maxY": 900, "bold": true}, + {"char": 184, "minX": 255, "minY": 800, "maxX": 279, "maxY": 900, "bold": true}, + {"char": 161, "minX": 279, "minY": 800, "maxX": 303, "maxY": 900, "bold": true}, + {"char": 58, "minX": 303, "minY": 800, "maxX": 327, "maxY": 900, "bold": true}, + {"char": 33, "minX": 327, "minY": 800, "maxX": 351, "maxY": 900, "bold": true}, + {"char": 160, "minX": 351, "minY": 800, "maxX": 374, "maxY": 900, "bold": true}, + {"char": 166, "minX": 374, "minY": 800, "maxX": 397, "maxY": 900, "bold": true}, + {"char": 124, "minX": 397, "minY": 800, "maxX": 420, "maxY": 900, "bold": true}, + {"char": 105, "minX": 420, "minY": 800, "maxX": 443, "maxY": 900, "bold": true}, + {"char": 108, "minX": 443, "minY": 800, "maxX": 466, "maxY": 900, "bold": true}, + {"char": 32, "minX": 466, "minY": 800, "maxX": 489, "maxY": 900, "bold": true}, + {"char": 106, "minX": 489, "minY": 800, "maxX": 511, "maxY": 900, "bold": true}, + {"char": 59, "minX": 511, "minY": 800, "maxX": 533, "maxY": 900, "bold": true}, + {"char": 44, "minX": 533, "minY": 800, "maxX": 554, "maxY": 900, "bold": true}, + {"char": 39, "minX": 554, "minY": 800, "maxX": 571, "maxY": 900, "bold": true}, + {"char": 0, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": false}, + {"char": 2, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": false}, + {"char": 9, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": false}, + {"char": 10, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": false}, + {"char": 13, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": false}, + {"char": 0, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": true}, + {"char": 2, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": true}, + {"char": 9, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": true}, + {"char": 10, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": true}, + {"char": 13, "minX": 0, "minY": 0, "maxX": 0, "maxY": 0, "bold": true} + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/base/font/roboto_texture.png b/src/main/resources/assets/base/font/roboto_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..05059f8cbdb328a9e7d0f5c0cd3a4a09cdc79bc0 GIT binary patch literal 190876 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

2h9u8IbX~VT+2glD3k|ke;Aqj$M(uS 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

leu1b00?o* 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 Q5QA=B)4N)vY4hj*0S9m&iU0rr literal 0 HcmV?d00001