[fonts] Initial fonts support commit
This commit is contained in:
1 parent
1a5365d14a
commit
f16672b80a
10 files changed
+491
-69
No files matched your search
@@ -0,0 +1,273 @@
|
||||
package imgui;
|
||||
|
||||
public final class ImFontConfig implements ImDestroyable {
|
||||
final long ptr;
|
||||
|
||||
private short[] glyphRanges;
|
||||
|
||||
/**
|
||||
* This class will create a native structure.
|
||||
* Call {@link #destroy()} method to manually free used memory.
|
||||
*/
|
||||
public ImFontConfig() {
|
||||
ImGui.touch();
|
||||
ptr = nCreate();
|
||||
}
|
||||
|
||||
ImFontConfig(final long ptr) {
|
||||
this.ptr = ptr;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
nDestroy(ptr);
|
||||
}
|
||||
|
||||
/*JNI
|
||||
#include <imgui.h>
|
||||
#include "jni_common.h"
|
||||
|
||||
jfieldID imFontConfigPtrID;
|
||||
|
||||
#define IM_FONT_CONFIG ((ImFontConfig*)env->GetLongField(object, imFontConfigPtrID))
|
||||
*/
|
||||
|
||||
static native void nInit(); /*
|
||||
jclass jImFontConfigClass = env->FindClass("imgui/ImFontConfig");
|
||||
imFontConfigPtrID = env->GetFieldID(jImFontConfigClass, "ptr", "J");
|
||||
*/
|
||||
|
||||
private native long nCreate(); /*
|
||||
ImFontConfig* imFontConfig = new ImFontConfig();
|
||||
return (long)imFontConfig;
|
||||
*/
|
||||
|
||||
private native void nDestroy(long ptr); /*
|
||||
delete (ImFontConfig*)ptr;
|
||||
*/
|
||||
|
||||
/**
|
||||
* TTF/OTF data ownership taken by the container ImFontAtlas (will delete memory itself).
|
||||
*/
|
||||
public native boolean getFontDataOwnedByAtlas(); /*
|
||||
return IM_FONT_CONFIG->FontDataOwnedByAtlas;
|
||||
*/
|
||||
|
||||
/**
|
||||
* TTF/OTF data ownership taken by the container ImFontAtlas (will delete memory itself).
|
||||
*/
|
||||
public native void setFontDataOwnedByAtlas(boolean isFontDataOwnedByAtlas); /*
|
||||
IM_FONT_CONFIG->FontDataOwnedByAtlas = isFontDataOwnedByAtlas;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Index of font within TTF/OTF file
|
||||
*/
|
||||
public native int getFontNo(); /*
|
||||
return IM_FONT_CONFIG->FontNo;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Index of font within TTF/OTF file
|
||||
*/
|
||||
public native void setFontNo(int fontNo); /*
|
||||
IM_FONT_CONFIG->FontNo = fontNo;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Size in pixels for rasterizer (more or less maps to the resulting font height).
|
||||
*/
|
||||
public native float getSizePixels(); /*
|
||||
return IM_FONT_CONFIG->SizePixels;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Size in pixels for rasterizer (more or less maps to the resulting font height).
|
||||
*/
|
||||
public native void setSizePixels(float sizePixels); /*
|
||||
IM_FONT_CONFIG->SizePixels = sizePixels;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Rasterize at higher quality for sub-pixel positioning.
|
||||
* Read https://github.com/nothings/stb/blob/master/tests/oversample/README.md for details.
|
||||
*/
|
||||
public native int getOversampleH(); /*
|
||||
return IM_FONT_CONFIG->OversampleH;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Rasterize at higher quality for sub-pixel positioning.
|
||||
* Read https://github.com/nothings/stb/blob/master/tests/oversample/README.md for details.
|
||||
*/
|
||||
public native void setOversampleH(int oversampleH); /*
|
||||
IM_FONT_CONFIG->OversampleH = oversampleH;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Rasterize at higher quality for sub-pixel positioning.
|
||||
* We don't use sub-pixel positions on the Y axis.
|
||||
*/
|
||||
public native int getOversampleV(); /*
|
||||
return IM_FONT_CONFIG->OversampleV;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Rasterize at higher quality for sub-pixel positioning.
|
||||
* We don't use sub-pixel positions on the Y axis.
|
||||
*/
|
||||
public native void setOversampleV(int oversampleV); /*
|
||||
IM_FONT_CONFIG->OversampleV = oversampleV;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Align every glyph to pixel boundary. Useful e.g. if you are merging a non-pixel aligned font with the default font.
|
||||
* If enabled, you can set OversampleH/V to 1.
|
||||
*/
|
||||
public native boolean getPixelSnapH(); /*
|
||||
return IM_FONT_CONFIG->PixelSnapH;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Align every glyph to pixel boundary. Useful e.g. if you are merging a non-pixel aligned font with the default font.
|
||||
* If enabled, you can set OversampleH/V to 1.
|
||||
*/
|
||||
public native void setPixelSnapH(boolean isPixelSnapH); /*
|
||||
IM_FONT_CONFIG->PixelSnapH = isPixelSnapH;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Extra spacing (in pixels) between glyphs. Only X axis is supported for now.
|
||||
*/
|
||||
public native void getGlyphExtraSpacing(ImVec2 dstImVec2); /*
|
||||
Jni::ImVec2Cpy(env, &IM_FONT_CONFIG->GlyphExtraSpacing, dstImVec2);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Extra spacing (in pixels) between glyphs. Only X axis is supported for now.
|
||||
*/
|
||||
public native void setGlyphExtraSpacing(float x, float y); /*
|
||||
IM_FONT_CONFIG->GlyphExtraSpacing.x = x;
|
||||
IM_FONT_CONFIG->GlyphExtraSpacing.y = y;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Offset all glyphs from this font input.
|
||||
*/
|
||||
public native void getGlyphOffset(ImVec2 dstImVec2); /*
|
||||
Jni::ImVec2Cpy(env, &IM_FONT_CONFIG->GlyphOffset, dstImVec2);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Offset all glyphs from this font input.
|
||||
*/
|
||||
public native void setGlyphOffset(float x, float y); /*
|
||||
IM_FONT_CONFIG->GlyphOffset.x = x;
|
||||
IM_FONT_CONFIG->GlyphOffset.y = y;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Pointer to a user-provided list of Unicode range (2 value per range, values are inclusive, zero-terminated list).
|
||||
* THE ARRAY DATA NEEDS TO PERSIST AS LONG AS THE FONT IS ALIVE.
|
||||
*/
|
||||
public short[] getGlyphRanges() {
|
||||
return glyphRanges;
|
||||
}
|
||||
|
||||
/**
|
||||
* Pointer to a user-provided list of Unicode range (2 value per range, values are inclusive, zero-terminated list).
|
||||
* THE ARRAY DATA NEEDS TO PERSIST AS LONG AS THE FONT IS ALIVE.
|
||||
*/
|
||||
public void setGlyphRanges(final short[] glyphRanges) {
|
||||
this.glyphRanges = glyphRanges;
|
||||
nSetGlyphRanges(glyphRanges);
|
||||
}
|
||||
|
||||
private native void nSetGlyphRanges(short[] glyphRanges); /*
|
||||
IM_FONT_CONFIG->GlyphRanges = glyphRanges != NULL ? (ImWchar*)&glyphRanges[0] : NULL;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Minimum AdvanceX for glyphs, set Min to align font icons, set both Min/Max to enforce mono-space font
|
||||
*/
|
||||
public native float getGlyphMinAdvanceX(); /*
|
||||
return IM_FONT_CONFIG->GlyphMinAdvanceX;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Minimum AdvanceX for glyphs, set Min to align font icons, set both Min/Max to enforce mono-space font
|
||||
*/
|
||||
public native void setGlyphMinAdvanceX(float glyphMinAdvanceX); /*
|
||||
IM_FONT_CONFIG->GlyphMinAdvanceX = glyphMinAdvanceX;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Maximum AdvanceX for glyphs
|
||||
*/
|
||||
public native float getGlyphMaxAdvanceX(); /*
|
||||
return IM_FONT_CONFIG->GlyphMaxAdvanceX;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Maximum AdvanceX for glyphs
|
||||
*/
|
||||
public native void setGlyphMaxAdvanceX(float glyphMaxAdvanceX); /*
|
||||
IM_FONT_CONFIG->GlyphMaxAdvanceX = glyphMaxAdvanceX;
|
||||
*/
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public native void setMergeMode(boolean mergeMode); /*
|
||||
IM_FONT_CONFIG->MergeMode = mergeMode;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Settings for custom font rasterizer (e.g. ImGuiFreeType). Leave as zero if you aren't using one.
|
||||
*/
|
||||
public native int getRasterizerFlags(); /*
|
||||
return IM_FONT_CONFIG->RasterizerFlags;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Settings for custom font rasterizer (e.g. ImGuiFreeType). Leave as zero if you aren't using one.
|
||||
*/
|
||||
public native void setRasterizerFlags(int rasterizerFlags); /*
|
||||
IM_FONT_CONFIG->RasterizerFlags = (unsigned int)rasterizerFlags;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Brighten (>1.0f) or darken (<1.0f) font output. Brightening small fonts may be a good workaround to make them more readable.
|
||||
*/
|
||||
public native float getRasterizerMultiply(); /*
|
||||
return IM_FONT_CONFIG->RasterizerMultiply;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Brighten (>1.0f) or darken (<1.0f) font output. Brightening small fonts may be a good workaround to make them more readable.
|
||||
*/
|
||||
public native void setRasterizerMultiply(float rasterizerMultiply); /*
|
||||
IM_FONT_CONFIG->RasterizerMultiply = rasterizerMultiply;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Explicitly specify unicode codepoint of ellipsis character. When fonts are being merged first specified ellipsis will be used.
|
||||
*/
|
||||
public native short getEllipsisChar(); /*
|
||||
return (short)IM_FONT_CONFIG->EllipsisChar;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Explicitly specify unicode codepoint of ellipsis character. When fonts are being merged first specified ellipsis will be used.
|
||||
*/
|
||||
public native void setEllipsisChar(short ellipsisChar); /*
|
||||
IM_FONT_CONFIG->EllipsisChar = (ImWchar)ellipsisChar;
|
||||
*/
|
||||
}
|
||||
Reference in new issue
Block a user