From 5969f757f3339f85d15978f30dbab6ad92d3f8bf Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Thu, 25 Feb 2010 21:18:56 +1300 Subject: [PATCH] software blit into font texture --- OpenRa.Game/Graphics/SpriteFont.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/OpenRa.Game/Graphics/SpriteFont.cs b/OpenRa.Game/Graphics/SpriteFont.cs index 07a5254161..48b29040fb 100644 --- a/OpenRa.Game/Graphics/SpriteFont.cs +++ b/OpenRa.Game/Graphics/SpriteFont.cs @@ -76,10 +76,20 @@ namespace OpenRa.Graphics Offset = { X = -_glyph.bitmap_left, Y = -_glyph.bitmap_top } }; - // todo: sensible blit, rather than just `white box` - for (var j = 0; j < s.size.Y; j++) - for (var i = 0; i < s.size.X; i++) - s.sheet.Bitmap.SetPixel(i + s.bounds.Left, j + s.bounds.Top, Color.White); + unsafe + { + var p = (byte*)_glyph.bitmap.buffer; + + for (var j = 0; j < s.size.Y; j++) + { + for (var i = 0; i < s.size.X; i++) + if (p[i] != 0) + s.sheet.Bitmap.SetPixel(i + s.bounds.Left, j + s.bounds.Top, + Color.FromArgb(p[i], 0xff, 0xff, 0xff)); + + p += _glyph.bitmap.pitch; + } + } s.sheet.Texture.SetData(s.sheet.Bitmap); return g;