diff --git a/src/main/java/speiger/src/coreengine/NewInputTest.java b/src/main/java/speiger/src/coreengine/NewInputTest.java index b541247..287381e 100644 --- a/src/main/java/speiger/src/coreengine/NewInputTest.java +++ b/src/main/java/speiger/src/coreengine/NewInputTest.java @@ -10,6 +10,11 @@ import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.AssetManager; import speiger.src.coreengine.assets.base.IAssetPackage; import speiger.src.coreengine.assets.base.IAssetProvider; +import speiger.src.coreengine.rendering.gui.font.glyth.Glyth; +import speiger.src.coreengine.rendering.gui.font.glyth.GlythData.GlythBaker; +import speiger.src.coreengine.rendering.gui.font.glyth.IGlythSheetInfo; +import speiger.src.coreengine.rendering.gui.font.providers.IFontProvider; +import speiger.src.coreengine.rendering.gui.font.providers.STBTrueTypeProvider; import speiger.src.coreengine.rendering.input.devices.FileDrop; import speiger.src.coreengine.rendering.input.devices.Joystick; import speiger.src.coreengine.rendering.input.devices.Keyboard; @@ -61,12 +66,14 @@ public class NewInputTest { System.out.println("Testing: "+GL.getCapabilities().OpenGL46); - DynamicTexture texture = new DynamicTexture(16, 16, DynamicTexture.DEFAULT_PARAMETERS); - texture.fill(0, 0, 16, 16, -1); - texture.fill(0, 0, 8, 8, 255, 0, 0, 255); - texture.fill(8, 0, 8, 8, 0, 255, 0, 255); - texture.fill(8, 8, 8, 8, 255, 0, 0, 255); - texture.fill(0, 8, 8, 8, 0, 0, 255, 255); + IFontProvider provider = STBTrueTypeProvider.create(AssetLocation.of("font/Roboto-Medium.ttf"), assets); + + DynamicTexture texture = new DynamicTexture(512, 512, DynamicTexture.DEFAULT_PARAMETERS); + texture.fill(0, 0, 512, 512, -1); + texture.fill(0, 0, 256, 256, 255, 0, 0, 255); + texture.fill(256, 0, 256, 256, 0, 255, 0, 255); + texture.fill(256, 256, 256, 256, 255, 0, 0, 255); + texture.fill(0, 256, 256, 256, 0, 0, 255, 255); texture.process(true); window.visible(true); @@ -74,11 +81,24 @@ public class NewInputTest { if(T.key() == GLFW.GLFW_KEY_T) { T.cancel(); texture.bind(); - Drawable drawable = new Drawable(GLTextureFormat.RGBA, 8, 8); - drawable.fill(0, 0, 8, 8, 255, 255, 0, 255); - drawable.upload(6, 6, 2, 2, 4, 4); + Drawable drawable = new Drawable(GLTextureFormat.RGBA, 256, 256); + drawable.fill(0, 0, 256, 256, 255, 255, 0, 255); + drawable.upload(192, 192, 64, 64, 128, 128); drawable.close(); } + else if(T.key() == GLFW.GLFW_KEY_Z) { + T.cancel(); + texture.bind(); + provider.glythData("C".codePointAt(0), false).bake(new GlythBaker() { + @Override + public Glyth bake(IGlythSheetInfo info) { + int width = info.width(); + int height = info.height(); + info.upload(256 - (width >> 2), 256 - (height >> 2)); + return null; + } + }); + } }); VertexBuilder builder = new VertexBuilder(255); diff --git a/src/main/java/speiger/src/coreengine/rendering/gui/font/FontGroup.java b/src/main/java/speiger/src/coreengine/rendering/gui/font/FontGroup.java index 0619018..da4e86f 100644 --- a/src/main/java/speiger/src/coreengine/rendering/gui/font/FontGroup.java +++ b/src/main/java/speiger/src/coreengine/rendering/gui/font/FontGroup.java @@ -25,8 +25,8 @@ public class FontGroup { this.providers = providers; } - public GlythData data(int codepoint) { - return dataGlyths.computeIfAbsent(codepoint, this::compute); + public GlythData data(int codepoint, boolean bold) { + return dataGlyths.computeIfAbsent(codepoint | (bold ? 0 : BOLD_FLAG), this::compute); } public Glyth glyth(int codepoint, boolean bold) { @@ -34,8 +34,10 @@ public class FontGroup { } private GlythData compute(int codepoint) { + boolean bold = (codepoint & BOLD_FLAG) != 0; + codepoint &= ~BOLD_FLAG; for(int i = 0,m=providers.size();i