MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / ImFontAtlasBuildRenderDefaultTexData

Function ImFontAtlasBuildRenderDefaultTexData

lib/imgui/imgui_draw.cpp:2249–2278  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2247}
2248
2249static void ImFontAtlasBuildRenderDefaultTexData(ImFontAtlas* atlas)
2250{
2251 IM_ASSERT(atlas->CustomRectIds[0] >= 0);
2252 IM_ASSERT(atlas->TexPixelsAlpha8 != NULL);
2253 ImFontAtlasCustomRect& r = atlas->CustomRects[atlas->CustomRectIds[0]];
2254 IM_ASSERT(r.ID == FONT_ATLAS_DEFAULT_TEX_DATA_ID);
2255 IM_ASSERT(r.IsPacked());
2256
2257 const int w = atlas->TexWidth;
2258 if (!(atlas->Flags & ImFontAtlasFlags_NoMouseCursors))
2259 {
2260 // Render/copy pixels
2261 IM_ASSERT(r.Width == FONT_ATLAS_DEFAULT_TEX_DATA_W_HALF * 2 + 1 && r.Height == FONT_ATLAS_DEFAULT_TEX_DATA_H);
2262 for (int y = 0, n = 0; y < FONT_ATLAS_DEFAULT_TEX_DATA_H; y++)
2263 for (int x = 0; x < FONT_ATLAS_DEFAULT_TEX_DATA_W_HALF; x++, n++)
2264 {
2265 const int offset0 = (int)(r.X + x) + (int)(r.Y + y) * w;
2266 const int offset1 = offset0 + FONT_ATLAS_DEFAULT_TEX_DATA_W_HALF + 1;
2267 atlas->TexPixelsAlpha8[offset0] = FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS[n] == '.' ? 0xFF : 0x00;
2268 atlas->TexPixelsAlpha8[offset1] = FONT_ATLAS_DEFAULT_TEX_DATA_PIXELS[n] == 'X' ? 0xFF : 0x00;
2269 }
2270 }
2271 else
2272 {
2273 IM_ASSERT(r.Width == 2 && r.Height == 2);
2274 const int offset = (int)(r.X) + (int)(r.Y) * w;
2275 atlas->TexPixelsAlpha8[offset] = atlas->TexPixelsAlpha8[offset + 1] = atlas->TexPixelsAlpha8[offset + w] = atlas->TexPixelsAlpha8[offset + w + 1] = 0xFF;
2276 }
2277 atlas->TexUvWhitePixel = ImVec2((r.X + 0.5f) * atlas->TexUvScale.x, (r.Y + 0.5f) * atlas->TexUvScale.y);
2278}
2279
2280void ImFontAtlasBuildFinish(ImFontAtlas* atlas)
2281{

Callers 1

ImFontAtlasBuildFinishFunction · 0.85

Calls 2

ImVec2Class · 0.85
IsPackedMethod · 0.80

Tested by

no test coverage detected