/// <summary>
 /// Create a sharpening fitler.
 /// </summary>
 public Sharpen()
 {
     Amount = 0.1;
     runGSFilter = (GSImage image) =>
     {
         Gimp.Procedure procedure =
             new Gimp.Procedure("plug_in_sharpen");
         procedure.Run(image.Image, image.Drawable,
             (int)(Amount * 100));
     };
 }
 /// <summary>
 /// Create a new smootening filter.
 /// </summary>
 public Smoothen()
 {
     Radius = 5;
     runGSFilter = (GSImage image) =>
     {
         Gimp.Procedure procedure =
             new Gimp.Procedure("plug_in_gauss");
         procedure.Run(image.Image, image.Drawable,
             Radius, Radius, 0);
         image.Drawable.Levels(Gimp.HistogramChannel.Value,
             110, 145, 1.0, 0, 255);
     };
 }
            static Samples()
            {
                _list = new List<ImageGenerator>();

                rippleEffect = new GSImageFilter()
                {
                    Name = "Ripple 2x",
                    Description = "period: 20, amplitude: 5, vert. + horiz.",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                           new Gimp.Procedure("plug_in_ripple");
                        procedure.Run(image.Image, image.Drawable,
                            20, 5, 0, 1, 1, 1, 0);
                        procedure.Run(image.Image, image.Drawable,
                            20, 5, 1, 1, 1, 1, 0);
                    }
                };
                _list.Add(new ImageGenerator() {
                    Name = "Euclid + ripple",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { rippleEffect }
                });

                noiseEffect = new GSImageFilter()
                {
                    Name = "Noise",
                    Description = "RGB noise, independent, corelated, amount: 0.2",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                           new Gimp.Procedure("plug_in_rgb_noise");
                        procedure.Run(image.Image, image.Drawable,
                            1, 1, 0.2);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + noise",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { noiseEffect }
                });

                pixelizeEffect = new GSImageFilter()
                {
                    Name = "Pixelize",
                    Description = "block: 4px",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                            new Gimp.Procedure("plug_in_pixelize");
                        procedure.Run(image.Image, image.Drawable, 4);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + pixelize",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { pixelizeEffect }
                });

                canvasEffect = new GSImageFilter()
                {
                    Name = "Canvas",
                    Description = "direction: 0, depth: 4",
                    runGSFilter = (GSImage image) =>
                    {
                        Gimp.Procedure procedure =
                           new Gimp.Procedure("plug_in_apply_canvas");
                        procedure.Run(image.Image, image.Drawable, 0, 4);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + canvas",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { canvasEffect }
                });

                _list.Add(new ImageGenerator()
                {
                    Name = "Euclid + pixelize + ripple",
                    SpotFunction = SpotFunction.Samples.euclidDot,
                    Effects = { pixelizeEffect, rippleEffect }
                });

                patternEffect = new GSImageFilter()
                {
                    Name = "Pattern",
                    Description = "Veryovka-Buchanan: current pattern + histogram equalization",
                    runGSFilter = (GSImage image) =>
                    {
                        image.Drawable.Fill(Gimp.FillType.Pattern);
                        image.Drawable.Equalize(false);
                    }
                };
                _list.Add(new ImageGenerator()
                {
                    Name = "Veryovka-Buchanan",
                    SpotFunction = SpotFunction.Samples.nullSpot,
                    Effects = { patternEffect }
                });
            }