elseif(IM_UNICODE_CODEPOINT_MAX==(0xFFFF))// Codepoint will not fit in ImWchar (extra parenthesis around 0xFFFF somehow fixes -Wunreachable-code with Clang)
r_avoid=ImRect(-FLT_MAX,parent_window->ClipRect.Min.y,FLT_MAX,parent_window->ClipRect.Max.y);// Avoid parent menu-bar. If we wanted multi-line menu-bar, we may instead want to have the calling window setup e.g. a NextWindowData.PosConstraintAvoidRect field
inlineboolGetBit(int n)const{intoff=(n>>5);ImU32mask=1u<<(n&31);return(UsedChars[off]&mask)!=0;}// Get bit n in the array
inlineboolGetBit(size_t n)const{intoff=(int)(n>>5);ImU32mask=1u<<(n&31);return(UsedChars[off]&mask)!=0;}// Get bit n in the array
inlinevoidSetBit(int n){intoff=(n>>5);ImU32mask=1u<<(n&31);UsedChars[off]|=mask;}// Set bit n in the array
inlinevoidSetBit(size_t n){intoff=(int)(n>>5);ImU32mask=1u<<(n&31);UsedChars[off]|=mask;}// Set bit n in the array
inlinevoidAddChar(ImWcharc){SetBit(c);}// Add character
inlinevoidAddChar(ImWcharc){SetBit(c);}// Add character
IMGUI_APIvoidAddText(constchar*text,constchar*text_end=NULL);// Add string (each character of the UTF-8 string are added)
IMGUI_APIvoidAddText(constchar*text,constchar*text_end=NULL);// Add string (each character of the UTF-8 string are added)
IMGUI_APIvoidAddRanges(constImWchar*ranges);// Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault()) to force add all of ASCII/Latin+Ext
IMGUI_APIvoidAddRanges(constImWchar*ranges);// Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault()) to force add all of ASCII/Latin+Ext
@ -2355,6 +2361,7 @@ struct ImFont
floatScale;// 4 // in // = 1.f // Base font scale, multiplied by the per-window font scale which you can adjust with SetWindowFontScale()
floatScale;// 4 // in // = 1.f // Base font scale, multiplied by the per-window font scale which you can adjust with SetWindowFontScale()
floatAscent,Descent;// 4+4 // out // // Ascent: distance from top to bottom of e.g. 'A' [0..FontSize]
floatAscent,Descent;// 4+4 // out // // Ascent: distance from top to bottom of e.g. 'A' [0..FontSize]
intMetricsTotalSurface;// 4 // out // // Total surface in pixels to get an idea of the font rasterization/texture cost (not exact, we approximate the cost of padding between glyphs)
intMetricsTotalSurface;// 4 // out // // Total surface in pixels to get an idea of the font rasterization/texture cost (not exact, we approximate the cost of padding between glyphs)
ImU8Used4kPagesMap[(IM_UNICODE_CODEPOINT_MAX+1)/4096/8];// 2 bytes if ImWchar=ImWchar16, 34 bytes if ImWchar==ImWchar32. Store 1-bit for each block of 4K codepoints that has one active glyph. This is mainly used to facilitate iterations accross all used codepoints.
// Methods
// Methods
IMGUI_APIImFont();
IMGUI_APIImFont();
@ -2380,6 +2387,7 @@ struct ImFont
IMGUI_APIvoidAddRemapChar(ImWchardst,ImWcharsrc,booloverwrite_dst=true);// Makes 'dst' character/glyph points to 'src' character/glyph. Currently needs to be called AFTER fonts have been built.
IMGUI_APIvoidAddRemapChar(ImWchardst,ImWcharsrc,booloverwrite_dst=true);// Makes 'dst' character/glyph points to 'src' character/glyph. Currently needs to be called AFTER fonts have been built.
// You may want to create your own instance of this if you want to use ImDrawList completely without ImGui. In that case, watch out for future changes to this structure.
// You may want to create your own instance of this if you want to use ImDrawList completely without ImGui. In that case, watch out for future changes to this structure.
ImDrawListFlagsInitialFlags;// Initial flags at the beginning of the frame (it is possible to alter flags on a per-drawlist basis afterwards)
ImDrawListFlagsInitialFlags;// Initial flags at the beginning of the frame (it is possible to alter flags on a per-drawlist basis afterwards)
// [Internal] Lookup tables
// [Internal] Lookup tables
ImVec2CircleVtx12[12];// FIXME: Bake rounded corners fill/borders in atlas
ImVec2ArcFastVtx[12*IM_DRAWLIST_ARCFAST_TESSELLATION_MULTIPLIER];// FIXME: Bake rounded corners fill/borders in atlas
ImU8CircleSegmentCounts[64];// Precomputed segment count for given radius (array index + 1) before we calculate it dynamically (to avoid calculation overhead)
ImU8CircleSegmentCounts[64];// Precomputed segment count for given radius (array index + 1) before we calculate it dynamically (to avoid calculation overhead)