public WordInfo[] SelectTopWordsInfo(string[] words, int top)
        {
            var statistic = new WordsStatistic();

            for (var i = 0; i < words.Length; i++)
            {
                var neighbours = SelectNeighbours(words, i);
                statistic.AddWord(words[i], neighbours);
            }

            return(statistic.SelectTop(top).ToArray());
        }
 private bool TryPlaceWord(WordsStatistic wordsStatistic, out TagCloudElement tagCloudElement)
 {
     var font = GetFont(wordsStatistic.Count);
     var boundsRect = _measureString(wordsStatistic.Word, font);
     Point location;
     if (!TryGetLocationForRect(boundsRect, out location))
     {
         tagCloudElement = null;
         return false;
     }
     var position = new Rectangle(location, boundsRect);
     _badPlaces.Add(position);
     tagCloudElement = new TagCloudElement(wordsStatistic.Word, position, GetRandomColor(), font);
     return true;
 }