Exemple #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);
        }
Exemple #2
0
 public void PutNextRectangle_SizeElementsLessOrEqualZero_ThrowArgumentException(int width, int height)
 {
     Calling.ThisLambda(() => cloudPrepossessing.PutNextRectangle(new Size(width, height)))
     .Should().Throw <ArgumentException>();
 }