public Result <Bitmap> DrawTag(ReaderSettings readerSettings, DrawerSettings drawerSettings, LayouterSettings layouterSettings) { var words = wordsProvider.GetObjectSource(readerSettings); if (!words.IsSuccess) { return(Result.Fail <Bitmap>(words.Error)); } var frequency = frequencyProvider.GetFrequencyDictionary(words.Value); var orderedSource = frequency.OrderByDescending(kv => kv.Value) .Take(readerSettings.MaxObjectsCount).ToList(); var sizableSource = sizableProvider.GetSizableSource(orderedSource, drawerSettings); var drawableWordSource = drawableProvider.GetDrawableSource(sizableSource, layouterSettings); if (!drawableWordSource.IsSuccess) { return(Result.Fail <Bitmap>(drawableWordSource.Error)); } var cloudInfo = new CloudInfo(drawableWordSource.Value); var bitmap = drawer.GetBitmap(cloudInfo, drawerSettings); return(bitmap); }
public void Setup() { var factory = new SpiralFactory(); center = new Point(0, 0); settings = new LayouterSettings(center, 1, SpiralType.Ferma); cloudLayouter = new DrawableCloudLayouter(factory); }
public ApplicationSettings(ImageExt imageExt, ReaderSettings readerSettings, LayouterSettings layouterSettings, DrawerSettings drawerSettings, string savePath) { ImageExt = imageExt; ReaderSettings = readerSettings; LayouterSettings = layouterSettings; DrawerSettings = drawerSettings; SavePath = savePath; }
public ISpiral Create(LayouterSettings layouterSettings) { switch (layouterSettings.SpiralType) { case SpiralType.Ferma: return(new FermaSpiral(layouterSettings.Center, layouterSettings.SpiralCoefficient)); case SpiralType.InLine: return(new InLineSpiral(layouterSettings.Center, layouterSettings.SpiralCoefficient)); default: return(new RectangleSpiral(layouterSettings.Center, layouterSettings.SpiralCoefficient)); } }
public Result <List <DrawableWord> > GetDrawableSource(List <SizableWord> sizableSource, LayouterSettings settings) { var drawableSource = new List <DrawableWord>(); Rectangles = new List <Rectangle>(); center = settings.Center; spiralPointer = factory.Create(settings); foreach (var sizable in sizableSource) { var nextRect = PutNextRectangle(sizable.DrawSize); if (!nextRect.IsSuccess) { return(Result.Fail <List <DrawableWord> >(nextRect.Error)); } drawableSource.Add(new DrawableWord(sizable.Value, nextRect.Value)); } return(drawableSource.AsResult()); }