public BasicMatrixFilterDataProviderVM(FilterVM filter) : base(filter) { if (!(filter.UnderlayingFilter is BasicMatrixFilter)) { throw new ArgumentException("BasicMatrixFilterDataVM can only handle BasicMatrixFilter type of underlaying filter (is: " + filter.UnderlayingFilter.GetType() + " | must be: BasicMatrixFilter)"); } concreteFilter = (BasicMatrixFilter)filter.UnderlayingFilter; Matrix = new ObservableCollection <ObservableCollection <PrimitiveWrapper <double> > >(); IncrementHeight = new RelayCommand(() => { Height++; }); DecrementHeight = new RelayCommand(() => { Height--; }, (_) => { return(Height > 1); }); IncrementWidth = new RelayCommand(() => { Width++; }); DecrementWidth = new RelayCommand(() => { Width--; }, (_) => { return(Width > 1); }); for (int i = 0; i < concreteFilter.FilterData.GetLength(0); i++) { Matrix.Add(new ObservableCollection <PrimitiveWrapper <double> >()); for (int j = 0; j < concreteFilter.FilterData.GetLength(1); j++) { Matrix[i].Add(new PrimitiveWrapper <double>(concreteFilter.FilterData[i, j])); } } Width = Matrix.Count; Height = Matrix[0].Count; this.PropertyChanged += OnDimensionsChanged; }
public GaussianFilterDataProviderVM(FilterVM filter) : base(filter) { if (!(filter.UnderlayingFilter is BasicMatrixFilter)) { throw new ArgumentException("GaussianFilterDataVM can only handle BasicMatrixFilter type of underlaying filter"); } width = 3; height = 3; concreteFilter = (BasicMatrixFilter)filter.UnderlayingFilter; }
public FilterVM CreateNewFilter() { BasicMatrixFilter concreteFilter = new BasicMatrixFilter (new double[3, 3] { { 1.0, 1.0, 1.0 }, { 1.0, 1.0, 1.0 }, { 1.0, 1.0, 1.0 } }); FilterVM vm = new FilterVM(concreteFilter); vm.Name = "New Basic Filter"; vm.DataVM = new BasicMatrixFilterDataProviderVM(vm); return(vm); }