Exemple #1
0
 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;
     }
 }
Exemple #2
0
        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));
                }
            }
        }