コード例 #1
0
        public static string DrawRenderedText(AsciiDrawPanel drawPanel, List <RenderableText> renderedText)
        {
            foreach (var token in renderedText)
            {
                var totalWidth = 0;
                for (int characterIndex = 0; characterIndex < token.Drawable.CharacterLength; characterIndex++)
                {
                    var character    = token.Drawable.GetCharacterAt(characterIndex);
                    var charPosition = token.Origin + token.Offset + new Point(totalWidth, 0);
                    var charSize     = token.Drawable.SizeOfCharacter(characterIndex);

                    drawPanel.DrawRectangle(new Rectangle(charPosition, charSize), '.');

                    for (int x = 0; x < charSize.X; x++)
                    {
                        for (int y = 0; y < charSize.Y; y++)
                        {
                            if ((int)(charSize.X / 2) == x && (int)(charSize.Y / 2) == y)
                            {
                                drawPanel.DrawPixelAt(charPosition + new Point(x, y), character);
                            }
                        }
                    }
                    totalWidth += (int)charSize.X;
                }
            }

            return(drawPanel.GetImage());
        }
コード例 #2
0
        public static string DrawResult(BoundedText textMeasurer)
        {
            var drawPanel = new AsciiDrawPanel(textMeasurer.TotalAvailableSize);

            drawPanel.DrawRectangle(new Rectangle(Point.Zero, textMeasurer.TotalAvailableSize), '#');

            return(DrawRenderedText(drawPanel, textMeasurer.GetRenderedText()));
        }
コード例 #3
0
        public static string DrawUsedRectangles(IBakedLayout layoutResult, IEnumerable <BakedFlowLayout.BakedRow> rows)
        {
            var drawPanel = new AsciiDrawPanel(layoutResult.GetNode(layoutResult.OriginalRoot.Name.Text).Size);

            foreach (var row in rows)
            {
                drawPanel.DrawRectangle(row.UsedRectangle, '#');
            }

            return(drawPanel.GetImage());
        }
コード例 #4
0
        public static string DrawResultWithSpecificSize(IBakedLayout layoutResult, Point size)
        {
            var drawPanel = new AsciiDrawPanel(size);

            foreach (var key in layoutResult.AllResultNodeNames())
            {
                var node = layoutResult.GetNode(key);
                drawPanel.DrawRectangle(node.Rectangle, node.NestingLevel.ToString()[0]);
                drawPanel.DrawStringAt(node.Rectangle.Location + new Point(1, 1), key);
            }
            return(drawPanel.GetImage());
        }
コード例 #5
0
        public static string DrawItems(BakedFlowLayout layoutResult, IEnumerable <BakedFlowLayout.BakedRow> rows)
        {
            var drawPanel = new AsciiDrawPanel(layoutResult.GetNode(layoutResult.OriginalRoot.Name.Text).Size);

            foreach (var row in rows)
            {
                foreach (var item in row)
                {
                    drawPanel.DrawRectangle(item.Rectangle, '.');
                }
            }

            return(drawPanel.GetImage());
        }
コード例 #6
0
        public void DrawCanvasAt(Point pos, AsciiDrawPanel innerPanel)
        {
            for (int x = 0; x < innerPanel.Size.X; x++)
            {
                for (int y = 0; y < innerPanel.Size.Y; y++)
                {
                    var innerPanelPixel = innerPanel.content[x, y];
                    DrawPixelAt(new Point(pos.X + x, pos.Y + y), innerPanelPixel);
                }
            }

            foreach (var offscreenPixel in innerPanel.offscreenPixels)
            {
                this.offscreenPixels.Add(offscreenPixel);
            }
        }