Auto add plane0 to ImGui

This commit is contained in:
Willem Cazander 2022-02-01 14:53:02 +01:00
parent eb292cbe08
commit c0ef8abc03

View file

@ -8,9 +8,6 @@ import imgui.ImGui;
import imgui.ImGuiIO;
import imgui.gl3.ImGuiImplGl3;
import imgui.glfw.ImGuiImplGlfw;
import love.distributedrebirth.numberxd.base2t.BasePartFactory;
import love.distributedrebirth.numberxd.base2t.facet.BasePart;
import love.distributedrebirth.numberxd.base2t.facet.BasePartAlt1;
/**
* Create and shutdown of ImGui and font activations.
@ -20,10 +17,6 @@ import love.distributedrebirth.numberxd.base2t.facet.BasePartAlt1;
public class ImGuiSetup {
public static final ImGuiImplGlfw imGuiImp = new ImGuiImplGlfw();
public static final ImGuiImplGl3 imGuiGlImp = new ImGuiImplGl3();
private static final short[] glyphRangesHebrew = new short[]{0x0590, 0x05F4};
private static final short[] glyphRangesArabic = new short[]{0x0600, 0x06FF};
private static final short[] glyphRangesSubSuper0 = new short[]{0x00B2, 0x00B9};
private static final short[] glyphRangesSubSuper1 = new short[]{0x2070, 0x209F};
public static void init() {
long windowHandle = -1;
@ -44,40 +37,26 @@ public class ImGuiSetup {
private static void initFonts(final ImGuiIO io) {
io.getFonts().addFontDefault();
ImFontGlyphRangesBuilder rangesBuilder = new ImFontGlyphRangesBuilder();
rangesBuilder.addRanges(io.getFonts().getGlyphRangesDefault());
rangesBuilder.addRanges(io.getFonts().getGlyphRangesCyrillic());
rangesBuilder.addRanges(io.getFonts().getGlyphRangesJapanese());
rangesBuilder.addRanges(io.getFonts().getGlyphRangesChineseFull());
rangesBuilder.addRanges(glyphRangesHebrew);
rangesBuilder.addRanges(glyphRangesArabic);
rangesBuilder.addRanges(glyphRangesSubSuper0);
rangesBuilder.addRanges(glyphRangesSubSuper1);
rangesBuilder.addText("\u4ed9⁴ ˧꜏⋇꜊꜔ ⁴ﷲΩ@");
rangesBuilder.addText("©Δ∞ \u4ed9\u4e0a\u4e3b\u5929");
for (int base:BasePartFactory.getSupportedBases()) {
for (BasePart part:BasePartFactory.buildBasePartsByBase(base)) {
rangesBuilder.addText(part.getIdentifierTone());
rangesBuilder.addText(part.getIdentifierLetter());
rangesBuilder.addText(part.getChinaKey());
if (part instanceof BasePartAlt1) {
rangesBuilder.addText(BasePartAlt1.class.cast(part).getAlt1Value());
}
}
}
ImFontConfig fontConfig = new ImFontConfig();
fontConfig.setMergeMode(true);
final short[] glyphRanges = rangesBuilder.buildRanges();
ImFontGlyphRangesBuilder fontBuilder = new ImFontGlyphRangesBuilder();
addRangeUnicodePlane0(fontBuilder);
final short[] glyphRanges = fontBuilder.buildRanges();
io.getFonts().addFontFromMemoryTTF(Gdx.files.internal("font/NotoSansCJKjp-Medium.otf").readBytes(), 14, fontConfig, glyphRanges);
io.getFonts().addFontFromMemoryTTF(Gdx.files.internal("font/FreeSans.ttf").readBytes(), 14, fontConfig, glyphRanges);
fontConfig.destroy();
}
private static void addRangeUnicodePlane0(ImFontGlyphRangesBuilder fontBuilder) {
for (int c=0x0100;c<=0xFFEF;c++) {
StringBuilder buf = new StringBuilder();
buf.append(""+(char)c);
fontBuilder.addText(buf.toString());
}
}
public static void dispose() {
imGuiImp.dispose();
imGuiGlImp.dispose();