コード例 #1
0
        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);
        }
コード例 #2
0
 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;
 }
コード例 #3
0
        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;
            });
        }