Exemple #1
0
        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();
                });
            });
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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.");
        }