private void DisplayMask(Complex[,] channel) { int width = channel.GetLength(0); int height = channel.GetLength(1); Bitmap mask = RegionMask.GetEmptyBitmap(width, height, Color.White); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { if (channel[i, j].Re == 0 && channel[i, j].Im == 0) { mask.SetPixel(i, j, Color.Black); } } } Task.Run(() => { Application.Current.Dispatcher.Invoke(delegate { ImageView imageView = new ImageView("Mask", mask); imageView.Show(); }); }); }
protected override void ProcessImage(object sender) { try { int splitting = int.Parse(this.Splitting); int merging = int.Parse(this.Merging); if (splitting < 0 || merging < 0 || splitting > 255 || merging > 255) { throw new ArgumentException("Invalid input value!\nSplitting and merging musts be an ints between 0 and 255."); } List <RegionMask> masks = RegionMask.SplitAndMergeImageRegions(this.WorkspaceViewModel.Input, splitting, merging); Task.Run(() => { Application.Current.Dispatcher.Invoke(delegate { Window imageMasksWindow = new ImageMasksView(masks); imageMasksWindow.Show(); }); }); } catch (Exception e) { Notify.Error(e.Message); } }
public void Test(int x, int y, bool expected) { var position = new Vector(x, y); var region = Mock.Of <Region>(r => r.Contains(position) == expected); var mask = new RegionMask(region); var extent = Mock.Of <Extent>(); Assert.That(mask.Test(extent, new Vector(x, y)), Is.EqualTo(expected)); }
private void Mask(CommandArgs args) { var parameters = args.Parameters; var player = args.Player; if (parameters.Count == 0 || parameters.Count == 2) { player.SendErrorMessage("Syntax: //mask <mask>"); return; } var session = Plugin.GetOrCreateSession(player); Mask mask; if (parameters.Count == 1) { var inputMask = parameters[0]; if (inputMask.Equals("#none", StringComparison.OrdinalIgnoreCase)) { mask = new EmptyMask(); } else if (inputMask.Equals("#selection", StringComparison.OrdinalIgnoreCase)) { mask = new RegionMask(session.Selection); } else { var state = new TileStateParser().Parse(inputMask); if (state == null) { player.SendErrorMessage($"Invalid state '{inputMask}'."); return; } mask = new TemplateMask(state); } } else { var inputType = parameters[0]; if (!Parsers.TryGetValue(inputType, out var parser)) { player.SendErrorMessage($"Invalid mask type '{inputType}'."); return; } var inputComparison = parameters[1]; var negated = false; if (inputComparison.Equals("!=", StringComparison.OrdinalIgnoreCase)) { negated = true; } else if (!inputComparison.Equals("=", StringComparison.OrdinalIgnoreCase)) { player.SendErrorMessage($"Invalid mask comparison '{inputComparison}'."); return; } var inputPattern = string.Join(" ", parameters.Skip(2)); var pattern = parser.Parse(inputPattern); if (pattern == null) { player.SendErrorMessage($"Invalid pattern '{inputPattern}'."); return; } mask = new TemplateMask(pattern); if (negated) { mask = new NegatedMask(mask); } } session.Mask = mask; player.SendSuccessMessage("Set mask."); }