| 2247 | } |
| 2248 | |
| 2249 | static 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 | |
| 2280 | void ImFontAtlasBuildFinish(ImFontAtlas* atlas) |
| 2281 | { |
no test coverage detected