private RectangleF Render(NpcPrinter document, Font font, Graphics graphics, string label, string text, RectangleF area, int relativeFontSize = 0) { if (text.IsEmpty() || label.IsEmpty()) { return(area); } label += ": "; graphics.DrawString(label, document.PrinterFontBold, Brushes.Black, area, _formatLeft); text = new string(' ', 25) + text; var f = relativeFontSize == 0 ? font : new Font(font.FontFamily, font.Size + relativeFontSize); var textArea = graphics.MeasureString(text, f, area.Size, _formatLeft); graphics.DrawString(text, f, Brushes.Black, area, _formatLeft); if (area.Height - textArea.Height <= 0) { // No room left return(RectangleF.Empty); } return(new RectangleF(area.X, area.Y + textArea.Height, area.Width, area.Height - textArea.Height)); }
public void Render(NpcPrinter document, Graphics graphics, RectangleF area) { /* * [NpcId] (+6 point) [Name] +6 point Bold * [Title] +4 point * [QuoteFromNpc] +2 point Italics * [thin line] * Appearance: (bold) [Appearance] * Roleplaying: (bold) [Roleplaying] * Personality: (bold) [Personality] * Motivation: (bold) [Motivation] * Background: (bold) [Background] * Traits: (bold) [Trait list] */ var newArea = Render(document.PrinterFontBold, graphics, NpcId + " " + NpcName, area, 6); Render(document.PrinterFont, graphics, Title, area, 4, true); newArea = Render(document.PrinterFontItalics, graphics, QuoteFromNpc, newArea, 2); newArea = Render(document, document.PrinterFont, graphics, "Appearance", Appearance, newArea); newArea = Render(document, document.PrinterFont, graphics, "Roleplaying", Roleplaying, newArea); newArea = Render(document, document.PrinterFont, graphics, "Personality", Personality, newArea); newArea = Render(document, document.PrinterFont, graphics, "Motivation", Motivation, newArea); if (newArea.Height <= 0) { return; } newArea = Render(document, document.PrinterFont, graphics, "Background", Background, newArea); if (newArea.Height <= 0) { return; } Render(document, document.PrinterFont, graphics, "Traits", RenderableTraits, newArea); }