コード例 #1
0
ファイル: Mirror.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            bool flipX = false;

            DA.GetData(1, ref flipX);

            bool flipY = false;

            DA.GetData(2, ref flipY);

            Filter filter = new Af.Mirror(flipY, flipX);

            image.Filters.Add(new Af.Mirror(flipY, flipX));


            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #2
0
ファイル: Polar.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            double angle = 0;

            DA.GetData(1, ref angle);

            double depth = 0;

            DA.GetData(2, ref depth);

            bool toPolar = true;

            DA.GetData(3, ref toPolar);

            Filter filter = new Af.Polar(toPolar, depth, angle, false, false);

            image.Filters.Add(new Af.Polar(toPolar, depth, angle, false, false));

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #3
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            Filter filter = new Extract((Extract.Modes)mode);

            image.Filters.Add(new Extract((Extract.Modes)mode));

            message = ((Extract.Modes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #4
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            Color color = Color.Black;

            DA.GetData(1, ref color);

            Filter filter = new Af.Shrink(color);

            image.Filters.Add(new Af.Shrink(color));


            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #5
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            int width = 100;

            DA.GetData(2, ref width);

            int height = 100;

            DA.GetData(3, ref height);

            Filter filter = new Af.Resize(width, height, (Af.Resize.Modes)mode);

            image.Filters.Add(new Af.Resize(width, height, (Af.Resize.Modes)mode));

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #6
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            Rectangle3d region = new Rectangle3d();

            DA.GetData(1, ref region);

            bool original = false;

            DA.GetData(2, ref original);

            Color color = Color.Black;

            DA.GetData(3, ref color);

            Filter filter = new Af.Crop(original, color, region.ToDrawingRect(image.Bitmap.Height));

            image.Filters.Add(new Af.Crop(original, color, region.ToDrawingRect(image.Bitmap.Height)));


            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #7
0
ファイル: SwapChannel.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int source = 0;

            DA.GetData(1, ref source);

            int target = 0;

            DA.GetData(2, ref target);

            image.SwapChannel((Image.Channels)source, (Image.Channels)target);

            DA.SetData(0, new Image(image.Bitmap));
        }
コード例 #8
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            Point3d point = new Point3d(100, 100, 0);

            DA.GetData(1, ref point);

            Color color = Color.Black;

            DA.GetData(2, ref color);
            point.Y = -point.Y;

            Filter filter = new Af.Move(color, point.ToDrawingPoint());

            image.Filters.Add(new Af.Move(color, point.ToDrawingPoint()));


            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #9
0
ファイル: SwapChannels.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int alpha = 0;

            DA.GetData(1, ref alpha);

            int red = 1;

            DA.GetData(2, ref red);

            int green = 2;

            DA.GetData(3, ref green);

            int blue = 3;

            DA.GetData(4, ref blue);

            image.SwapChannels((Image.Channels)alpha, (Image.Channels)red, (Image.Channels)green, (Image.Channels)blue);

            DA.SetData(0, image);
        }
コード例 #10
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            Interval numValA = new Interval(1, 100);

            DA.GetData(1, ref numValA);

            Interval numValB = new Interval(1, 100);

            DA.GetData(2, ref numValB);

            bool unique = false;

            DA.GetData(3, ref unique);

            bool blobs = false;

            DA.GetData(4, ref blobs);

            bool coupled = false;

            DA.GetData(5, ref coupled);

            Filter filter = new Filter();

            if (unique)
            {
                filter = new BlobsUnique(numValA.ToDomain(), numValB.ToDomain(), blobs, coupled);
                image.Filters.Add(new BlobsUnique(numValA.ToDomain(), numValB.ToDomain(), blobs, coupled));
            }
            else
            {
                filter = new BlobsFilter(numValA.ToDomain(), numValB.ToDomain(), coupled);
                image.Filters.Add(new BlobsFilter(numValA.ToDomain(), numValB.ToDomain(), coupled));
            }


            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #11
0
ファイル: ImageToBitmap.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int loops = 0;

            DA.GetData(1, ref loops);

            DA.SetData(0, image.GetFilteredBitmap(loops));
        }
コード例 #12
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double scale = 1.0;

            DA.GetData(2, ref scale);

            int width  = (int)(image.Bitmap.Width * scale);
            int height = (int)(image.Bitmap.Height * scale);

            if (width < 10)
            {
                width = 10;
            }
            if (height < 10)
            {
                height = 10;
            }
            Filter filter = new Af.Resize(width, height, (Af.Resize.Modes)mode);

            image.Filters.Add(new Af.Resize(width, height, (Af.Resize.Modes)mode));

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #13
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            List <Filter> filters = new List <Filter>();

            DA.GetDataList <Filter>(1, filters);

            image.Filters.AddRange(filters);

            DA.SetData(0, image);
        }
コード例 #14
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double angle = 0;

            DA.GetData(2, ref angle);

            bool original = false;

            DA.GetData(3, ref original);

            Color color = Color.Black;

            DA.GetData(4, ref color);

            Filter filter = new Af.Rotate(angle, original, color, (Af.Rotate.Modes)mode);

            image.Filters.Add(new Af.Rotate(angle, original, color, (Af.Rotate.Modes)mode));

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #15
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numValA = 0.5;

            DA.GetData(2, ref numValA);

            double numValB = 0.5;

            DA.GetData(3, ref numValB);

            int numValC = 1;

            DA.GetData(4, ref numValC);

            Filter filter = new Filter();

            int[] indices = new int[] { 2, 3, 4 };

            switch ((FilterModes)mode)
            {
            case FilterModes.Otsu:
                filter = new Otsu();
                ClearParameters(indices);
                image.Filters.Add(new Otsu());
                break;

            case FilterModes.SIS:
                filter = new SIS();
                ClearParameters(indices);
                image.Filters.Add(new SIS());
                break;

            case FilterModes.Bradley:
                SetParameter(2, "B", "Brightness", "Brightness difference limit");
                SetParameter(3, "S", "Size", "Window size");
                SetParameter(4);
                filter = new Bradley(numValA, (int)numValB);
                image.Filters.Add(new Bradley(numValA, (int)numValB));
                break;

            case FilterModes.Iterative:
                SetParameter(2, "M", "Minimum", "Minimum error value");
                SetParameter(3, "T", "Threshold", "Threshold value");
                SetParameter(4);
                filter = new Iterative(numValA, numValB);
                image.Filters.Add(new Iterative(numValA, numValB));
                break;

            case FilterModes.Nilback:
                SetParameter(2, "C", "C", "Mean offset C");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new Nilback(numValA, numValB, numValC);
                image.Filters.Add(new Nilback(numValA, numValB, numValC));
                break;

            case FilterModes.Sauvola:
                SetParameter(2, "R", "R", "Dynamic range");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new Sauvola(numValA, numValB, numValC);
                image.Filters.Add(new Sauvola(numValA, numValB, numValC));
                break;

            case FilterModes.WolfJolion:
                SetParameter(2, "R", "R", "Dynamic range");
                SetParameter(3, "K", "K", "Parameter K");
                SetParameter(4, "R", "Radius", "Filter convolution radius");
                filter = new WolfJolion(numValA, numValB, numValC);
                image.Filters.Add(new WolfJolion(numValA, numValB, numValC));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #16
0
ファイル: FilterFilter.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            Interval valA = new Interval(0, 1);

            DA.GetData(2, ref valA);
            Interval valB = new Interval(0, 1);

            DA.GetData(3, ref valB);
            Interval valC = new Interval(0, 1);

            DA.GetData(4, ref valC);

            bool flip = true;

            DA.GetData(5, ref flip);

            Color color = Color.Black;

            DA.GetData(6, ref color);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.Channel:
                SetParameter(2, "R", "Red", "[0-1] Unitized adjustment value");
                SetParameter(3, "G", "Green", "[0-1] Unitized adjustment value");
                SetParameter(4, "B", "Blue", "[0-1] Unitized adjustment value");
                SetParameter(5, "F", "Outside", "Flip between inside and outside range");
                filter = new Channel(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip);
                image.Filters.Add(new Channel(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip));
                break;

            case FilterModes.HSL:
                SetParameter(2, "H", "Hue", "[0-1] Unitized adjustment value");
                SetParameter(3, "S", "Saturation", "[0-1] Unitized adjustment value");
                SetParameter(4, "L", "Luminance", "[0-1] Unitized adjustment value");
                SetParameter(5, "F", "Outside", "Flip between inside and outside range");
                SetParameter(6, "C", "Color", "Replacement Color");
                filter = new ColorFilter(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color);
                image.Filters.Add(new ColorFilter(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color));
                break;

            case FilterModes.RGB:
                SetParameter(2, "R", "Red", "[0-1] Unitized adjustment value");
                SetParameter(3, "G", "Green", "[0-1] Unitized adjustment value");
                SetParameter(4, "B", "Blue", "[0-1] Unitized adjustment value");
                SetParameter(5, "F", "Outside", "Flip between inside and outside range");
                SetParameter(6, "C", "Color", "Replacement Color");
                filter = new HSL(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color);
                image.Filters.Add(new HSL(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color));
                break;

            case FilterModes.YCbCr:
                SetParameter(2, "Y", "Y", "[0-1] Unitized adjustment value");
                SetParameter(3, "Cb", "Cb", "[0-1] Unitized adjustment value");
                SetParameter(4, "Cr", "Cr", "[0-1] Unitized adjustment value");
                SetParameter(5, "F", "Outside", "Flip between inside and outside range");
                SetParameter(6, "C", "Color", "Replacement Color");
                filter = new YCbCr(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color);
                image.Filters.Add(new YCbCr(valA.ToDomain(), valB.ToDomain(), valC.ToDomain(), flip, color));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #17
0
ファイル: FilterFigure.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            bool valueA = false;

            DA.GetData(2, ref valueA);

            int valueB = 1;

            DA.GetData(3, ref valueB);

            int valueC = 1;

            DA.GetData(4, ref valueC);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.Closing:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new Closing();
                image.Filters.Add(new Closing());
                break;

            case FilterModes.Dilation:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new Dilation();
                image.Filters.Add(new Dilation());
                break;

            case FilterModes.DilationBinary:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new DilationBinary();
                image.Filters.Add(new DilationBinary());
                break;

            case FilterModes.Erosion:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new Erosion();
                image.Filters.Add(new Erosion());
                break;

            case FilterModes.ErosionBinary:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new ErosionBinary();
                image.Filters.Add(new ErosionBinary());
                break;

            case FilterModes.HatBottom:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new HatBottom();
                image.Filters.Add(new HatBottom());
                break;

            case FilterModes.HatTop:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new HatTop();
                image.Filters.Add(new HatTop());
                break;

            case FilterModes.Opening:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new Opening();
                image.Filters.Add(new Opening());
                break;

            case FilterModes.Skeletonization:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new Skeletonization();
                image.Filters.Add(new Skeletonization());
                break;

            case FilterModes.SkeletonizationZhangSuen:
                SetParameter(2);
                SetParameter(3);
                SetParameter(4);
                filter = new SkeletonizationZhangSuen();
                image.Filters.Add(new SkeletonizationZhangSuen());
                break;

            case FilterModes.HorizontalBands:
                SetParameter(2, "B", "Borders", "Process gaps");
                SetParameter(3, "G", "Gap", "The pixel gap size");
                SetParameter(4);
                filter = new BandsHorizontal(valueB, valueA);
                image.Filters.Add(new BandsHorizontal(valueB, valueA));
                break;

            case FilterModes.VerticalBands:
                SetParameter(2, "B", "Borders", "Process gaps");
                SetParameter(3, "G", "Gap", "The pixel gap size");
                SetParameter(4);
                filter = new BandsVertical(valueB, valueA);
                image.Filters.Add(new BandsVertical(valueB, valueA));
                break;

            case FilterModes.FillHoles:
                SetParameter(2, "B", "Borders", "Process gaps");
                SetParameter(3, "W", "Width", "The pixel threshold");
                SetParameter(4, "H", "Height", "The pixel threshold");
                filter = new FillHoles(valueC, valueB, valueA);
                image.Filters.Add(new FillHoles(valueC, valueB, valueA));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #18
0
ファイル: FilterLevels.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            Interval numValA = new Interval(0, 1);

            DA.GetData(2, ref numValA);

            Interval numValB = new Interval(0, 1);

            DA.GetData(3, ref numValB);

            Interval numValC = new Interval(0, 1);

            DA.GetData(4, ref numValC);

            Interval numValD = new Interval(0, 1);

            DA.GetData(5, ref numValD);

            Interval numValE = new Interval(0, 1);

            DA.GetData(6, ref numValE);

            Interval numValF = new Interval(0, 1);

            DA.GetData(7, ref numValF);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.HSL:
                SetParameter(2, "Si", "Saturation In", "Domain [0,1]");
                SetParameter(3, "So", "Saturation Out", "Domain [0,1]");
                SetParameter(4, "Li", "Luminance In", "Domain [0,1]");
                SetParameter(5, "Lo", "Luminance Out", "Domain [0,1]");
                SetParameter(6, "-", "Not Used", "Parameter not used by this filter");
                SetParameter(7, "-", "Not Used", "Parameter not used by this filter");
                filter = new HSL(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain());
                image.Filters.Add(new HSL(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain()));
                break;

            case FilterModes.RGB:
                SetParameter(2, "Ri", "Red In", "Domain [0,1]");
                SetParameter(3, "Ro", "Red Out", "Domain [0,1]");
                SetParameter(4, "Gi", "Green In", "Domain [0,1]");
                SetParameter(5, "Go", "Green Out", "Domain [0,1]");
                SetParameter(6, "Bi", "Blue In", "Domain [0,1]");
                SetParameter(7, "Bo", "Blue Out", "Domain [0,1]");
                filter = new RGB(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain());
                image.Filters.Add(new RGB(numValA.ToDomain(), numValB.ToDomain(), numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain()));
                break;

            case FilterModes.YCbCr:
                SetParameter(2, "Ri", "Red In", "Domain [0,1]");
                SetParameter(3, "Ro", "Red Out", "Domain [0,1]");
                SetParameter(4, "Yi", "Y In", "Domain [0,1]");
                SetParameter(5, "Yo", "Y Out", "Domain [0,1]");
                SetParameter(6, "Bi", "Blue In", "Domain [0,1]");
                SetParameter(7, "Bo", "Blue Out", "Domain [0,1]");
                filter = new YCbCr(numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain(), numValA.ToDomain(), numValB.ToDomain());
                image.Filters.Add(new YCbCr(numValC.ToDomain(), numValD.ToDomain(), numValE.ToDomain(), numValF.ToDomain(), numValA.ToDomain(), numValB.ToDomain()));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #19
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            IGH_Goo gooA    = null;
            Bitmap  overlay = new Bitmap(100, 100);

            if (DA.GetData(2, ref gooA))
            {
                if (goo.TryGetBitmap(ref overlay))
                {
                    ;
                }
            }

            double numVal = 1.0;

            DA.GetData(3, ref numVal);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.Add:
                filter = new Add(overlay);
                image.Filters.Add(new Add(overlay));
                break;

            case FilterModes.Subtract:
                filter = new Subtract(overlay);
                image.Filters.Add(new Subtract(overlay));
                break;

            case FilterModes.Multiply:
                filter = new Multiply(overlay);
                image.Filters.Add(new Multiply(overlay));
                break;

            case FilterModes.Divide:
                filter = new Divide(overlay);
                image.Filters.Add(new Divide(overlay));
                break;

            case FilterModes.Euclidean:
                filter = new Euclidean(overlay, (int)numVal);
                image.Filters.Add(new Euclidean(overlay, (int)numVal));
                break;

            case FilterModes.FlatField:
                filter = new FlatField(overlay);
                image.Filters.Add(new FlatField(overlay));
                break;

            case FilterModes.Intersect:
                filter = new Intersect(overlay);
                image.Filters.Add(new Intersect(overlay));
                break;

            case FilterModes.Merge:
                filter = new Merge(overlay);
                image.Filters.Add(new Merge(overlay));
                break;

            case FilterModes.Morph:
                filter = new Morph(overlay, numVal);
                image.Filters.Add(new Morph(overlay, numVal));
                break;

            case FilterModes.MoveTowards:
                filter = new MoveTowards(overlay, (int)numVal);
                image.Filters.Add(new MoveTowards(overlay, (int)numVal));
                break;

            case FilterModes.Simple:
                filter = new Simple(overlay, (int)numVal);
                image.Filters.Add(new Simple(overlay, (int)numVal));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #20
0
ファイル: FilterEffects.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numValA = 0;

            DA.GetData(2, ref numValA);

            double numValB = 0;

            DA.GetData(3, ref numValB);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.Additive:
                SetParameter(2);
                SetParameter(3);
                filter = new Additive();
                image.Filters.Add(new Additive());
                break;

            case FilterModes.Daube:
                SetParameter(2, "S", "Size", "[0-1] Unitized adjustment value");
                SetParameter(3);
                filter = new Daube(numValA);
                image.Filters.Add(new Daube(numValA));
                break;

            case FilterModes.SaltPepper:
                SetParameter(2, "N", "Noise", "[0-1] Unitized adjustment value");
                SetParameter(3);
                filter = new SaltPepper(numValA);
                image.Filters.Add(new SaltPepper(numValA));
                break;

            case FilterModes.Jitter:
                SetParameter(2, "R", "Radius", "[0-1] Unitized adjustment value");
                SetParameter(3);
                filter = new Jitter(numValA);
                image.Filters.Add(new Jitter(numValA));
                break;

            case FilterModes.Kuwahara:
                SetParameter(2, "S", "Size", "[0-1] Unitized adjustment value");
                SetParameter(3);
                filter = new Kuwahara(numValA);
                image.Filters.Add(new Kuwahara(numValA));
                break;

            case FilterModes.Posterize:
                SetParameter(2, "I", "Interval", "[0-1] Unitized adjustment value");
                SetParameter(3);
                filter = new Posterize(numValA);
                image.Filters.Add(new Posterize(numValA));
                break;

            case FilterModes.GaussianBlur:
                SetParameter(2, "X", "Sigma", "[0-1] Unitized adjustment value");
                SetParameter(3, "S", "Size", "[0-1] Unitized adjustment value");
                filter = new GaussianBlur(numValA, numValB);
                image.Filters.Add(new GaussianBlur(numValA, numValB));
                break;

            case FilterModes.Pixellate:
                SetParameter(2, "W", "Width", "[0-1] Unitized adjustment value");
                SetParameter(3, "H", "Height", "[0-1] Unitized adjustment value");
                filter = new Pixellate(numValA, numValB);
                image.Filters.Add(new Pixellate(numValA, numValB));
                break;

            case FilterModes.Blur:
                SetParameter(2, "D", "Divisor", "[0-1] Unitized adjustment value");
                SetParameter(3, "T", "Threshold", "[0-1] Unitized adjustment value");
                filter = new Blur(numValA, numValB);
                image.Filters.Add(new Blur(numValA, numValB));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #21
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo = null;
            Bitmap  top = new Bitmap(100, 100);

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetBitmap(ref top))
            {
                return;
            }

            Mp.Layer topLayer = new Mp.Layer(top);

            IGH_Goo gooT   = null;
            Bitmap  bottom = new Bitmap(100, 100);

            if (!DA.GetData(1, ref gooT))
            {
                return;
            }
            if (!gooT.TryGetBitmap(ref bottom))
            {
                return;
            }

            Mp.Layer bottomLayer = new Mp.Layer(bottom);

            IGH_Goo gooM    = null;
            Image   img     = new Image();
            bool    hasMask = false;
            Bitmap  mask    = new Bitmap(100, 100);

            if (DA.GetData(2, ref gooM))
            {
                if (gooM.TryGetImage(ref img))
                {
                    hasMask = true;
                    img.SwapChannel(Image.Channels.Luminance, Image.Channels.Alpha);
                    mask = img.Bitmap;
                }
            }

            int blendMode = 0;

            DA.GetData(3, ref blendMode);

            double opacity = 1.0;

            DA.GetData(4, ref opacity);

            topLayer.BlendMode = (Mp.Layer.BlendModes)blendMode;
            topLayer.Opacity   = 100 * opacity;
            if (hasMask)
            {
                topLayer.Mask = mask;
            }

            Mp.Composition composition = new Mp.Composition();
            composition.Layers.Add(bottomLayer);
            composition.Layers.Add(topLayer);

            DA.SetData(0, new Image(composition.GetBitmap()));
        }
コード例 #22
0
ファイル: FilterAdjust.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numVal = 0.5;

            DA.GetData(2, ref numVal);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.GrayWorld:
                SetParameter(2);
                filter = new GrayWorld();
                break;

            case FilterModes.Histogram:
                SetParameter(2);
                filter = new Histogram();
                break;

            case FilterModes.Invert:
                SetParameter(2);
                filter = new Invert();
                break;

            case FilterModes.Stretch:
                SetParameter(2);
                filter = new Stretch();
                break;

            case FilterModes.WhitePatch:
                SetParameter(2);
                filter = new WhitePatch();
                break;

            case FilterModes.Sepia:
                SetParameter(2);
                filter = new Sepia();
                break;

            case FilterModes.RGChromacity:
                SetParameter(2);
                filter = new RGChromacity();
                break;

            case FilterModes.Brightness:
                SetParameter(2, "V", "Adjust Value", "[0-1] Unitized adjustment value");
                filter = new Brightness(numVal);
                break;

            case FilterModes.Contrast:
                SetParameter(2, "V", "Factor Value", "[0-1] Unitized adjustment value");
                filter = new Contrast(numVal);
                break;

            case FilterModes.Gamma:
                SetParameter(2, "V", "Gamma Value", "[0-1] Unitized adjustment value");
                filter = new Gamma(numVal);
                break;

            case FilterModes.Hue:
                SetParameter(2, "V", "Hue Value", "[0-1] Unitized adjustment value");
                filter = new Hue(numVal);
                break;

            case FilterModes.Saturation:
                SetParameter(2, "V", "Adjust Value", "[0-1] Unitized adjustment value");
                filter = new Saturation(numVal);
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            image.Filters.Add(filter);

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #23
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numValA = 1.0;

            DA.GetData(2, ref numValA);

            double numValB = 1.0;

            DA.GetData(3, ref numValB);

            double numValC = 1.0;

            DA.GetData(3, ref numValC);

            Filter filter = new Filter();

            int[] indices = new int[] { 2, 3, 4 };

            switch ((FilterModes)mode)
            {
            case FilterModes.BT709:
                ClearParameter(indices);
                filter = new GrayscaleBT709();
                image.Filters.Add(new GrayscaleBT709());
                break;

            case FilterModes.RMY:
                ClearParameter(indices);
                filter = new GrayscaleRMY();
                image.Filters.Add(new GrayscaleRMY());
                break;

            case FilterModes.Y:
                ClearParameter(indices);
                filter = new GrayscaleY();
                image.Filters.Add(new GrayscaleY());
                break;

            case FilterModes.Simple:
                SetParameter(2, "R", "Red", "The Red coefficient");
                SetParameter(3, "G", "Green", "The Green coefficient");
                SetParameter(4, "B", "Blue", "The Blue coefficient");
                filter = new Simple(numValA, numValB, numValC);
                image.Filters.Add(new Simple(numValA, numValB, numValC));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #24
0
ファイル: FilterEdges.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            double numValA = 1.0;

            DA.GetData(2, ref numValA);

            int numValB = 1;

            DA.GetData(3, ref numValB);

            int numValC = 1;

            DA.GetData(4, ref numValC);

            int numValD = 1;

            DA.GetData(5, ref numValD);

            Filter filter = new Filter();

            int[] indices = new int[] { 2, 3, 4, 5 };

            switch ((FilterModes)mode)
            {
            case FilterModes.Canny:
                SetParameter(2, "X", "Sigma", "Gaussian sigma");
                SetParameter(3, "S", "Size", "Gaussian size");
                SetParameter(4, "L", "Low Threshold", "High threshold value used for hysteresis");
                SetParameter(5, "H", "High Threshold", "Low threshold value used for hysteresis");
                filter = new Canny(numValA, numValB, numValC, numValD);
                image.Filters.Add(new Canny());
                break;

            case FilterModes.Difference:
                ClearParameter(indices);
                filter = new Difference();
                image.Filters.Add(new Difference());
                break;

            case FilterModes.Homogeneity:
                ClearParameter(indices);
                filter = new Homogeneity();
                image.Filters.Add(new Homogeneity());
                break;

            case FilterModes.Kirsch:
                ClearParameter(indices);
                filter = new Kirsch();
                image.Filters.Add(new Kirsch());
                break;

            case FilterModes.Robinson:
                ClearParameter(indices);
                filter = new Robinson();
                image.Filters.Add(new Robinson());
                break;

            case FilterModes.Sobel:
                ClearParameter(indices);
                filter = new Sobel();
                image.Filters.Add(new Sobel());
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #25
0
ファイル: FilterSharpen.cs プロジェクト: interopxyz/Macaw.GH
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            int numValA = 1;

            DA.GetData(2, ref numValA);

            int numValB = 1;

            DA.GetData(3, ref numValB);

            Filter filter = new Filter();

            int[] indices = new int[] { 2, 3 };

            switch ((FilterModes)mode)
            {
            case FilterModes.Adaptive:
                ClearParameters(indices);
                filter = new Adaptive();
                image.Filters.Add(new Adaptive());
                break;

            case FilterModes.Conservative:
                ClearParameters(indices);
                filter = new Conservative();
                image.Filters.Add(new Conservative());
                break;

            case FilterModes.Median:
                ClearParameters(indices);
                filter = new Median();
                image.Filters.Add(new Median());
                break;

            case FilterModes.Gaussian:
                SetParameter(2, "D", "Divisor", "Division factor");
                SetParameter(3, "T", "Threshold", "Threshold weighted sum");
                filter = new Gaussian(numValA, numValB);
                image.Filters.Add(new Gaussian(numValA, numValB));
                break;

            case FilterModes.HighBoost:
                SetParameter(2, "D", "Divisor", "Division factor");
                SetParameter(3, "T", "Threshold", "Threshold weighted sum");
                filter = new HighBoost(numValA, numValB);
                image.Filters.Add(new HighBoost(numValA, numValB));
                break;

            case FilterModes.Mean:
                SetParameter(2, "D", "Divisor", "Division factor");
                SetParameter(3, "T", "Threshold", "Threshold weighted sum");
                filter = new Mean(numValA, numValB);
                image.Filters.Add(new Mean(numValA, numValB));
                break;

            case FilterModes.Simple:
                SetParameter(2, "D", "Divisor", "Division factor");
                SetParameter(3, "T", "Threshold", "Threshold weighted sum");
                filter = new Simple(numValA, numValB);
                image.Filters.Add(new Simple(numValA, numValB));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }
コード例 #26
0
        /// <summary>
        /// This is the method that actually does the work.
        /// </summary>
        /// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            IGH_Goo goo   = null;
            Image   image = new Image();

            if (!DA.GetData(0, ref goo))
            {
                return;
            }
            if (!goo.TryGetImage(ref image))
            {
                return;
            }

            int mode = 0;

            DA.GetData(1, ref mode);

            int numVal = 0;

            DA.GetData(2, ref numVal);

            Filter filter = new Filter();

            switch ((FilterModes)mode)
            {
            case FilterModes.Bayer:
                filter = new Bayer();
                image.Filters.Add(new Bayer());
                break;

            case FilterModes.Ordered:
                filter = new Ordered();
                image.Filters.Add(new Ordered());
                break;

            case FilterModes.Burkes:
                filter = new Burkes(numVal);
                image.Filters.Add(new Burkes(numVal));
                break;

            case FilterModes.Carry:
                filter = new Carry(numVal);
                image.Filters.Add(new Carry(numVal));
                break;

            case FilterModes.FloydSteinberg:
                filter = new FloydSteinberg(numVal);
                image.Filters.Add(new FloydSteinberg(numVal));
                break;

            case FilterModes.JarvisJudiceNinke:
                filter = new JarvisJudiceNinke(numVal);
                image.Filters.Add(new JarvisJudiceNinke(numVal));
                break;

            case FilterModes.Sierra:
                filter = new Sierra(numVal);
                image.Filters.Add(new Sierra(numVal));
                break;

            case FilterModes.Stucki:
                filter = new Stucki(numVal);
                image.Filters.Add(new Stucki(numVal));
                break;
            }

            message = ((FilterModes)mode).ToString();
            UpdateMessage();

            DA.SetData(0, image);
            DA.SetData(1, filter);
        }