Example #1
0
 public InstallerViewModel()
 {
     foreach (var operation in GetAvailableOperations())
     {
         AvailableOperations.Add(operation);
     }
     SelectedOperation = AvailableOperations.FirstOrDefault();
 }
Example #2
0
        private void BindFilter(CompositeDisposable disposables)
        {
            this.FilterTypeComboBox.AddEnumValues <FilterType>();

            this.Bind(this.ViewModel, vm => vm.FilterType, v => v.FilterTypeComboBox.SelectedItem)
            .DisposeWith(disposables);

            var filterOperationConverter = Locator.Current.GetService <IEnumConverter <FilterOperation> >();

            this.ViewModel !.AvailableOperations
            .ToObservableChangeSet()
            .Transform(filterOperationConverter.ToString)
            .ToCollection()
            .Subscribe(ops =>
            {
                this.FilterOperationComboBox.Items.Clear();
                ops.ForEach(op => this.FilterOperationComboBox.Items.Add(op));
            })
            .DisposeWith(disposables);

            this.Bind(this.ViewModel, vm => vm.FilterOperation, v => v.FilterOperationComboBox.SelectedItem)
            .DisposeWith(disposables);

            this.WhenAnyValue(v => v.ViewModel !.FilterOperation)
            .Select(op => op != FilterOperation.None)
            .BindTo(this, v => v.FilterOperationComboBox.Visibility)
            .DisposeWith(disposables);

            this.Bind(this.ViewModel !, vm => vm.IsNegated, v => v.NegateCheckBox.IsChecked)
            .DisposeWith(disposables);

            this.OneWayBind(
                this.ViewModel !,
                vm => vm.IsNegated,
                v => v.ColorStripRectangle.Visibility,
                BooleanToVisibilityHint.UseHidden)
            .DisposeWith(disposables);

            this.WhenAnyValue(v => v.ViewModel !.FilterOperation)
            .Select(op => op != FilterOperation.None ? 1 : 0)
            .Subscribe(gridRow => Grid.SetRow(this.NegateCheckBox, gridRow))
            .DisposeWith(disposables);

            this.Bind(this.ViewModel, vm => vm.FilterInput, v => v.InputViewHost.ViewModel)
            .DisposeWith(disposables);
        }
        /// <summary>
        /// Function to create video operation settings. Emotion operations should not have any settings
        /// </summary>
        /// <param name="operation">The currently selected API operation</param>
        /// <returns>Returns default <see cref="VideoOperationSettings"/> for the currently selected operation</returns>
        public VideoOperationSettings CreateVideoOperationSettings(AvailableOperations operation)
        {
            VideoOperationSettings videoOperationSettings = null;

            switch (operation)
            {
            case AvailableOperations.Emotion:
                videoOperationSettings = null;
                break;

            case AvailableOperations.FaceDetection:
                videoOperationSettings = new FaceDetectionOperationSettings();
                break;

            case AvailableOperations.Stabilization:
                videoOperationSettings = new VideoStabilizationOperationSettings();
                break;

            case AvailableOperations.MotionDetection:
                videoOperationSettings = new MotionDetectionOperationSettings()
                {
                    DetectLightChange  = true,
                    FrameSamplingValue = 10,
                    MergeTimeThreshold = 10,
                    SensitivityLevel   = MotionDetectionOperationSettings.SensitivityLevels.Medium
                };
                break;

            case AvailableOperations.Thumbnail:
                videoOperationSettings = new VideoThumbnailOperationSettings()
                {
                    FadeInFadeOut = true,
                    MaxMotionThumbnailDurationInSecs = 10,
                    OutputAudio = true,
                    OutputType  = VideoThumbnailOperationSettings.OutputTypes.Video
                };
                break;

            default:
                break;
            }

            return(videoOperationSettings);
        }
    private void BindFilter(CompositeDisposable disposables)
    {
        this.FilterTypeComboBox.SetEnumValues <FilterType>();

        this.Bind(this.ViewModel, vm => vm.FilterType, v => v.FilterTypeComboBox.SelectedItem)
        .DisposeWith(disposables);

        var filterOperationConverter = GetDefaultService <IEnumConverter <FilterOperation> >();

        this.ViewModel !.AvailableOperations
        .ToObservableChangeSet()
        .Transform(filterOperationConverter.ToString)
        .ToCollection()
        .Subscribe(ops => this.FilterOperationComboBox.Items = ops.ToList())
        .DisposeWith(disposables);

        this.Bind(this.ViewModel, vm => vm.FilterOperation, v => v.FilterOperationComboBox.SelectedItem)
        .DisposeWith(disposables);

        this.WhenAnyValue(v => v.ViewModel !.FilterOperation)
        .Select(op => op != FilterOperation.None)
        .BindTo(this, v => v.FilterOperationComboBox.IsVisible)
        .DisposeWith(disposables);

        this.Bind(this.ViewModel !, vm => vm.IsNegated, v => v.NegateCheckBox.IsChecked)
        .DisposeWith(disposables);

        this.OneWayBind(this.ViewModel !, vm => vm.IsNegated, v => v.ColorStripRectangle.IsVisible)
        .DisposeWith(disposables);

        this.WhenAnyValue(v => v.ViewModel !.FilterOperation)
        .Select(op => op != FilterOperation.None)
        .BindTo(this, v => v.FilterOperationCaption.IsVisible)
        .DisposeWith(disposables);

        this.WhenAnyValue(v => v.ViewModel !.FilterOperation)
        .Select(op => op != FilterOperation.None ? 2 : 1)
        .Subscribe(gridRow => Grid.SetRow(this.NegateGrid, gridRow))
        .DisposeWith(disposables);

        this.Bind(this.ViewModel, vm => vm.FilterInput, v => v.InputViewHost.ViewModel)
        .DisposeWith(disposables);
    }
Example #5
0
        public async Task <IntcodeProgramResult> RunProgram(IntcodeProgramInput programInput)
        {
            CurrentMemory = new long[InitialMemory.Length * 100];
            InitialMemory.CopyTo(CurrentMemory, 0);
            programInput.MemoryInitialisation(CurrentMemory);

            InstructionPointer = 0;
            RelativeBase       = 0;

            Exited  = false;
            Errored = false;
            Paused  = false;

            Inputs.Clear();
            programInput.Inputs.ForEach(AddInput);

            while (!Exited)
            {
                var operationCode     = (int)(((CurrentMemory[InstructionPointer] / (decimal)100) - Math.Floor(CurrentMemory[InstructionPointer] / (decimal)100)) * (decimal)100);
                var matchedOperations = AvailableOperations.Where(op => op.Code == operationCode);

                if (matchedOperations.Count() == 0)
                {
                    Exited  = true;
                    Errored = true;
                }
                else if (matchedOperations.Count() == 1)
                {
                    try
                    {
                        var operationResult = await matchedOperations.Single().RunOperation(InstructionPointer, CurrentMemory, RelativeBase, GetNextInput);

                        Exited |= operationResult.Exit;
                        if (operationResult.Output.HasValue)
                        {
                            AddOutput(operationResult.Output.Value);
                        }
                        if (operationResult.JumpTo.HasValue)
                        {
                            InstructionPointer = operationResult.JumpTo.Value;
                        }
                        else
                        {
                            InstructionPointer += (1 + (ulong)matchedOperations.Single().ParameterCount);
                        }
                        if (operationResult.AdjustRelativeBase.HasValue)
                        {
                            RelativeBase = RelativeBase + operationResult.AdjustRelativeBase.Value;
                        }
                    }
                    catch (IntcodeOperationException ex)
                    {
                        Exited  = true;
                        Errored = true;
                    }
                }
                else
                {
                    throw new Exception("Multiple operation definitions for operation code: " + CurrentMemory[InstructionPointer]);
                }
            }

            var finalMemState = new long[InitialMemory.Length * 100];

            CurrentMemory.CopyTo(finalMemState, 0);

            List <long> finalOutputs;

            lock (OutputLock)
            {
                finalOutputs = Outputs.CloneAsList().ToList();
            }

            return(new IntcodeProgramResult(!Errored, finalMemState, finalOutputs));
        }