public SpriteFontSimple(GraphicsDevice gdevice, Font font) { _font = font; _device = gdevice; //if (_font.maxcharheight <= 16) { _tex.Add(new Texture2D(gdevice, 512, 512)); packer = new SimpleRectanglePacker(512, 512); } //else //{ // _tex.Add(new Texture2D(gdevice, 1024, 1024)); // packer = new SimpleRectanglePacker(1024, 1024); //} }
public SpriteFontDoubleColor(GraphicsDevice gdevice, Font font, Color fillcolor, Color bordercolor) { _font = font; _device = gdevice; _fillcolor = fillcolor; _bordercolor = bordercolor; //if (_font.maxcharheight <= 16) { _tex.Add(new Texture2D(gdevice, 512, 512)); packer = new SimpleRectanglePacker(512, 512); } //else //{ // _tex.Add( new Texture2D(gdevice, 1024, 1024)); // packer = new SimpleRectanglePacker(1024, 1024); //} }
void FillChar(char c) { if (charposs.ContainsKey(c)) { return; } UInt32[] data; var size = _font.GetCharData(c, out data); Point p; var b = packer.TryPack(size.Width, size.Height, out p); Texture2D tex; if (b) { charposs[c] = new charpos( new Rectangle(p.X, p.Y, size.Width, size.Height) , _tex.Count - 1 ); } else { //if (_font.maxcharheight <= 16) { _tex.Add(new Texture2D(_device, 512, 512)); packer = new SimpleRectanglePacker(512, 512); } //else //{ // _tex.Add(new Texture2D(_device, 1024, 1024)); // packer = new SimpleRectanglePacker(1024, 1024); //} packer.TryPack(size.Width, size.Height, out p); charposs[c] = new charpos( new Rectangle(p.X, p.Y, size.Width, size.Height) , _tex.Count - 1 ); } tex = _tex[_tex.Count - 1]; tex.SetData <UInt32>(0, charposs[c].src, data, 0, data.Length); }