public void PutNextRectangleF_FirstRectangle_PutToCenter(int centerX, int centerY)
        {
            A.CallTo(() => settings.CenterX)
            .Returns(centerX);
            A.CallTo(() => settings.CenterY)
            .Returns(centerY);
            var expected = new RectangleF(centerX + imageWidth / 2f, centerY + imageHeight / 2f,
                                          defaultRectangle.Width, defaultRectangle.Height);

            cloudLayouter.PutNextRectangleF(defaultRectangle)
            .Should()
            .BeEquivalentTo(expected);
        }
예제 #2
0
        public Result <byte[]> Visualize(IEnumerable <ITag> tags)
        {
            var brush = new SolidBrush(settings.Color);

            using (var bmp = new Bitmap(settings.ImageWidth, settings.ImageHeight))
                using (var g = Graphics.FromImage(bmp))
                {
                    g.TextRenderingHint = TextRenderingHint.AntiAlias;

                    foreach (var word in tags)
                    {
                        var wordSize = g.MeasureString(word.Value, word.Font);

                        var wordPosition = layouter.PutNextRectangleF(wordSize);

                        if (IsOutsideImage(wordPosition))
                        {
                            return(Result.Fail <byte[]>(
                                       $"Tag cloud does not fit the image size of {settings.ImageWidth}x{settings.ImageHeight}"));
                        }

                        g.DrawString(word.Value, word.Font, brush, wordPosition);
                    }

                    return(Result.Ok(bmp.ToByteArray(settings.ImageFormat)));
                }
        }
예제 #3
0
        public byte[] Visualize(IEnumerable <ITag> tags)
        {
            var brush = new SolidBrush(settings.Color);

            using (var bmp = new Bitmap(settings.ImageWidth, settings.ImageHeight))
                using (var g = Graphics.FromImage(bmp))
                {
                    g.TextRenderingHint = TextRenderingHint.AntiAlias;

                    foreach (var word in tags)
                    {
                        var wordSize     = g.MeasureString(word.Value, word.Font);
                        var wordPosition = layouter.PutNextRectangleF(wordSize);

                        g.DrawString(word.Value, word.Font, brush, wordPosition);
                    }

                    return(bmp.ToByteArray(settings.ImageFormat));
                }
        }