diff --git a/imgui-binding/src/main/java/imgui/ImFontConfig.java b/imgui-binding/src/main/java/imgui/ImFontConfig.java index 4e26d56..1703fe7 100644 --- a/imgui-binding/src/main/java/imgui/ImFontConfig.java +++ b/imgui-binding/src/main/java/imgui/ImFontConfig.java @@ -247,14 +247,16 @@ public final class ImFontConfig implements ImDestroyable { */ /** - * Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs). You may want to use GlyphOffset.y when merge font of different heights. + * Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs). + * You may want to use GlyphOffset.y when merge font of different heights. */ public native boolean getMergeMode(); /* return IM_FONT_CONFIG->MergeMode; */ /** - * Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs). You may want to use GlyphOffset.y when merge font of different heights. + * Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs). + * You may want to use GlyphOffset.y when merge font of different heights. */ public native void setMergeMode(boolean mergeMode); /* IM_FONT_CONFIG->MergeMode = mergeMode; diff --git a/imgui-binding/src/main/java/imgui/ImFontGlyph.java b/imgui-binding/src/main/java/imgui/ImFontGlyph.java new file mode 100644 index 0000000..6d620f0 --- /dev/null +++ b/imgui-binding/src/main/java/imgui/ImFontGlyph.java @@ -0,0 +1,186 @@ +package imgui; + +public final class ImFontGlyph implements ImDestroyable { + final long ptr; + + /** + * This class will create a native structure. + * Call {@link #destroy()} method to manually free used memory. + */ + public ImFontGlyph() { + ImGui.touch(); + ptr = nCreate(); + } + + ImFontGlyph(final long ptr) { + this.ptr = ptr; + } + + @Override + public void destroy() { + nDestroy(ptr); + } + + /*JNI + #include + #include "jni_common.h" + + jfieldID imFontGlyphPtrID; + + #define IM_FONT_GLYPH ((ImFontGlyph*)env->GetLongField(object, imFontGlyphPtrID)) + */ + + static native void nInit(); /* + jclass jImFontGlyphClass = env->FindClass("imgui/ImFontGlyph"); + imFontGlyphPtrID = env->GetFieldID(jImFontGlyphClass, "ptr", "J"); + */ + + private native long nCreate(); /* + ImFontConfig* imFontConfig = new ImFontConfig(); + return (long)imFontConfig; + */ + + private native void nDestroy(long ptr); /* + delete (ImFontConfig*)ptr; + */ + + /** + * 0x0000..0xFFFF + */ + public native short getCodepoint(); /* + return (short)IM_FONT_GLYPH->Codepoint; + */ + + /** + * 0x0000..0xFFFF + */ + public native void setCodepoint(short codepoint); /* + IM_FONT_GLYPH->Codepoint = (ImWchar)codepoint; + */ + + /** + * Distance to next character (= data from font + ImFontConfig::GlyphExtraSpacing.x baked in) + */ + public native float getAdvanceX(); /* + return IM_FONT_GLYPH->AdvanceX; + */ + + /** + * Distance to next character (= data from font + ImFontConfig::GlyphExtraSpacing.x baked in) + */ + public native void setAdvanceX(float advanceX); /* + IM_FONT_GLYPH->AdvanceX = advanceX; + */ + + /** + * Glyph corners + */ + public native float getX0(); /* + return IM_FONT_GLYPH->X0; + */ + + /** + * Glyph corners + */ + public native void setX0(float x0); /* + IM_FONT_GLYPH->X0 = x0; + */ + + /** + * Glyph corners + */ + public native float getY0(); /* + return IM_FONT_GLYPH->Y0; + */ + + /** + * Glyph corners + */ + public native void setY0(float y0); /* + IM_FONT_GLYPH->Y0 = y0; + */ + + /** + * Glyph corners + */ + public native float getX1(); /* + return IM_FONT_GLYPH->X1; + */ + + /** + * Glyph corners + */ + public native void setX1(float x1); /* + IM_FONT_GLYPH->X1 = x1; + */ + + /** + * Glyph corners + */ + public native float getY1(); /* + return IM_FONT_GLYPH->Y1; + */ + + /** + * Glyph corners + */ + public native void setY1(float y1); /* + IM_FONT_GLYPH->Y1 = y1; + */ + + /** + * Texture coordinates + */ + public native float getU0(); /* + return IM_FONT_GLYPH->U0; + */ + + /** + * Texture coordinates + */ + public native void setU0(float u0); /* + IM_FONT_GLYPH->U0 = u0; + */ + + /** + * Texture coordinates + */ + public native float getV0(); /* + return IM_FONT_GLYPH->V0; + */ + + /** + * Texture coordinates + */ + public native void setV0(float v0); /* + IM_FONT_GLYPH->V0 = v0; + */ + + /** + * Texture coordinates + */ + public native float getU1(); /* + return IM_FONT_GLYPH->U1; + */ + + /** + * Texture coordinates + */ + public native void setU1(float u1); /* + IM_FONT_GLYPH->U1 = u1; + */ + + /** + * Texture coordinates + */ + public native float getV1(); /* + return IM_FONT_GLYPH->V1; + */ + + /** + * Texture coordinates + */ + public native void setV1(float v1); /* + IM_FONT_GLYPH->V1 = v1; + */ +} diff --git a/imgui-binding/src/main/java/imgui/ImGui.java b/imgui-binding/src/main/java/imgui/ImGui.java index 574e696..e7f79de 100644 --- a/imgui-binding/src/main/java/imgui/ImGui.java +++ b/imgui-binding/src/main/java/imgui/ImGui.java @@ -49,6 +49,7 @@ public final class ImGui { ImDrawData.nInit(); ImFontAtlas.nInit(); ImFontConfig.nInit(); + ImFontGlyph.nInit(); nInitInputTextData(); }