Accord.Imaging.Filters.CanvasCrop.ProcessFilter C# (CSharp) Method

ProcessFilter() protected method

Process the filter on the specified image.
protected ProcessFilter ( UnmanagedImage image ) : void
image UnmanagedImage Source image data.
return void
        protected override unsafe void ProcessFilter(UnmanagedImage image)
        {
            int pixelSize = Image.GetPixelFormatSize(image.PixelFormat) / 8;

            // get image width and height
            int width = image.Width;
            int height = image.Height;
            int offset = image.Stride - width * pixelSize;

            // do the job
            byte* ptr = (byte*)image.ImageData.ToPointer();

            if (image.PixelFormat == PixelFormat.Format8bppIndexed)
            {
                // grayscale image
                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++, ptr++)
                    {
                        if (!region.Contains(x, y))
                        {
                            *ptr = fillGray;
                        }
                    }
                    ptr += offset;
                }
            }
            else
            {
                // color image
                for (int y = 0; y < height; y++)
                {
                    for (int x = 0; x < width; x++, ptr += pixelSize)
                    {
                        if (!region.Contains(x, y))
                        {
                            // red
                            ptr[RGB.R] = fillRed;
                            // green
                            ptr[RGB.G] = fillGreen;
                            // blue
                            ptr[RGB.B] = fillBlue;
                        }
                    }
                    ptr += offset;
                }
            }
        }
    }