public static byte[] CreateLabels(IEnumerable <Expansion> includedSets) { var garamond = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "GARA.TTF"); var garamondBold = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "GARABD.TTF"); var baseFont = BaseFont.CreateFont(garamond, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); var boldBaseFont = BaseFont.CreateFont(garamondBold, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); var dividers = DataAccess.GetDividers() .Where(divider => includedSets.Contains(divider.Expansion)) .ToList(); var drawActionRectangles = dividers .SelectMany(divider => new List <Action <PdfContentByte, Rectangle> > { (canvas, rectangle) => { var centeringCursor = new CenteringCursor(rectangle.Top, rectangle.Bottom); var topCursor = centeringCursor.StartCursor; var bottomCursor = centeringCursor.EndCursor; const float topPadding = -4f; const float dummyCostPadding = -27f; topCursor.AdvanceCursor(topPadding); DrawBackground(canvas, rectangle, divider.Type, topCursor, bottomCursor); if (divider.Cost != null) { DrawCost(canvas, rectangle, divider.Cost.Value, boldBaseFont, topCursor); } else { topCursor.AdvanceCursor(dummyCostPadding); } DrawExpansionLogo(canvas, rectangle, divider.Expansion.GetAbbreviation(), boldBaseFont, bottomCursor); DrawName(canvas, rectangle, divider.Name, baseFont, centeringCursor); } }) .ToList(); var drawActionRectangleQueue = new Queue <Action <PdfContentByte, Rectangle> >(drawActionRectangles); return(PdfGenerator.DrawRectangles(drawActionRectangleQueue, BaseColor.WHITE)); }
public static byte[] CreateLabels(IEnumerable <Expansion> selectedExpansions) { var garamond = Path.Combine(CurrentPath, "Fonts", "GARA.TTF"); var garamondBold = Path.Combine(CurrentPath, "Fonts", "GARABD.TTF"); var font = PdfFontFactory.CreateFont(garamond, true); var boldFont = PdfFontFactory.CreateFont(garamondBold, true); var dividers = DataAccess.GetDividers() .Where(divider => selectedExpansions.Contains(divider.Expansion)) .ToList(); var drawActionRectangles = dividers .Select((divider) => new Action <PdfCanvas, Rectangle>( (canvas, rectangle) => { var centeringCursor = new CenteringCursor(rectangle.GetTop(), rectangle.GetBottom()); var topCursor = centeringCursor.StartCursor; var bottomCursor = centeringCursor.EndCursor; const float dummyCostPadding = -27f; topCursor.AdvanceCursor(rectangle.GetTop()); bottomCursor.AdvanceCursor(rectangle.GetBottom()); DrawBackground(canvas, rectangle, divider.Type); if (divider.Cost != null) { DrawCost(canvas, rectangle, divider.Cost.Value, boldFont, topCursor); } else { topCursor.AdvanceCursor(dummyCostPadding); } DrawExpansionLogo(canvas, rectangle, divider.Expansion.GetAbbreviation(), boldFont, bottomCursor); DrawName(canvas, rectangle, divider.Name, font, centeringCursor); })) .ToList(); var drawActionRectangleQueue = new Queue <Action <PdfCanvas, Rectangle> >(drawActionRectangles); return(PdfGenerator.DrawRectangles(drawActionRectangleQueue, ColorConstants.WHITE)); }
private static void DrawName( PdfCanvas canvas, Rectangle rectangle, string name, PdfFont font, CenteringCursor centeringCursor ) { const float maxFontSize = 10f; var potentialTextRectangleHeight = centeringCursor.GetCurrentStartWithCentering() - centeringCursor.GetCurrentEndWithCentering(); var textFontSize = TextSharpHelpers.GetFontSize(canvas, name, potentialTextRectangleHeight, font, maxFontSize); var textRectangleHeight = textFontSize * .9f; var textWidthOffsetToCenter = (rectangle.GetWidth() / 2.0f - textRectangleHeight / 2.0f) - 3f; var extraWidthOffsetForBackgroundImage = textFontSize / 3; var textRectangle = new Rectangle( rectangle.GetLeft() + textWidthOffsetToCenter + extraWidthOffsetForBackgroundImage, centeringCursor.GetCurrentEndWithCentering(), textWidthOffsetToCenter + extraWidthOffsetForBackgroundImage + textRectangleHeight, potentialTextRectangleHeight); DrawCenteredText(canvas, name, textRectangle, font, ColorConstants.BLACK, textFontSize, FontWeight.Regular); }
private static void DrawName( PdfContentByte canvas, Rectangle rectangle, string name, BaseFont baseFont, CenteringCursor centeringCursor ) { const float maxFontSize = 15f; var potentialTextRectangleHeight = centeringCursor.GetCurrentStartWithCentering() - centeringCursor.GetCurrentEndWithCentering(); var textFontSize = TextSharpHelpers.GetFontSize(canvas, name, potentialTextRectangleHeight, baseFont, maxFontSize, Element.ALIGN_LEFT, Font.NORMAL); var font = new Font(baseFont, textFontSize, Font.NORMAL, BaseColor.BLACK); var textRectangleHeight = textFontSize * .9f; var textWidthOffsetToCenter = (rectangle.Width / 2.0f - textRectangleHeight / 2.0f); var extraWidthOffsetForBackgroundImage = textFontSize / 3; var textRectangle = new Rectangle( rectangle.Left + textWidthOffsetToCenter + extraWidthOffsetForBackgroundImage, centeringCursor.GetCurrentEndWithCentering(), rectangle.Left + textWidthOffsetToCenter + extraWidthOffsetForBackgroundImage + textRectangleHeight, centeringCursor.GetCurrentStartWithCentering()); DrawCenteredText(canvas, name, textRectangle, font); }