public static ImageSource GetImageFromDimensions(DimensionsViewModel dimensions) { MandelbrotFractal fractal = new MandelbrotFractal (dimensions.Width, dimensions.Height, dimensions.Iterations, dimensions.Left, dimensions.Right, dimensions.Top, dimensions.Bottom); return fractal.GetImage(fractal._MaxIterations); }
protected bool Equals(DimensionsViewModel other) { return _Left.Equals(other._Left) && _Right.Equals(other._Right) && _Top.Equals(other._Top) && _Bottom.Equals(other._Bottom) && _Iterations == other._Iterations && _Width == other._Width && _Height == other._Height; }
public MapViewModel(IObservable<SelectionViewModel> selection) { this.Dimensions = new DimensionsViewModel(); selection.Subscribe(x => this.Selection = x); // Doesn't work.. //selection.BindTo(this, x => x.Selection); this.WhenAny(x => x.Dimensions.Iterations, x => x.Selection, (iterations, selectedArea) => selectedArea.Value) .Where(x => x != null) .Select(x => Dimensions.GetSelectionDimensions(x)) .ToProperty(this, x => x.PreviewDimensions); this.WhenAny(x => x.PreviewDimensions, x => x.Value) .Throttle(TimeSpan.FromSeconds(1)) .ObserveOnDispatcher() .Where(x => x != null) .Select(x => MandelbrotFractal.GetImageFromDimensions(x)) .ToProperty(this, x => x.Preview); this.WhenAny(x => x.Dimensions, x => x.Value) .Select(x => new MandelbrotFractal(_Dimensions.Width, _Dimensions.Height, _Dimensions.Iterations, _Dimensions.Left, _Dimensions.Right, _Dimensions.Top, _Dimensions.Bottom)) .ToProperty(this, x => x.Fractal); this.WhenAny(x => x.Dimensions.Iterations, x => x.Fractal, (x, dimensions) => x.Value). Throttle(TimeSpan.FromSeconds(1)). ObserveOnDispatcher(). Select(x => Fractal.GetImage(x)) .ToProperty(this, x => x.Output); this.ZoomCommand = new ReactiveCommand(this.WhenAny(x => x.Selection, x => x.Value).Select(x => x != null)); this.ZoomCommand.Subscribe(x => { Dimensions = new DimensionsViewModel() { Height = Dimensions.Height, Width = Dimensions.Width, Iterations = Dimensions.Iterations, Bottom = PreviewDimensions.Bottom, Top = PreviewDimensions.Top, Left = PreviewDimensions.Left, Right = PreviewDimensions.Right }; Selection = null; }); }