Beispiel #1
0
        public static Result <List <CloudTag> > CreateCloudTags(string fullPath, TextParser parser,
                                                                ITagsPrepossessing tagPlacer, CloudSettings cloudSettings)
        {
            var parsedElements = parser.ParseElementsFromFile(fullPath);

            if (!parsedElements.IsSuccess)
            {
                return(Result.Fail <List <CloudTag> >(parsedElements.Error));
            }

            var elements = parsedElements.GetValueOrThrow();

            elements = cloudSettings.TagOrderPreform.OrderEnumerable(elements);

            var result = new List <CloudTag>();

            foreach (var element in elements)
            {
                var font = new Font(cloudSettings.TagTextFontFamily,
                                    Math.Min(cloudSettings.MaximalFontSize, element.Count * cloudSettings.FontSizeMultiplier));
                var size = new Size(TextRenderer.MeasureText(element.Element, font).Width,
                                    TextRenderer.MeasureText(element.Element, font).Height);

                var rect = tagPlacer.PutNextRectangle(size);
                if (!rect.IsSuccess)
                {
                    return(Result.Fail <List <CloudTag> >(rect.Error));
                }

                result.Add(new CloudTag(rect.GetValueOrThrow(), element.Element,
                                        cloudSettings.TagTextFormat, font));
            }

            return(result);
        }
Beispiel #2
0
 public abstract Result <T> CreateTagCloudRepresentation(string fullPath, Size imageSize, CloudSettings settings);
        public override Result <Bitmap> CreateTagCloudRepresentation(string fullPath, Size imageSize, CloudSettings settings)
        {
            var tags = TagGenerator.CreateCloudTags(fullPath, Parser, TagPlacer, settings);

            if (!tags.IsSuccess)
            {
                return(Result.Fail <Bitmap>(tags.Error));
            }

            var bitmap   = new Bitmap(imageSize.Width, imageSize.Height);
            var graphics = Graphics.FromImage(bitmap);

            graphics.Clear(settings.ColorPainter.BackgroundColor);

            var textPen = new Pen(Color.Black);
            var rectPen = new Pen(Color.Black);

            foreach (var tag in tags.GetValueOrThrow())
            {
                rectPen.Color = settings.ColorPainter.GetTagShapeColor();
                graphics.DrawRectangle(rectPen, tag.Shape);

                textPen.Color = settings.ColorPainter.GetTagTextColor(rectPen.Color);
                var text = settings.TagTextPreform.PreformToVisualize(tag.Text);

                graphics.DrawString(text, tag.TextFont, textPen.Brush,
                                    tag.Shape.ConvertToRectangleF(), tag.Format);
            }

            return(bitmap);
        }