public GreenWrapperFilter()
            : base()
        {
            Name = "Green";
            ShortDescription = "Green";

            _stampFilter = new StampFilter(3, 0.3);
            _colorSwapFilter = new ColorSwapFilter(Windows.UI.Color.FromArgb(255, 255, 255, 255), Windows.UI.Color.FromArgb(255, 0, 255, 0), 0.1, false, false);
        }
        public static Bitmap SwapRGB(Bitmap bitmap, ColorSwapFilter swapFilterData)
        {
            BitmapData sourceData = bitmap.LockBits
                                        (new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                        ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

            byte[] resultBuffer = new byte[sourceData.Stride * sourceData.Height];
            Marshal.Copy(sourceData.Scan0, resultBuffer, 0, resultBuffer.Length);
            bitmap.UnlockBits(sourceData);

            byte sourceBlue = 0, resultBlue = 0,
                 sourceGreen = 0, resultGreen = 0,
                 sourceRed = 0, resultRed = 0,
                 sourceAlpha = 0, resultAlpha = 0;
            byte byte2 = 2, maxValue = 255;

            for (int k = 0; k < resultBuffer.Length; k += 4)
            {
                sourceRed   = resultBuffer[k];
                sourceGreen = resultBuffer[k + 1];
                sourceBlue  = resultBuffer[k + 2];
                sourceAlpha = resultBuffer[k + 3];



                switch (swapFilterData.SwapType)
                {
                case ColorSwapFilter.ColorSwapType.FixDDS:
                {
                    resultBlue = sourceRed;
                    resultRed  = sourceBlue;
                    break;
                }
                }

                switch (swapFilterData.CompRed)
                {
                case ColorSwapFilter.Red.Red:
                    resultRed = sourceRed;
                    break;

                case ColorSwapFilter.Red.Green:
                    resultRed = sourceGreen;
                    break;

                case ColorSwapFilter.Red.Blue:
                    resultRed = sourceBlue;
                    break;

                case ColorSwapFilter.Red.Alpha:
                    resultRed = sourceAlpha;
                    break;

                case ColorSwapFilter.Red.One:
                    resultRed = 255;
                    break;

                case ColorSwapFilter.Red.Zero:
                    resultRed = 0;
                    break;
                }
                switch (swapFilterData.CompGreen)
                {
                case ColorSwapFilter.Green.Red:
                    resultGreen = sourceRed;
                    break;

                case ColorSwapFilter.Green.Green:
                    resultGreen = sourceGreen;
                    break;

                case ColorSwapFilter.Green.Blue:
                    resultGreen = sourceBlue;
                    break;

                case ColorSwapFilter.Green.Alpha:
                    resultGreen = sourceAlpha;
                    break;

                case ColorSwapFilter.Green.One:
                    resultGreen = 255;
                    break;

                case ColorSwapFilter.Green.Zero:
                    resultGreen = 0;
                    break;
                }
                switch (swapFilterData.CompBlue)
                {
                case ColorSwapFilter.Blue.Red:
                    resultBlue = sourceRed;
                    break;

                case ColorSwapFilter.Blue.Green:
                    resultBlue = sourceGreen;
                    break;

                case ColorSwapFilter.Blue.Blue:
                    resultBlue = sourceBlue;
                    break;

                case ColorSwapFilter.Blue.Alpha:
                    resultBlue = sourceAlpha;
                    break;

                case ColorSwapFilter.Blue.One:
                    resultBlue = 255;
                    break;

                case ColorSwapFilter.Blue.Zero:
                    resultBlue = 0;
                    break;
                }
                switch (swapFilterData.CompAlpha)
                {
                case ColorSwapFilter.Alpha.Red:
                    resultAlpha = sourceRed;
                    break;

                case ColorSwapFilter.Alpha.Green:
                    resultAlpha = sourceGreen;
                    break;

                case ColorSwapFilter.Alpha.Blue:
                    resultAlpha = sourceBlue;
                    break;

                case ColorSwapFilter.Alpha.Alpha:
                    resultAlpha = sourceAlpha;
                    break;

                case ColorSwapFilter.Alpha.One:
                    resultAlpha = 255;
                    break;

                case ColorSwapFilter.Alpha.Zero:
                    resultAlpha = 0;
                    break;
                }

                resultBuffer[k]     = resultRed;
                resultBuffer[k + 1] = resultGreen;
                resultBuffer[k + 2] = resultBlue;
                resultBuffer[k + 3] = resultAlpha;
            }


            Bitmap resultBitmap = new Bitmap(bitmap.Width, bitmap.Height,
                                             PixelFormat.Format32bppArgb);

            BitmapData resultData = resultBitmap.LockBits
                                        (new Rectangle(0, 0, resultBitmap.Width, resultBitmap.Height),
                                        ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);


            Marshal.Copy(resultBuffer, 0, resultData.Scan0, resultBuffer.Length);
            resultBitmap.UnlockBits(resultData);

            bitmap.Dispose();
            return(resultBitmap);
        }