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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }