private static double GetExpectedMaximumLayoutRadius(IRectangleLayouter layouter) { var occupiedArea = layouter.Rectangles .Sum(rectangle => rectangle.Width * rectangle.Height); return(GetCircleRadiusFromArea(occupiedArea / MinOccupiedAreaRatio)); }
public void SetUp() { // Закомментируйте одну из строк ниже layouter = new CircularCloudLayouter(layoutCenter); // layouter = new BadLayouter(new Point(1000, 1000)); minSize = new Size(5, 5); maxSize = new Size(20, 20); }
public TagsCloudVisualizator(IRectangleLayouter layouter, ICloudDesign cloudDesign, ITagsReader tagReader, IEnumerable <ITagsHandler> tagHandlerers) { this.tagReader = tagReader; this.tagHandlerers = tagHandlerers; this.layouter = layouter; this.cloudDesign = cloudDesign; tagCloud = new Bitmap(cloudDesign.CloudWidth, cloudDesign.CloudHeight); }
private static void FillLayoutWithSomeRectangles(IRectangleLayouter layouter, IEnumerable <Size> rectangleSizes) { foreach (var size in rectangleSizes) { layouter.PutNextRectangle(size); } }
public void SetUp() { settings = new DrawerSettings(); fakeLayouter = A.Fake <IRectangleLayouter>(); A.CallTo(fakeLayouter) .Where(call => call.Method.Name == "PutNextRectangle") .WithReturnType <Result <Rectangle> >() .Returns(new Rectangle(0, 0, 50, 50)); tags = new[] { new TagInfo("string", 0.5), new TagInfo("otherString", 0.2) }; }
public void Return_Rectangles() { IRectangleLayouter layouter = CreateTrackedLayouter(10, 8, 0.1); Rectangle rectA = layouter.Place(new Vector(10, 10)); Rectangle rectB = layouter.Place(new Vector(10, 10)); rectA.ShouldBeEquivalentTo(new Rectangle(Vector.Empty, new Vector(10, 10))); rectB.Center.Should().NotBe(Vector.Empty); }
private static List <Rectangle> FillLayoutWithSomeRectangles(IRectangleLayouter layouter, IEnumerable <Size> rectangleSizes) { var result = new List <Rectangle>(); foreach (var size in rectangleSizes) { result.Add(layouter.PutNextRectangle(size).GetValueOrThrow()); } return(result); }
public void DrawWords(Graphics graphics, IEnumerable <CloudTag> words, IRectangleLayouter layouter) { graphics.Clear(config.BackgroundColor); foreach (var word in words) { var wordFontSize = Math.Max(10, (int)(config.Font.Size * word.Weight)); var font = new Font(config.Font.FontFamily, wordFontSize); var size = TextRenderer.MeasureText(word.Text, font); var area = layouter.PutNextRectangle(size); graphics.DrawString(word.Text, font, config.Brush, area); } }
public void GenerateRectangles_WhichPlacedInCircle() { IRectangleLayouter layouter = CreateTrackedLayouter(10, 32, 0.1); Vector rectangleSize = new Vector(40, 40); List <Rectangle> rectangles = Enumerable.Repeat(rectangleSize, 97).Select(size => layouter.Place(size)).ToList(); foreach (double distanceToCenter in rectangles.Select(rect => rect.Center.Length)) { distanceToCenter.Should().BeLessThan(220); } }
private static Color GetRectangleColor(Rectangle rectangle, IRectangleLayouter layouter, double layoutRadius) { if (IsRectangleIntersectOther(layouter, rectangle)) { return(Color.Red); } if (IsDistanceToRectangleOverLimit(rectangle, layouter.Center, layoutRadius)) { return(Color.Yellow); } return(Color.LawnGreen); }
private static bool IsRectangleIntersectOther(IRectangleLayouter layouter, Rectangle rectangle) { foreach (var otherRectangle in layouter.Rectangles) { if (rectangle != otherRectangle && rectangle.IntersectsWith(otherRectangle)) { return(true); } } return(false); }
private void Form1_KeyDown(object sender, KeyEventArgs e) { _cloudLayouter = new PositionedLayouter(new CircularCloudLayouter(200, 32, 0.1), new Vector(860, 540)); _rectangles.Clear(); for (int i = 0; i < 97; i++) { Rectangle rect = _cloudLayouter.Place(new Vector(40, 40)); _rectangles.Add(rect); } Invalidate(); }
public void GenerateRectangles_WhichPlacedWithMaxDensity() { IRectangleLayouter layouter = CreateTrackedLayouter(10, 32, 0.1); Vector rectangleSize = new Vector(40, 40); List <Rectangle> rectangles = Enumerable.Repeat(rectangleSize, 97).Select(size => layouter.Place(size)).ToList(); Rectangle bounds = rectangles.Aggregate(new Rectangle(), (current, rect) => current.Encapsulate(rect)); double circleArea = System.Math.PI * 220 * 220; double shapeArea = bounds.Area; System.Math.Abs(circleArea / shapeArea).Should().BeGreaterThan(0.75); }
public TagsCloudGenerator( IWordsFileReader wordReader, IEnumerable <IWordProcessor> processors, IWordMeasurer wordMeasurer, IRectangleLayouter layouter, IPainter painter, TagsCloudVisualizer visualizer) { this.layouter = layouter; this.wordReader = wordReader; this.processors = processors; this.wordMeasurer = wordMeasurer; this.painter = painter; this.visualizer = visualizer; }
public PositionedLayouter(IRectangleLayouter rectangleLayouter, Vector center) { _rectangleLayouter = rectangleLayouter; _center = center; }
public WordsLayouter(IRectangleLayouter layouter, FontSettings fontSettings) { this.layouter = layouter; this.fontSettings = fontSettings; }
public void SetUp() { layouter = new CircularCloudLayouter(new CircularLayouterSettings(layoutCenter, 4, 0.005)); minSize = new Size(5, 5); maxSize = new Size(20, 20); }
public TagDrawer(DrawerSettings settings, IRectangleLayouter layouter) { this.layouter = layouter; this.settings = settings; }
public void SetUp() { rectLayouter = A.Fake<IRectangleLayouter>(); layouter = new WordsLayouter(rectLayouter, new FontSettings()); }
public TrackedLayouter(IRectangleLayouter baseLayouter) { this._baseLayouter = baseLayouter; }
public CloudWordsLayouter(IRectangleLayouter rectangleLayouter) { this.rectangleLayouter = rectangleLayouter; }
public TagLayouter(IRectangleLayouter rectangleLayouter, FontSettings fontSettings) { this.rectangleLayouter = rectangleLayouter; this.fontSettings = fontSettings; }