public FNTRenderer(LibDescent.Data.Font fnt) { font = fnt; buffer = new Bitmap(fnt.MaxWidth, fnt.Height, PixelFormat.Format32bppArgb); bufferGraphics = Graphics.FromImage(buffer); bufferRect = new Rectangle(new Point(0, 0), this.buffer.Size); Reset(); }
private void bannerSaveFileDialog_FileOk(object sender, CancelEventArgs e) { byte[] fntData = findFile(fontTextBox.Text); if (fntData == null) { MessageBox.Show(this, "Cannot find the given font", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } string text = textTextBox.Text; LibDescent.Data.Font font = MainForm.LoadFont(new MemoryStream(fntData)); FNTRenderer frend = new FNTRenderer(font); Bitmap result; if (testing) { int cw = Math.Max(8, font.GetCharWidth('\0')) * 2; result = new Bitmap(cw * 16, (font.Height + 3) * 16); Graphics gdi = Graphics.FromImage(result); int x = 0, lx, ly, lw; Pen pen = new Pen(Color.Red); for (int c = 0; c < 256; ++c) { lx = (c % 16) * cw; ly = (font.Height + 3) * (c / 16); x = lx; frend.Reset(); frend.DrawCharacterRaw(result, (char)c, Color.Green, ref x, ly); x = lx; ly += font.Height; lw = font.GetCharWidth((char)c); gdi.DrawLine(pen, lx, ly, lx + lw, ly); } } else { result = new Bitmap(font.MeasureWidth(text), font.Height); int x = 0; foreach (char c in text) { frend.DrawCharacterRaw(result, c, Color.Green, ref x, 0); } } result.Save(bannerSaveFileDialog.FileName); }
public FNTRendererUpScale(LibDescent.Data.Font font) : base(font) { }