protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { foreach (var glyph in glyphs.Values) { glyph.Texture?.Dispose(); } atlas?.Dispose(); } glyphs = null; atlas = null; disposedValue = true; } }
private FontGlyph generateGlyph(char c) { Vector2 measuredSize; if (char.IsWhiteSpace(c)) { DrawState.TextGenerator.CreateBitmap(c.ToString(), name, size, Vector2.Zero, Vector2.Zero, BoxAlignment.Centre, StringTrimming.None, out measuredSize, true); return(new FontGlyph(null, (int)measuredSize.X, (int)measuredSize.Y)); } else { atlas = atlas ?? new TextureMultiAtlas2d(512, 512, $"Font Atlas {name} {size}x"); using (var bitmap = DrawState.TextGenerator.CreateBitmap(c.ToString(), name, size, Vector2.Zero, Vector2.Zero, BoxAlignment.Centre, StringTrimming.None, out measuredSize, false)) { var texture = atlas.AddRegion(bitmap, $"glyph:{c}@{Name}:{Size}"); return(new FontGlyph(texture, (int)measuredSize.X, (int)measuredSize.Y)); } } }