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 Result <Bitmap> GetBitmap(CloudInfo cloudInfo, DrawerSettings drawerSettings) { var heightCoefficient = (float)cloudInfo.SizeOfCloud.Height / (drawerSettings.Height - Border); var widthCoefficient = (float)cloudInfo.SizeOfCloud.Width / (drawerSettings.Width - Border); var biggestCoefficient = Math.Max(heightCoefficient, widthCoefficient); var bitmap = PrepareBitmap(drawerSettings); if (!bitmap.IsSuccess) { return(bitmap); } var graphics = PrepareGraphics(bitmap.Value, cloudInfo, drawerSettings.BackgroundColor, biggestCoefficient); foreach (var drawable in cloudInfo.DrawableSource) { using var currentFont = new Font(drawerSettings.TextFont.FontFamily, (int)Math.Round(drawable.Place.Height / (biggestCoefficient * 2))); var currentPlace = new PointF(drawable.Place.X / biggestCoefficient, drawable.Place.Y / biggestCoefficient); graphics.DrawString(drawable.Value, currentFont, drawerSettings.TextBrush, currentPlace); } return(bitmap); }
public List <SizableWord> GetSizableSource(List <KeyValuePair <string, int> > wordFrequency, DrawerSettings settings) { return(wordFrequency.Select(kv => new SizableWord(kv.Key, sizableSelector.GeSelector(settings.SizeSelector).GetSize(kv.Key, kv.Value, settings))) .Where(sizable => sizable.DrawSize.Width > 0 && sizable.DrawSize.Height > 0).ToList()); }
/// <summary> /// Создает новый Drawer c использованием переданных сцены, настроек /// и функции-инициализатора для окна, в которое следует отрисовывать /// </summary> /// <param name="scene">Сцена, которую следует отрисовывать</param> /// <param name="settings">Настройки</param> public DirectXFormDrawer(DirectXScene scene, DrawerSettings settings) { _settings = settings; _scene = scene; _effect = scene.Effect; _deviceWorker = scene.DeviceWorker; //TODO! Return camera controls. /*if(Settings.ShowControls) Control.Controls.Add(new CameraSwitchControl(_camera));*/ }
public ApplicationSettings(ImageExt imageExt, ReaderSettings readerSettings, LayouterSettings layouterSettings, DrawerSettings drawerSettings, string savePath) { ImageExt = imageExt; ReaderSettings = readerSettings; LayouterSettings = layouterSettings; DrawerSettings = drawerSettings; SavePath = savePath; }
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) }; }
/// <summary> /// Создает новый Drawer c использованием переданных сцены, настроек /// и функции-инициализатора для окна, в которое следует отрисовывать /// </summary> /// <param name="scene">Сцена, которую следует отрисовывать</param> /// <param name="settings">Настройки</param> public DirectXFormDrawer(DirectXScene scene, DrawerSettings settings) { _settings = settings; _scene = scene; _effect = scene.Effect; _deviceWorker = scene.DeviceWorker; //TODO! Return camera controls. /*if(Settings.ShowControls) * Control.Controls.Add(new CameraSwitchControl(_camera));*/ }
public CommandLineInterface(string[] args) { var arguments = Parser.Default.ParseArguments <CLIArguments>(args).Value; LayouterSettings = new CircularLayouterSettings( new Point(arguments.CenterX, arguments.CenterY), arguments.SpiralPitch, arguments.SpiralStep); FileReaderSettings = new FileReaderSettings(arguments.FilePath); DrawerSettings = new DrawerSettings(); MakeDrawerSettings(arguments); SaverSettings = new SaverSettings(arguments.OutputPath, arguments.OutputFileName, arguments.Extension); GramParts = arguments.GramParts.ToArray(); BoringWords = arguments.BoringWords.ToArray(); }
public TagDrawer(DrawerSettings settings, IRectangleLayouter layouter) { this.layouter = layouter; this.settings = settings; }
public Size GetSize(string word, int count, DrawerSettings settings) { return((Graphics.MeasureString(word, settings.TextFont) * (MathF.Log(count) + 1)).ToSize()); }
/// <summary> /// Создает Drawer с использованием заданных настроек и корневого тела /// </summary> /// <param name="root">Корень дерева тел</param> /// <param name="settings">Настройки</param> public WinformsDrawer(Body root, DrawerSettings settings) { _settings = settings; _root = root; }
private Result <Bitmap> PrepareBitmap(DrawerSettings settings) { width = settings.Width; height = settings.Height; return(Result.Of(() => new Bitmap(width, height))); }