public void BlendLineShallow(sPixel col, OutputMatrix output)
 {
     _AlphaBlend(1, 4, output.Reference(_SCALE - 1, 0), col);
     _AlphaBlend(1, 4, output.Reference(_SCALE - 2, 2), col);
     _AlphaBlend(3, 4, output.Reference(_SCALE - 1, 1), col);
     output.Reference(_SCALE - 1, 2).SetPixel(col);
 }
Example #2
0
        private int PixelMix(Dictionary <int, int> argbs)
        {
            if (argbs.Count == 0)
            {
                throw new System.Exception();
            }
            int _argb = 0;

            sPixel[] pix   = new sPixel[argbs.Count];
            int      index = 0;

            foreach (KeyValuePair <int, int> entry in argbs)
            {
                int  myColor = entry.Key;
                byte b       = (byte)(myColor & 0xFF);
                byte g       = (byte)((myColor >> 8) & 0xFF);
                byte r       = (byte)((myColor >> 16) & 0xFF);
                byte a       = (byte)((myColor >> 24) & 0xFF);

                pix[index] = sPixel.FromRGBA(r, g, b, a);
                index++;
            }

            sPixel finalPix = alphaWeightedAverage(pix);

            return(finalPix.Color.ToArgb());
        }
 public void BlendLineSteep(sPixel col, OutputMatrix output)
 {
     _AlphaBlend(1, 4, output.Reference(0, _SCALE - 1), col);
     _AlphaBlend(1, 4, output.Reference(2, _SCALE - 2), col);
     _AlphaBlend(3, 4, output.Reference(1, _SCALE - 1), col);
     output.Reference(2, _SCALE - 1).SetPixel(col);
 }
 public void BlendCorner(sPixel col, OutputMatrix output)
 {
     //model a round corner
     _AlphaBlend(45, 100, output.Reference(2, 2), col);                 //exact: 0.4545939598
     //alphaBlend(14, 1000, out.ref(2, 1), col); //0.01413008627 -> negligable
     //alphaBlend(14, 1000, out.ref(1, 2), col); //0.01413008627
 }
 public void BlendCorner(sPixel col, OutputMatrix output)
 {
     //model a round corner
     _AlphaBlend(68, 100, output.Reference(3, 3), col);                //exact: 0.6848532563
     _AlphaBlend(9, 100, output.Reference(3, 2), col);                 //0.08677704501
     _AlphaBlend(9, 100, output.Reference(2, 3), col);                 //0.08677704501
 }
Example #6
0
 private static void _AlphaBlend128W(ref sPixel dst, sPixel src, bool blend)
 {
     if (blend)
     {
         dst = sPixel.Interpolate(dst, src);
     }
 }
Example #7
0
 private static void _Up2_3X(ref sPixel n5, ref sPixel n7, ref sPixel n2, out sPixel n8, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n5, pixel, blend);
     _AlphaBlend64W(ref n7, pixel, blend);
     _AlphaBlend64W(ref n2, pixel, blend);
     n8 = pixel;
 }
        private static double _DistYCbCr(sPixel pix1, sPixel pix2, double lumaWeight)
        {
            //http://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion
            //YCbCr conversion is a matrix multiplication => take advantage of linearity by subtracting first!
            var rDiff = pix1.Red - pix2.Red;
            var gDiff = pix1.Green - pix2.Green;
            var bDiff = pix1.Blue - pix2.Blue;

            const double kB = 0.0722;             //ITU-R BT.709 conversion
            const double kR = 0.2126;             //
            const double kG = 1 - kB - kR;

            const double scaleB = 0.5 / (1 - kB);
            const double scaleR = 0.5 / (1 - kR);

            var y  = kR * rDiff + kG * gDiff + kB * bDiff;            //[!], analog YCbCr!
            var cB = scaleB * (bDiff - y);
            var cR = scaleR * (rDiff - y);

            // Skip division by 255.
            // Also skip square root here by pre-squaring the
            // config option equalColorTolerance.
            //return Math.sqrt(square(lumaWeight * y) + square(c_b) + square(c_r));
            return(_Square(lumaWeight * y) + _Square(cB) + _Square(cR));
        }
 public void BlendLineSteepAndShallow(sPixel col, OutputMatrix output)
 {
     _AlphaBlend(1, 4, output.Reference(2, 0), col);
     _AlphaBlend(1, 4, output.Reference(0, 2), col);
     _AlphaBlend(3, 4, output.Reference(2, 1), col);
     _AlphaBlend(3, 4, output.Reference(1, 2), col);
     output.Reference(2, 2).SetPixel(col);
 }
Example #10
0
 private static void _LeftUp2_3X(ref sPixel n7, out sPixel n5, ref sPixel n6, ref sPixel n2, out sPixel n8, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n7, pixel, blend);
     _AlphaBlend64W(ref n6, pixel, blend);
     n5 = n7;
     n2 = n6;
     n8 = pixel;
 }
Example #11
0
 private static void _LeftUp2(out sPixel n15, out sPixel n14, out sPixel n11, ref sPixel n13, ref sPixel n12, out sPixel n10, out sPixel n7, out sPixel n3, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n13, pixel, blend);
     _AlphaBlend64W(ref n12, pixel, blend);
     n15 = n14 = n11 = pixel;
     n10 = n3 = n12;
     n7  = n13;
 }
Example #12
0
 private static void _Left2(out sPixel n15, out sPixel n14, ref sPixel n11, ref sPixel n13, ref sPixel n12, ref sPixel n10, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n11, pixel, blend);
     _AlphaBlend192W(ref n13, pixel, blend);
     _AlphaBlend64W(ref n10, pixel, blend);
     _AlphaBlend64W(ref n12, pixel, blend);
     n14 = pixel;
     n15 = pixel;
 }
Example #13
0
 private static void _Up2(out sPixel n15, ref sPixel n14, out sPixel n11, ref sPixel n3, ref sPixel n7, ref sPixel n10, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n14, pixel, blend);
     _AlphaBlend192W(ref n7, pixel, blend);
     _AlphaBlend64W(ref n10, pixel, blend);
     _AlphaBlend64W(ref n3, pixel, blend);
     n11 = pixel;
     n15 = pixel;
 }
Example #14
0
        private int GBCColor(int normalColor)
        {
            byte b = (byte)(normalColor & 0xFF);
            byte g = (byte)((normalColor >> 8) & 0xFF);
            byte r = (byte)((normalColor >> 16) & 0xFF);
            byte a = (byte)((normalColor >> 24) & 0xFF);

            // reduce to 5-bit values
            if (reduceColors.Value == true)
            {
                b /= 8;
                g /= 8;
                r /= 8;

                b = scale_channel_with_curve(b);
                g = scale_channel_with_curve(g);
                r = scale_channel_with_curve(r);
            }

            sPixel scaledPixel = sPixel.FromRGBA(r, g, b, a);
            Color  gameboyizedColor;

            if (style.GetSelected() == "Pokefan531")
            {
                gameboyizedColor = GBCShader(scaledPixel.Color);
            }
            else if (style.GetSelected() == "Sameboy")
            {
                // GB_COLOR_CORRECTION_EMULATE_HARDWARE
                int new_b = b;
                int new_g = Math.Min((g * 3 + b) / 4, 255);
                int new_r = r;

                //GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS
                if (reduceColors.Value == true)
                {
                    int old_max = Math.Max(r, Math.Max(g, b));
                    int new_max = Math.Max(new_r, Math.Max(new_g, new_b));
                    int old_min = Math.Min(r, Math.Min(g, b));
                    int new_min = Math.Min(new_r, Math.Min(new_g, new_b));

                    new_b = PreserveBrightness(new_b, old_max, new_max, old_min, new_min);
                    new_g = PreserveBrightness(new_g, old_max, new_max, old_min, new_min);
                    new_r = PreserveBrightness(new_r, old_max, new_max, old_min, new_min);
                }

                sPixel correctedPixel = sPixel.FromRGBA(new_r, new_g, new_b, a);
                gameboyizedColor = correctedPixel.Color;
            }
            else
            {
                gameboyizedColor = scaledPixel.Color;
            }


            return(SimulateGreyness(gameboyizedColor).ToArgb());
        }
 public void BlendCorner(sPixel col, OutputMatrix output)
 {
     //model a round corner
     _AlphaBlend(86, 100, output.Reference(4, 4), col);                 //exact: 0.8631434088
     _AlphaBlend(23, 100, output.Reference(4, 3), col);                 //0.2306749731
     _AlphaBlend(23, 100, output.Reference(3, 4), col);                 //0.2306749731
     //alphaBlend(8, 1000, out.ref(4, 2), col); //0.008384061834 -> negligable
     //alphaBlend(8, 1000, out.ref(2, 4), col); //0.008384061834
 }
 public void BlendLineDiagonal(sPixel col, OutputMatrix output)
 {
     _AlphaBlend(1, 8, output.Reference(_SCALE - 1, _SCALE / 2), col);
     _AlphaBlend(1, 8, output.Reference(_SCALE - 2, _SCALE / 2 + 1), col);
     _AlphaBlend(1, 8, output.Reference(_SCALE - 3, _SCALE / 2 + 2), col);
     _AlphaBlend(7, 8, output.Reference(4, 3), col);
     _AlphaBlend(7, 8, output.Reference(3, 4), col);
     output.Reference(4, 4).SetPixel(col);
 }
Example #17
0
 public void BlendCorner(sPixel col, OutputMatrix output)
 {
     //model a round corner
     _AlphaBlend(97, 100, output.Reference(5, 5), col); //exact: 0.9711013910
     _AlphaBlend(42, 100, output.Reference(4, 5), col); //0.4236372243
     _AlphaBlend(42, 100, output.Reference(5, 4), col); //0.4236372243
     _AlphaBlend(6, 100, output.Reference(5, 3), col);  //0.05652034508
     _AlphaBlend(6, 100, output.Reference(3, 5), col);  //0.05652034508
 }
 private static void _FillBlock(sPixel[] trg, int trgi, int pitch, sPixel col, int blockSize)
 {
     for (var y = 0; y < blockSize; ++y, trgi += pitch)
     {
         for (var x = 0; x < blockSize; ++x)
         {
             trg[trgi + x] = col;
         }
     }
 }
 public void BlendLineSteepAndShallow(sPixel col, OutputMatrix output)
 {
     _AlphaBlend(3, 4, output.Reference(3, 1), col);
     _AlphaBlend(3, 4, output.Reference(1, 3), col);
     _AlphaBlend(1, 4, output.Reference(3, 0), col);
     _AlphaBlend(1, 4, output.Reference(0, 3), col);
     _AlphaBlend(1, 3, output.Reference(2, 2), col);                 //[!] fixes 1/4 used in xBR
     output.Reference(3, 3).SetPixel(col);
     output.Reference(3, 2).SetPixel(col);
     output.Reference(2, 3).SetPixel(col);
 }
Example #20
0
        private static void _Kernel3X(sPixel pe, sPixel pi, sPixel ph, sPixel pf, sPixel pg, sPixel pc, sPixel pd, sPixel pb, sPixel f4, sPixel i4, sPixel h5, sPixel i5, ref sPixel n2, ref sPixel n5, ref sPixel n6, ref sPixel n7, ref sPixel n8, bool blend, bool useOriginalImplementation)
        {
            var ex = (pe != ph && pe != pf);

            if (!ex)
            {
                return;
            }

            var e = (_YuvDifference(pe, pc) + _YuvDifference(pe, pg) + _YuvDifference(pi, h5) + _YuvDifference(pi, f4)) + (_YuvDifference(ph, pf) << 2);
            var i = (_YuvDifference(ph, pd) + _YuvDifference(ph, i5) + _YuvDifference(pf, i4) + _YuvDifference(pf, pb)) + (_YuvDifference(pe, pi) << 2);

            bool state;

            if (useOriginalImplementation)
            {
                state = ((e < i) && (!_IsEqual(pf, pb) && !_IsEqual(ph, pd) || _IsEqual(pe, pi) && (!_IsEqual(pf, i4) && !_IsEqual(ph, i5)) || _IsEqual(pe, pg) || _IsEqual(pe, pc)));
            }
            else
            {
                state = ((e < i) && (!_IsEqual(pf, pb) && !_IsEqual(pf, pc) || !_IsEqual(ph, pd) && !_IsEqual(ph, pg) || _IsEqual(pe, pi) && (!_IsEqual(pf, f4) && !_IsEqual(pf, i4) || !_IsEqual(ph, h5) && !_IsEqual(ph, i5)) || _IsEqual(pe, pg) || _IsEqual(pe, pc)));
            }

            if (state)
            {
                var ke  = _YuvDifference(pf, pg);
                var ki  = _YuvDifference(ph, pc);
                var ex2 = (pe != pc && pb != pc);
                var ex3 = (pe != pg && pd != pg);
                var px  = (_YuvDifference(pe, pf) <= _YuvDifference(pe, ph)) ? pf : ph;
                if (((ke << 1) <= ki) && ex3 && (ke >= (ki << 1)) && ex2)
                {
                    _LeftUp2_3X(ref n7, out n5, ref n6, ref n2, out n8, px, blend);
                }
                else if (((ke << 1) <= ki) && ex3)
                {
                    _Left2_3X(ref n7, ref n5, ref n6, out n8, px, blend);
                }
                else if ((ke >= (ki << 1)) && ex2)
                {
                    _Up2_3X(ref n5, ref n7, ref n2, out n8, px, blend);
                }
                else
                {
                    _Dia_3X(ref n8, ref n5, ref n7, px, blend);
                }
            }
            else if (e <= i)
            {
                _AlphaBlend128W(ref n8, ((_YuvDifference(pe, pf) <= _YuvDifference(pe, ph)) ? pf : ph), blend);
            }
        }
 public void BlendLineSteepAndShallow(sPixel col, OutputMatrix output)
 {
     _AlphaBlend(1, 4, output.Reference(0, _SCALE - 1), col);
     _AlphaBlend(1, 4, output.Reference(2, _SCALE - 2), col);
     _AlphaBlend(3, 4, output.Reference(1, _SCALE - 1), col);
     _AlphaBlend(1, 4, output.Reference(_SCALE - 1, 0), col);
     _AlphaBlend(1, 4, output.Reference(_SCALE - 2, 2), col);
     _AlphaBlend(3, 4, output.Reference(_SCALE - 1, 1), col);
     output.Reference(2, _SCALE - 1).SetPixel(col);
     output.Reference(3, _SCALE - 1).SetPixel(col);
     output.Reference(_SCALE - 1, 2).SetPixel(col);
     output.Reference(_SCALE - 1, 3).SetPixel(col);
     output.Reference(4, _SCALE - 1).SetPixel(col);
     _AlphaBlend(2, 3, output.Reference(3, 3), col);
 }
Example #22
0
        private static void _Kernel2Xv5(sPixel pe, sPixel pi, sPixel ph, sPixel pf, sPixel pg, sPixel pc, sPixel pd,
                                        sPixel pb, sPixel f4, sPixel i4, sPixel h5, sPixel i5, ref sPixel n1, ref sPixel n2, ref sPixel n3,
                                        bool blend)
        {
            var ex = pe != ph && pe != pf;

            if (!ex)
            {
                return;
            }
            var e =
                _YuvDifference(pe, pc) + _YuvDifference(pe, pg) + _YuvDifference(pi, h5) + _YuvDifference(pi, f4) +
                (_YuvDifference(ph, pf) << 2);
            var i =
                _YuvDifference(ph, pd) + _YuvDifference(ph, i5) + _YuvDifference(pf, i4) + _YuvDifference(pf, pb) +
                (_YuvDifference(pe, pi) << 2);
            var px = _YuvDifference(pe, pf) <= _YuvDifference(pe, ph) ? pf : ph;

            if (e < i && (!_IsEqual(pf, pb) && !_IsEqual(ph, pd) ||
                          _IsEqual(pe, pi) && !_IsEqual(pf, i4) && !_IsEqual(ph, i5) || _IsEqual(pe, pg) ||
                          _IsEqual(pe, pc)))
            {
                var ke  = _YuvDifference(pf, pg);
                var ki  = _YuvDifference(ph, pc);
                var ex2 = pe != pc && pb != pc;
                var ex3 = pe != pg && pd != pg;
                if (ke << 1 <= ki && ex3 || ke >= ki << 1 && ex2)
                {
                    if (ke << 1 <= ki && ex3)
                    {
                        _Left2_2X(ref n3, ref n2, px, blend);
                    }
                    if (ke >= ki << 1 && ex2)
                    {
                        _Up2_2X(ref n3, ref n1, px, blend);
                    }
                }
                else
                {
                    _Dia_2X(ref n3, px, blend);
                }
            }
            else if (e <= i)
            {
                _AlphaBlend64W(ref n3, px, blend);
            }
        }
Example #23
0
        private static sPixel _Unmix(sPixel c1, sPixel c2)
        {
            /* A variant of an unsharp mask, without the blur part. */

            var ra = c1.Red;
            var ga = c1.Green;
            var ba = c1.Blue;

            var rb = c2.Red;
            var gb = c2.Green;
            var bb = c2.Blue;

            var r = (_ClampToByteRange(ra + (ra - rb)) + rb) >> 1;
            var g = (_ClampToByteRange(ga + (ga - gb)) + gb) >> 1;
            var b = (_ClampToByteRange(ba + (ba - bb)) + bb) >> 1;

            return(sPixel.FromRGBA(r, g, b, (c1.Alpha + c2.Alpha) >> 1));
        }
Example #24
0
    // used for 2xSaI, Super Eagle, Super 2xSaI
    // using thresholds when comparing (Hawkynt)
    private static int _Conc2D(sPixel c00, sPixel c01, sPixel c10, sPixel c11) {
      var result = 0;

      var acAreAlike = c00.IsLike(c10);
      var x = acAreAlike ? 1 : 0;
      var y = (c01.IsLike(c10) && !(acAreAlike)) ? 1 : 0;

      var adAreAlike = c00.IsLike(c11);
      x += adAreAlike ? 1 : 0;
      y += (c01.IsLike(c11) && !(adAreAlike)) ? 1 : 0;

      if (x <= 1)
        result++;
      if (y <= 1)
        result--;

      return (result);
    }
Example #25
0
        private static void _Kernel4Xv2(sPixel pe, sPixel pi, sPixel ph, sPixel pf, sPixel pg, sPixel pc, sPixel pd, sPixel pb, sPixel f4, sPixel i4, sPixel h5, sPixel i5, ref sPixel n15, ref sPixel n14, ref sPixel n11, ref sPixel n3, ref sPixel n7, ref sPixel n10, ref sPixel n13, ref sPixel n12, bool blend)
        {
            var ex = (pe != ph && pe != pf);

            if (!ex)
            {
                return;
            }
            var e  = (_YuvDifference(pe, pc) + _YuvDifference(pe, pg) + _YuvDifference(pi, h5) + _YuvDifference(pi, f4)) + (_YuvDifference(ph, pf) << 2);
            var i  = (_YuvDifference(ph, pd) + _YuvDifference(ph, i5) + _YuvDifference(pf, i4) + _YuvDifference(pf, pb)) + (_YuvDifference(pe, pi) << 2);
            var px = (_YuvDifference(pe, pf) <= _YuvDifference(pe, ph)) ? pf : ph;

            if ((e < i) && (!_IsEqual(pf, pb) && !_IsEqual(ph, pd) || _IsEqual(pe, pi) && (!_IsEqual(pf, i4) && !_IsEqual(ph, i5)) || _IsEqual(pe, pg) || _IsEqual(pe, pc)))
            {
                var ke  = _YuvDifference(pf, pg);
                var ki  = _YuvDifference(ph, pc);
                var ex2 = (pe != pc && pb != pc);
                var ex3 = (pe != pg && pd != pg);
                if (((ke << 1) <= ki) && ex3 || (ke >= (ki << 1)) && ex2)
                {
                    if (((ke << 1) <= ki) && ex3)
                    {
                        _Left2(out n15, out n14, ref n11, ref n13, ref n12, ref n10, px, blend);
                    }
                    if ((ke >= (ki << 1)) && ex2)
                    {
                        _Up2(out n15, ref n14, out n11, ref n3, ref n7, ref n10, px, blend);
                    }
                }
                else
                {
                    _Dia(out n15, ref n14, ref n11, px, blend);
                }
            }
            else if (e <= i)
            {
                _AlphaBlend128W(ref n15, px, blend);
            }
        }
Example #26
0
    private static double _DistYCbCr(sPixel pix1, sPixel pix2, double lumaWeight) {
      //http://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion
      //YCbCr conversion is a matrix multiplication => take advantage of linearity by subtracting first!
      var rDiff = pix1.Red - pix2.Red;
      var gDiff = pix1.Green - pix2.Green;
      var bDiff = pix1.Blue - pix2.Blue;

      const double kB = 0.0722; //ITU-R BT.709 conversion
      const double kR = 0.2126; //
      const double kG = 1 - kB - kR;

      const double scaleB = 0.5 / (1 - kB);
      const double scaleR = 0.5 / (1 - kR);

      var y = kR * rDiff + kG * gDiff + kB * bDiff; //[!], analog YCbCr!
      var cB = scaleB * (bDiff - y);
      var cR = scaleR * (rDiff - y);

      // Skip division by 255.
      // Also skip square root here by pre-squaring the
      // config option equalColorTolerance.
      //return Math.sqrt(square(lumaWeight * y) + square(c_b) + square(c_r));
      return _Square(lumaWeight * y) + _Square(cB) + _Square(cR);
    }
Example #27
0
        // used for 2xSaI, Super Eagle, Super 2xSaI
        // using thresholds when comparing (Hawkynt)
        private static int _Conc2D(sPixel c00, sPixel c01, sPixel c10, sPixel c11)
        {
            var result = 0;

            var acAreAlike = c00.IsLike(c10);
            var x          = acAreAlike ? 1 : 0;
            var y          = (c01.IsLike(c10) && !(acAreAlike)) ? 1 : 0;

            var adAreAlike = c00.IsLike(c11);

            x += adAreAlike ? 1 : 0;
            y += (c01.IsLike(c11) && !(adAreAlike)) ? 1 : 0;

            if (x <= 1)
            {
                result++;
            }
            if (y <= 1)
            {
                result--;
            }

            return(result);
        }
Example #28
0
 public void BlendLineShallow(sPixel col, OutputMatrix output) {
   _AlphaBlend(1, 4, output.Reference(_SCALE - 1, 0), col);
   _AlphaBlend(1, 4, output.Reference(_SCALE - 2, 2), col);
   _AlphaBlend(1, 4, output.Reference(_SCALE - 3, 4), col);
   _AlphaBlend(3, 4, output.Reference(_SCALE - 1, 1), col);
   _AlphaBlend(3, 4, output.Reference(_SCALE - 2, 3), col);
   output.Reference(_SCALE - 1, 2).SetPixel(col);
   output.Reference(_SCALE - 1, 3).SetPixel(col);
   output.Reference(_SCALE - 1, 4).SetPixel(col);
   output.Reference(_SCALE - 2, 4).SetPixel(col);
 }
Example #29
0
 public void BlendLineSteep(sPixel col, OutputMatrix output) {
   _AlphaBlend(1, 4, output.Reference(0, _SCALE - 1), col);
   _AlphaBlend(1, 4, output.Reference(2, _SCALE - 2), col);
   _AlphaBlend(1, 4, output.Reference(4, _SCALE - 3), col);
   _AlphaBlend(3, 4, output.Reference(1, _SCALE - 1), col);
   _AlphaBlend(3, 4, output.Reference(3, _SCALE - 2), col);
   output.Reference(2, _SCALE - 1).SetPixel(col);
   output.Reference(3, _SCALE - 1).SetPixel(col);
   output.Reference(4, _SCALE - 1).SetPixel(col);
   output.Reference(4, _SCALE - 2).SetPixel(col);
 }
Example #30
0
 private static void _Dia_2X(ref sPixel n3, sPixel pixel, bool blend)
 {
     _AlphaBlend128W(ref n3, pixel, blend);
 }
Example #31
0
 private static void _Left2_2X(ref sPixel n3, ref sPixel n2, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n3, pixel, blend);
     _AlphaBlend64W(ref n2, pixel, blend);
 }
Example #32
0
    private static void _Kernel4Xv2(sPixel pe, sPixel pi, sPixel ph, sPixel pf, sPixel pg, sPixel pc, sPixel pd, sPixel pb, sPixel f4, sPixel i4, sPixel h5, sPixel i5, ref sPixel n15, ref sPixel n14, ref sPixel n11, ref sPixel n3, ref sPixel n7, ref sPixel n10, ref sPixel n13, ref sPixel n12, bool blend) {
      var ex = (pe != ph && pe != pf);
      if (!ex)
        return;
      var e = (_YuvDifference(pe, pc) + _YuvDifference(pe, pg) + _YuvDifference(pi, h5) + _YuvDifference(pi, f4)) + (_YuvDifference(ph, pf) << 2);
      var i = (_YuvDifference(ph, pd) + _YuvDifference(ph, i5) + _YuvDifference(pf, i4) + _YuvDifference(pf, pb)) + (_YuvDifference(pe, pi) << 2);
      var px = (_YuvDifference(pe, pf) <= _YuvDifference(pe, ph)) ? pf : ph;
      if ((e < i) && (!_IsEqual(pf, pb) && !_IsEqual(ph, pd) || _IsEqual(pe, pi) && (!_IsEqual(pf, i4) && !_IsEqual(ph, i5)) || _IsEqual(pe, pg) || _IsEqual(pe, pc))) {
        var ke = _YuvDifference(pf, pg);
        var ki = _YuvDifference(ph, pc);
        var ex2 = (pe != pc && pb != pc);
        var ex3 = (pe != pg && pd != pg);
        if (((ke << 1) <= ki) && ex3 || (ke >= (ki << 1)) && ex2) {
          if (((ke << 1) <= ki) && ex3)
            _Left2(out n15, out n14, ref n11, ref n13, ref n12, ref n10, px, blend);
          if ((ke >= (ki << 1)) && ex2)
            _Up2(out n15, ref n14, out n11, ref n3, ref n7, ref n10, px, blend);
        } else
          _Dia(out n15, ref n14, ref n11, px, blend);

      } else if (e <= i) {
        _AlphaBlend128W(ref n15, px, blend);
      }
    }
Example #33
0
 private static void _Up2(out sPixel n15, ref sPixel n14, out sPixel n11, ref sPixel n3, ref sPixel n7, ref sPixel n10, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n14, pixel, blend);
   _AlphaBlend192W(ref n7, pixel, blend);
   _AlphaBlend64W(ref n10, pixel, blend);
   _AlphaBlend64W(ref n3, pixel, blend);
   n11 = pixel;
   n15 = pixel;
 }
Example #34
0
 private static void _AlphaBlend128W(ref sPixel dst, sPixel src, bool blend) {
   if (blend)
     dst = sPixel.Interpolate(dst, src);
 }
Example #35
0
 private static bool _IsEqual(sPixel a, sPixel b) {
   return (a.IsLike(b));
 }
Example #36
0
    public static void Hq4xKernel(byte pattern, sPixel c0, sPixel c1, sPixel c2, sPixel c3, sPixel c4, sPixel c5, sPixel c6, sPixel c7, sPixel c8, PixelWorker<sPixel> worker) {
      sPixel e01, e02, e03, e10, e11, e12, e13, e20, e21, e22, e23, e30, e31, e32, e33;
      var e00 = e01 = e02 = e03 = e10 = e11 = e12 = e13 = e20 = e21 = e22 = e23 = e30 = e31 = e32 = e33 = c4;
      switch (pattern) {
        #region HQ4x PATTERNS

        case 0:
        case 1:
        case 4:
        case 5:
        case 32:
        case 33:
        case 36:
        case 37:
        case 128:
        case 129:
        case 132:
        case 133:
        case 160:
        case 161:
        case 164:
        case 165: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 2:
        case 34:
        case 130:
        case 162: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 3:
        case 35:
        case 131:
        case 163: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 6:
        case 38:
        case 134:
        case 166: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 7:
        case 39:
        case 135:
        case 167: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 8:
        case 12:
        case 136:
        case 140: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 9:
        case 13:
        case 137:
        case 141: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 10:
        case 138: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
            e11 = c4;
          }
        }
        break;
        case 11:
        case 139: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 14:
        case 142: {
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e02 = sPixel.Interpolate(c4, c5, 7, 1);
            e03 = sPixel.Interpolate(c4, c5, 5, 3);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c3, 5, 3);
            e02 = sPixel.Interpolate(c1, c4, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c3, c1, c4, 2, 1, 1);
            e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          }
        }
        break;
        case 15:
        case 143: {
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e02 = sPixel.Interpolate(c4, c5, 7, 1);
            e03 = sPixel.Interpolate(c4, c5, 5, 3);
            e10 = c4;
            e11 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c3, 5, 3);
            e02 = sPixel.Interpolate(c1, c4, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c3, c1, c4, 2, 1, 1);
            e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          }
        }
        break;
        case 16:
        case 17:
        case 48:
        case 49: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 18:
        case 50: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 19:
        case 51: {
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e00 = sPixel.Interpolate(c4, c3, 5, 3);
            e01 = sPixel.Interpolate(c4, c3, 7, 1);
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, 3, 1);
            e01 = sPixel.Interpolate(c1, c4, 3, 1);
            e02 = sPixel.Interpolate(c1, c5, 5, 3);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
            e13 = sPixel.Interpolate(c5, c1, c4, 2, 1, 1);
          }
        }
        break;
        case 20:
        case 21:
        case 52:
        case 53: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 22:
        case 54: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 23:
        case 55: {
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e00 = sPixel.Interpolate(c4, c3, 5, 3);
            e01 = sPixel.Interpolate(c4, c3, 7, 1);
            e02 = c4;
            e03 = c4;
            e12 = c4;
            e13 = c4;
          } else {
            e00 = sPixel.Interpolate(c4, c1, 3, 1);
            e01 = sPixel.Interpolate(c1, c4, 3, 1);
            e02 = sPixel.Interpolate(c1, c5, 5, 3);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
            e13 = sPixel.Interpolate(c5, c1, c4, 2, 1, 1);
          }
        }
        break;
        case 24: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 25: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 26:
        case 31: {
          e11 = c4;
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 27: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 28: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 29: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 30: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 40:
        case 44:
        case 168:
        case 172: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 41:
        case 45:
        case 169:
        case 173: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
        }
        break;
        case 42:
        case 170: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
            e20 = sPixel.Interpolate(c4, c7, 7, 1);
            e30 = sPixel.Interpolate(c4, c7, 5, 3);
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c3, c4, 2, 1, 1);
            e10 = sPixel.Interpolate(c3, c1, 5, 3);
            e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
            e20 = sPixel.Interpolate(c3, c4, 3, 1);
            e30 = sPixel.Interpolate(c4, c3, 3, 1);
          }
        }
        break;
        case 43:
        case 171: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
            e11 = c4;
            e20 = sPixel.Interpolate(c4, c7, 7, 1);
            e30 = sPixel.Interpolate(c4, c7, 5, 3);
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c3, c4, 2, 1, 1);
            e10 = sPixel.Interpolate(c3, c1, 5, 3);
            e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
            e20 = sPixel.Interpolate(c3, c4, 3, 1);
            e30 = sPixel.Interpolate(c4, c3, 3, 1);
          }
        }
        break;
        case 46:
        case 174: {
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
        }
        break;
        case 47:
        case 175: {
          e01 = c4;
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = c4;
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
          e23 = sPixel.Interpolate(c4, c5, c7, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c5, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
        }
        break;
        case 56: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 57: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 58: {
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 59: {
          e11 = c4;
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 60: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 61: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 62: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 63: {
          e01 = c4;
          e10 = c4;
          e11 = c4;
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, c8, 5, 2, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 64:
        case 65:
        case 68:
        case 69: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 66: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 67: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 70: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 71: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 72:
        case 76: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
        }
        break;
        case 73:
        case 77: {
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c1, 5, 3);
            e10 = sPixel.Interpolate(c4, c1, 7, 1);
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c3, 3, 1);
            e10 = sPixel.Interpolate(c3, c4, 3, 1);
            e20 = sPixel.Interpolate(c3, c7, 5, 3);
            e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c7, c3, c4, 2, 1, 1);
          }
        }
        break;
        case 74:
        case 107: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 75: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 78: {
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
        }
        break;
        case 79: {
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 80:
        case 81: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 82:
        case 214: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 83: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 84:
        case 85: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e03 = sPixel.Interpolate(c4, c1, 5, 3);
            e13 = sPixel.Interpolate(c4, c1, 7, 1);
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e03 = sPixel.Interpolate(c4, c5, 3, 1);
            e13 = sPixel.Interpolate(c5, c4, 3, 1);
            e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
            e23 = sPixel.Interpolate(c5, c7, 5, 3);
            e32 = sPixel.Interpolate(c7, c4, c5, 2, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 86: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 87: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 88:
        case 248: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e21 = c4;
          e22 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 89: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
        }
        break;
        case 90: {
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 91: {
          e11 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 92: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
        }
        break;
        case 93: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
        }
        break;
        case 94: {
          e12 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 95: {
          e11 = c4;
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 96:
        case 97:
        case 100:
        case 101: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 98: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 99: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 102: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 103: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
        }
        break;
        case 104:
        case 108: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
        }
        break;
        case 105:
        case 109: {
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c1, 5, 3);
            e10 = sPixel.Interpolate(c4, c1, 7, 1);
            e20 = c4;
            e21 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e00 = sPixel.Interpolate(c4, c3, 3, 1);
            e10 = sPixel.Interpolate(c3, c4, 3, 1);
            e20 = sPixel.Interpolate(c3, c7, 5, 3);
            e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c7, c3, c4, 2, 1, 1);
          }
        }
        break;
        case 106: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
        }
        break;
        case 110: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
        }
        break;
        case 111: {
          e01 = c4;
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = c4;
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, c8, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
        }
        break;
        case 112:
        case 113: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e30 = sPixel.Interpolate(c4, c3, 5, 3);
            e31 = sPixel.Interpolate(c4, c3, 7, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
            e23 = sPixel.Interpolate(c5, c4, c7, 2, 1, 1);
            e30 = sPixel.Interpolate(c4, c7, 3, 1);
            e31 = sPixel.Interpolate(c7, c4, 3, 1);
            e32 = sPixel.Interpolate(c7, c5, 5, 3);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 114: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 115: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 116:
        case 117: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
        }
        break;
        case 118: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 119: {
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c1.IsNotLike(c5)) {
            e00 = sPixel.Interpolate(c4, c3, 5, 3);
            e01 = sPixel.Interpolate(c4, c3, 7, 1);
            e02 = c4;
            e03 = c4;
            e12 = c4;
            e13 = c4;
          } else {
            e00 = sPixel.Interpolate(c4, c1, 3, 1);
            e01 = sPixel.Interpolate(c1, c4, 3, 1);
            e02 = sPixel.Interpolate(c1, c5, 5, 3);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
            e13 = sPixel.Interpolate(c5, c1, c4, 2, 1, 1);
          }
        }
        break;
        case 120: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
        }
        break;
        case 121: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e21 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
        }
        break;
        case 122: {
          e21 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c7.IsNotLike(c5)) {
            e22 = sPixel.Interpolate(c4, c8, 7, 1);
            e23 = sPixel.Interpolate(c4, c8, 3, 1);
            e32 = sPixel.Interpolate(c4, c8, 3, 1);
            e33 = sPixel.Interpolate(c4, c8, 5, 3);
          } else {
            e22 = c4;
            e23 = sPixel.Interpolate(c4, c5, 3, 1);
            e32 = sPixel.Interpolate(c4, c7, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, c7, 2, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 123: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 124: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
        }
        break;
        case 125: {
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c1, 5, 3);
            e10 = sPixel.Interpolate(c4, c1, 7, 1);
            e20 = c4;
            e21 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e00 = sPixel.Interpolate(c4, c3, 3, 1);
            e10 = sPixel.Interpolate(c3, c4, 3, 1);
            e20 = sPixel.Interpolate(c3, c7, 5, 3);
            e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c7, c3, c4, 2, 1, 1);
          }
        }
        break;
        case 126: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 127: {
          e01 = c4;
          e10 = c4;
          e11 = c4;
          e12 = c4;
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c8, 7, 1);
          e23 = sPixel.Interpolate(c4, c8, 3, 1);
          e32 = sPixel.Interpolate(c4, c8, 3, 1);
          e33 = sPixel.Interpolate(c4, c8, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 144:
        case 145:
        case 176:
        case 177: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 146:
        case 178: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
            e23 = sPixel.Interpolate(c4, c7, 7, 1);
            e33 = sPixel.Interpolate(c4, c7, 5, 3);
          } else {
            e02 = sPixel.Interpolate(c1, c4, c5, 2, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
            e13 = sPixel.Interpolate(c5, c1, 5, 3);
            e23 = sPixel.Interpolate(c5, c4, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 147:
        case 179: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 148:
        case 149:
        case 180:
        case 181: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 150:
        case 182: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e12 = c4;
            e13 = c4;
            e23 = sPixel.Interpolate(c4, c7, 7, 1);
            e33 = sPixel.Interpolate(c4, c7, 5, 3);
          } else {
            e02 = sPixel.Interpolate(c1, c4, c5, 2, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
            e13 = sPixel.Interpolate(c5, c1, 5, 3);
            e23 = sPixel.Interpolate(c5, c4, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 151:
        case 183: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = c4;
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = c4;
          e13 = c4;
          e20 = sPixel.Interpolate(c4, c3, c7, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
          e31 = sPixel.Interpolate(c4, c7, c3, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        case 152: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 153: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 154: {
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 155: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 156: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 157: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 158: {
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 159: {
          e02 = c4;
          e11 = c4;
          e12 = c4;
          e13 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, c6, 5, 2, 1);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        case 184: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 185: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 186: {
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 187: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
            e11 = c4;
            e20 = sPixel.Interpolate(c4, c7, 7, 1);
            e30 = sPixel.Interpolate(c4, c7, 5, 3);
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c3, c4, 2, 1, 1);
            e10 = sPixel.Interpolate(c3, c1, 5, 3);
            e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
            e20 = sPixel.Interpolate(c3, c4, 3, 1);
            e30 = sPixel.Interpolate(c4, c3, 3, 1);
          }
        }
        break;
        case 188: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 189: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
        }
        break;
        case 190: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e12 = c4;
            e13 = c4;
            e23 = sPixel.Interpolate(c4, c7, 7, 1);
            e33 = sPixel.Interpolate(c4, c7, 5, 3);
          } else {
            e02 = sPixel.Interpolate(c1, c4, c5, 2, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
            e13 = sPixel.Interpolate(c5, c1, 5, 3);
            e23 = sPixel.Interpolate(c5, c4, 3, 1);
            e33 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 191: {
          e01 = c4;
          e02 = c4;
          e10 = c4;
          e11 = c4;
          e12 = c4;
          e13 = c4;
          e20 = sPixel.Interpolate(c4, c7, 7, 1);
          e21 = sPixel.Interpolate(c4, c7, 7, 1);
          e22 = sPixel.Interpolate(c4, c7, 7, 1);
          e23 = sPixel.Interpolate(c4, c7, 7, 1);
          e30 = sPixel.Interpolate(c4, c7, 5, 3);
          e31 = sPixel.Interpolate(c4, c7, 5, 3);
          e32 = sPixel.Interpolate(c4, c7, 5, 3);
          e33 = sPixel.Interpolate(c4, c7, 5, 3);
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        case 192:
        case 193:
        case 196:
        case 197: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 194: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 195: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 198: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 199: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 200:
        case 204: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
            e32 = sPixel.Interpolate(c4, c5, 7, 1);
            e33 = sPixel.Interpolate(c4, c5, 5, 3);
          } else {
            e20 = sPixel.Interpolate(c3, c4, c7, 2, 1, 1);
            e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c7, c3, 5, 3);
            e32 = sPixel.Interpolate(c7, c4, 3, 1);
            e33 = sPixel.Interpolate(c4, c7, 3, 1);
          }
        }
        break;
        case 201:
        case 205: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
        }
        break;
        case 202: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
        }
        break;
        case 203: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 206: {
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
        }
        break;
        case 207: {
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e02 = sPixel.Interpolate(c4, c5, 7, 1);
            e03 = sPixel.Interpolate(c4, c5, 5, 3);
            e10 = c4;
            e11 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c3, 5, 3);
            e02 = sPixel.Interpolate(c1, c4, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c3, c1, c4, 2, 1, 1);
            e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          }
        }
        break;
        case 208:
        case 209: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 210: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 211: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 212:
        case 213: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e03 = sPixel.Interpolate(c4, c1, 5, 3);
            e13 = sPixel.Interpolate(c4, c1, 7, 1);
            e22 = c4;
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e03 = sPixel.Interpolate(c4, c5, 3, 1);
            e13 = sPixel.Interpolate(c5, c4, 3, 1);
            e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
            e23 = sPixel.Interpolate(c5, c7, 5, 3);
            e32 = sPixel.Interpolate(c7, c4, c5, 2, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 215: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = c4;
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = c4;
          e13 = c4;
          e20 = sPixel.Interpolate(c4, c3, c6, 5, 2, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        case 216: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 217: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 218: {
          e22 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 219: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 220: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e22 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = sPixel.Interpolate(c4, c6, 3, 1);
            e21 = sPixel.Interpolate(c4, c6, 7, 1);
            e30 = sPixel.Interpolate(c4, c6, 5, 3);
            e31 = sPixel.Interpolate(c4, c6, 3, 1);
          } else {
            e20 = sPixel.Interpolate(c4, c3, 3, 1);
            e21 = c4;
            e30 = sPixel.Interpolate(c4, c3, c7, 2, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 3, 1);
          }
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 221: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e03 = sPixel.Interpolate(c4, c1, 5, 3);
            e13 = sPixel.Interpolate(c4, c1, 7, 1);
            e22 = c4;
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e03 = sPixel.Interpolate(c4, c5, 3, 1);
            e13 = sPixel.Interpolate(c5, c4, 3, 1);
            e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
            e23 = sPixel.Interpolate(c5, c7, 5, 3);
            e32 = sPixel.Interpolate(c7, c4, c5, 2, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 222: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 223: {
          e02 = c4;
          e11 = c4;
          e12 = c4;
          e13 = c4;
          e20 = sPixel.Interpolate(c4, c6, 3, 1);
          e21 = sPixel.Interpolate(c4, c6, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c6, 5, 3);
          e31 = sPixel.Interpolate(c4, c6, 3, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        case 224:
        case 225:
        case 228:
        case 229: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 226: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 227: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 230: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 231: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
        }
        break;
        case 232:
        case 236: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e21 = c4;
            e30 = c4;
            e31 = c4;
            e32 = sPixel.Interpolate(c4, c5, 7, 1);
            e33 = sPixel.Interpolate(c4, c5, 5, 3);
          } else {
            e20 = sPixel.Interpolate(c3, c4, c7, 2, 1, 1);
            e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c7, c3, 5, 3);
            e32 = sPixel.Interpolate(c7, c4, 3, 1);
            e33 = sPixel.Interpolate(c4, c7, 3, 1);
          }
        }
        break;
        case 233:
        case 237: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c5, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, c5, 6, 1, 1);
          e13 = sPixel.Interpolate(c4, c5, c1, 5, 2, 1);
          e20 = c4;
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e31 = c4;
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
        }
        break;
        case 234: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = sPixel.Interpolate(c4, c0, 5, 3);
            e01 = sPixel.Interpolate(c4, c0, 3, 1);
            e10 = sPixel.Interpolate(c4, c0, 3, 1);
            e11 = sPixel.Interpolate(c4, c0, 7, 1);
          } else {
            e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
            e01 = sPixel.Interpolate(c4, c1, 3, 1);
            e10 = sPixel.Interpolate(c4, c3, 3, 1);
            e11 = c4;
          }
        }
        break;
        case 235: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, c2, 5, 2, 1);
          e20 = c4;
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e31 = c4;
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 238: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e21 = c4;
            e30 = c4;
            e31 = c4;
            e32 = sPixel.Interpolate(c4, c5, 7, 1);
            e33 = sPixel.Interpolate(c4, c5, 5, 3);
          } else {
            e20 = sPixel.Interpolate(c3, c4, c7, 2, 1, 1);
            e21 = sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c7, c3, 5, 3);
            e32 = sPixel.Interpolate(c7, c4, 3, 1);
            e33 = sPixel.Interpolate(c4, c7, 3, 1);
          }
        }
        break;
        case 239: {
          e01 = c4;
          e02 = sPixel.Interpolate(c4, c5, 7, 1);
          e03 = sPixel.Interpolate(c4, c5, 5, 3);
          e10 = c4;
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c5, 7, 1);
          e13 = sPixel.Interpolate(c4, c5, 5, 3);
          e20 = c4;
          e21 = c4;
          e22 = sPixel.Interpolate(c4, c5, 7, 1);
          e23 = sPixel.Interpolate(c4, c5, 5, 3);
          e31 = c4;
          e32 = sPixel.Interpolate(c4, c5, 7, 1);
          e33 = sPixel.Interpolate(c4, c5, 5, 3);
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
        }
        break;
        case 240:
        case 241: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e22 = c4;
            e23 = c4;
            e30 = sPixel.Interpolate(c4, c3, 5, 3);
            e31 = sPixel.Interpolate(c4, c3, 7, 1);
            e32 = c4;
            e33 = c4;
          } else {
            e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
            e23 = sPixel.Interpolate(c5, c4, c7, 2, 1, 1);
            e30 = sPixel.Interpolate(c4, c7, 3, 1);
            e31 = sPixel.Interpolate(c7, c4, 3, 1);
            e32 = sPixel.Interpolate(c7, c5, 5, 3);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 242: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = c4;
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c5)) {
            e02 = sPixel.Interpolate(c4, c2, 3, 1);
            e03 = sPixel.Interpolate(c4, c2, 5, 3);
            e12 = sPixel.Interpolate(c4, c2, 7, 1);
            e13 = sPixel.Interpolate(c4, c2, 3, 1);
          } else {
            e02 = sPixel.Interpolate(c4, c1, 3, 1);
            e03 = sPixel.Interpolate(c4, c1, c5, 2, 1, 1);
            e12 = c4;
            e13 = sPixel.Interpolate(c4, c5, 3, 1);
          }
        }
        break;
        case 243: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          if (c7.IsNotLike(c5)) {
            e22 = c4;
            e23 = c4;
            e30 = sPixel.Interpolate(c4, c3, 5, 3);
            e31 = sPixel.Interpolate(c4, c3, 7, 1);
            e32 = c4;
            e33 = c4;
          } else {
            e22 = sPixel.Interpolate(c4, c5, c7, 6, 1, 1);
            e23 = sPixel.Interpolate(c5, c4, c7, 2, 1, 1);
            e30 = sPixel.Interpolate(c4, c7, 3, 1);
            e31 = sPixel.Interpolate(c7, c4, 3, 1);
            e32 = sPixel.Interpolate(c7, c5, 5, 3);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 244:
        case 245: {
          e00 = sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
          e01 = sPixel.Interpolate(c4, c1, c3, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c3, c1, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c1, c3, 6, 1, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = c4;
          e23 = c4;
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = c4;
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
        }
        break;
        case 246: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c3, c0, 5, 2, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = c4;
          e23 = c4;
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = c4;
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 247: {
          e00 = sPixel.Interpolate(c4, c3, 5, 3);
          e01 = sPixel.Interpolate(c4, c3, 7, 1);
          e02 = c4;
          e10 = sPixel.Interpolate(c4, c3, 5, 3);
          e11 = sPixel.Interpolate(c4, c3, 7, 1);
          e12 = c4;
          e13 = c4;
          e20 = sPixel.Interpolate(c4, c3, 5, 3);
          e21 = sPixel.Interpolate(c4, c3, 7, 1);
          e22 = c4;
          e23 = c4;
          e30 = sPixel.Interpolate(c4, c3, 5, 3);
          e31 = sPixel.Interpolate(c4, c3, 7, 1);
          e32 = c4;
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        case 249: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, c2, 5, 2, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = c4;
          e21 = c4;
          e22 = c4;
          e31 = c4;
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 250: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e21 = c4;
          e22 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
        }
        break;
        case 251: {
          e02 = sPixel.Interpolate(c4, c2, 3, 1);
          e03 = sPixel.Interpolate(c4, c2, 5, 3);
          e11 = c4;
          e12 = sPixel.Interpolate(c4, c2, 7, 1);
          e13 = sPixel.Interpolate(c4, c2, 3, 1);
          e20 = c4;
          e21 = c4;
          e22 = c4;
          e31 = c4;
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
          if (c7.IsNotLike(c5)) {
            e23 = c4;
            e32 = c4;
            e33 = c4;
          } else {
            e23 = sPixel.Interpolate(c4, c5, 1, 1);
            e32 = sPixel.Interpolate(c4, c7, 1, 1);
            e33 = sPixel.Interpolate(c5, c7, 1, 1);
          }
          if (c1.IsNotLike(c3)) {
            e00 = c4;
            e01 = c4;
            e10 = c4;
          } else {
            e00 = sPixel.Interpolate(c1, c3, 1, 1);
            e01 = sPixel.Interpolate(c1, c4, 1, 1);
            e10 = sPixel.Interpolate(c3, c4, 1, 1);
          }
        }
        break;
        case 252: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, c0, 5, 2, 1);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e21 = c4;
          e22 = c4;
          e23 = c4;
          e32 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
        }
        break;
        case 253: {
          e00 = sPixel.Interpolate(c4, c1, 5, 3);
          e01 = sPixel.Interpolate(c4, c1, 5, 3);
          e02 = sPixel.Interpolate(c4, c1, 5, 3);
          e03 = sPixel.Interpolate(c4, c1, 5, 3);
          e10 = sPixel.Interpolate(c4, c1, 7, 1);
          e11 = sPixel.Interpolate(c4, c1, 7, 1);
          e12 = sPixel.Interpolate(c4, c1, 7, 1);
          e13 = sPixel.Interpolate(c4, c1, 7, 1);
          e20 = c4;
          e21 = c4;
          e22 = c4;
          e23 = c4;
          e31 = c4;
          e32 = c4;
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
        }
        break;
        case 254: {
          e00 = sPixel.Interpolate(c4, c0, 5, 3);
          e01 = sPixel.Interpolate(c4, c0, 3, 1);
          e10 = sPixel.Interpolate(c4, c0, 3, 1);
          e11 = sPixel.Interpolate(c4, c0, 7, 1);
          e12 = c4;
          e21 = c4;
          e22 = c4;
          e23 = c4;
          e32 = c4;
          if (c7.IsNotLike(c3)) {
            e20 = c4;
            e30 = c4;
            e31 = c4;
          } else {
            e20 = sPixel.Interpolate(c3, c4, 1, 1);
            e30 = sPixel.Interpolate(c3, c7, 1, 1);
            e31 = sPixel.Interpolate(c4, c7, 1, 1);
          }
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
          if (c1.IsNotLike(c5)) {
            e02 = c4;
            e03 = c4;
            e13 = c4;
          } else {
            e02 = sPixel.Interpolate(c1, c4, 1, 1);
            e03 = sPixel.Interpolate(c1, c5, 1, 1);
            e13 = sPixel.Interpolate(c4, c5, 1, 1);
          }
        }
        break;
        case 255: {
          e01 = c4;
          e02 = c4;
          e10 = c4;
          e11 = c4;
          e12 = c4;
          e13 = c4;
          e20 = c4;
          e21 = c4;
          e22 = c4;
          e23 = c4;
          e31 = c4;
          e32 = c4;
          e30 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
          e33 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
          e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
          e03 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
        }
        break;
        #endregion
      }
      worker.TargetP0P0(e00);
      worker.TargetP1P0(e01);
      worker.TargetP2P0(e02);
      worker.TargetP3P0(e03);
      worker.TargetP0P1(e10);
      worker.TargetP1P1(e11);
      worker.TargetP2P1(e12);
      worker.TargetP3P1(e13);
      worker.TargetP0P2(e20);
      worker.TargetP1P2(e21);
      worker.TargetP2P2(e22);
      worker.TargetP3P2(e23);
      worker.TargetP0P3(e30);
      worker.TargetP1P3(e31);
      worker.TargetP2P3(e32);
      worker.TargetP3P3(e33);
    }
Example #37
0
 public static void Lq2xKernel(byte pattern, sPixel c0, sPixel c1, sPixel c2, sPixel c3, sPixel c4, sPixel c5, sPixel c6, sPixel c7, sPixel c8, PixelWorker<sPixel> worker) {
   sPixel e01, e10, e11;
   var e00 = e01 = e10 = e11 = c4;
   switch (pattern) {
     #region LQ2x PATTERNS
     case 0:
     case 2:
     case 4:
     case 6:
     case 8:
     case 12:
     case 16:
     case 20:
     case 24:
     case 28:
     case 32:
     case 34:
     case 36:
     case 38:
     case 40:
     case 44:
     case 48:
     case 52:
     case 56:
     case 60:
     case 64:
     case 66:
     case 68:
     case 70:
     case 96:
     case 98:
     case 100:
     case 102:
     case 128:
     case 130:
     case 132:
     case 134:
     case 136:
     case 140:
     case 144:
     case 148:
     case 152:
     case 156:
     case 160:
     case 162:
     case 164:
     case 166:
     case 168:
     case 172:
     case 176:
     case 180:
     case 184:
     case 188:
     case 192:
     case 194:
     case 196:
     case 198:
     case 224:
     case 226:
     case 228:
     case 230: {
       e00 = c0;
       e01 = c0;
       e10 = c0;
       e11 = c0;
     }
     break;
     case 1:
     case 5:
     case 9:
     case 13:
     case 17:
     case 21:
     case 25:
     case 29:
     case 33:
     case 37:
     case 41:
     case 45:
     case 49:
     case 53:
     case 57:
     case 61:
     case 65:
     case 69:
     case 97:
     case 101:
     case 129:
     case 133:
     case 137:
     case 141:
     case 145:
     case 149:
     case 153:
     case 157:
     case 161:
     case 165:
     case 169:
     case 173:
     case 177:
     case 181:
     case 185:
     case 189:
     case 193:
     case 197:
     case 225:
     case 229: {
       e00 = c1;
       e01 = c1;
       e10 = c1;
       e11 = c1;
     }
     break;
     case 3:
     case 35:
     case 67:
     case 99:
     case 131:
     case 163:
     case 195:
     case 227: {
       e00 = c2;
       e01 = c2;
       e10 = c2;
       e11 = c2;
     }
     break;
     case 7:
     case 39:
     case 71:
     case 103:
     case 135:
     case 167:
     case 199:
     case 231: {
       e00 = c3;
       e01 = c3;
       e10 = c3;
       e11 = c3;
     }
     break;
     case 10:
     case 138: {
       e01 = c0;
       e10 = c0;
       e11 = c0;
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 2, 1, 1));
     }
     break;
     case 11:
     case 27:
     case 75:
     case 139:
     case 155:
     case 203: {
       e01 = c2;
       e10 = c2;
       e11 = c2;
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
     }
     break;
     case 14:
     case 142: {
       e10 = c0;
       e11 = c0;
       if (c1.IsNotLike(c3)) {
         e00 = c0;
         e01 = c0;
       } else {
         e00 = sPixel.Interpolate(c1, c3, c0, 3, 3, 2);
         e01 = sPixel.Interpolate(c0, c1, 3, 1);
       }
     }
     break;
     case 15:
     case 143:
     case 207: {
       e10 = c4;
       e11 = c4;
       if (c1.IsNotLike(c3)) {
         e00 = c4;
         e01 = c4;
       } else {
         e00 = sPixel.Interpolate(c1, c3, c4, 3, 3, 2);
         e01 = sPixel.Interpolate(c4, c1, 3, 1);
       }
     }
     break;
     case 18:
     case 22:
     case 30:
     case 50:
     case 54:
     case 62:
     case 86:
     case 118: {
       e00 = c0;
       e10 = c0;
       e11 = c0;
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 19:
     case 51: {
       e10 = c2;
       e11 = c2;
       if (c1.IsNotLike(c5)) {
         e00 = c2;
         e01 = c2;
       } else {
         e00 = sPixel.Interpolate(c2, c1, 3, 1);
         e01 = sPixel.Interpolate(c1, c5, c2, 3, 3, 2);
       }
     }
     break;
     case 23:
     case 55:
     case 119: {
       e10 = c3;
       e11 = c3;
       if (c1.IsNotLike(c5)) {
         e00 = c3;
         e01 = c3;
       } else {
         e00 = sPixel.Interpolate(c3, c1, 3, 1);
         e01 = sPixel.Interpolate(c1, c5, c3, 3, 3, 2);
       }
     }
     break;
     case 26: {
       e10 = c0;
       e11 = c0;
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 31:
     case 95: {
       e10 = c4;
       e11 = c4;
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
     }
     break;
     case 42:
     case 170: {
       e01 = c0;
       e11 = c0;
       if (c1.IsNotLike(c3)) {
         e00 = c0;
         e10 = c0;
       } else {
         e00 = sPixel.Interpolate(c1, c3, c0, 3, 3, 2);
         e10 = sPixel.Interpolate(c0, c3, 3, 1);
       }
     }
     break;
     case 43:
     case 171:
     case 187: {
       e01 = c2;
       e11 = c2;
       if (c1.IsNotLike(c3)) {
         e00 = c2;
         e10 = c2;
       } else {
         e00 = sPixel.Interpolate(c1, c3, c2, 3, 3, 2);
         e10 = sPixel.Interpolate(c2, c3, 3, 1);
       }
     }
     break;
     case 46:
     case 174: {
       e01 = c0;
       e10 = c0;
       e11 = c0;
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
     }
     break;
     case 47:
     case 175: {
       e01 = c4;
       e10 = c4;
       e11 = c4;
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
     }
     break;
     case 58:
     case 154:
     case 186: {
       e10 = c0;
       e11 = c0;
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 6, 1, 1));
     }
     break;
     case 59: {
       e10 = c2;
       e11 = c2;
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c1, c5, 6, 1, 1));
     }
     break;
     case 63: {
       e10 = c4;
       e11 = c4;
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
     }
     break;
     case 72:
     case 76:
     case 104:
     case 106:
     case 108:
     case 110:
     case 120:
     case 124: {
       e00 = c0;
       e01 = c0;
       e11 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
     }
     break;
     case 73:
     case 77:
     case 105:
     case 109:
     case 125: {
       e01 = c1;
       e11 = c1;
       if (c7.IsNotLike(c3)) {
         e00 = c1;
         e10 = c1;
       } else {
         e00 = sPixel.Interpolate(c1, c3, 3, 1);
         e10 = sPixel.Interpolate(c3, c7, c1, 3, 3, 2);
       }
     }
     break;
     case 74: {
       e01 = c0;
       e11 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 2, 1, 1));
     }
     break;
     case 78:
     case 202:
     case 206: {
       e01 = c0;
       e11 = c0;
       e10 = c7.IsNotLike(c3) ? c0 : sPixel.Interpolate(c0, c3, c7, 6, 1, 1);
       e00 = c1.IsNotLike(c3) ? c0 : sPixel.Interpolate(c0, c1, c3, 6, 1, 1);
     }
     break;
     case 79: {
       e01 = c4;
       e11 = c4;
       e10 = c7.IsNotLike(c3) ? c4 : sPixel.Interpolate(c4, c3, c7, 6, 1, 1);
       e00 = c1.IsNotLike(c3) ? c4 : sPixel.Interpolate(c4, c1, c3, 2, 1, 1);
     }
     break;
     case 80:
     case 208:
     case 210:
     case 216: {
       e00 = c0;
       e01 = c0;
       e10 = c0;
       e11 = c7.IsNotLike(c5) ? c0 : sPixel.Interpolate(c0, c5, c7, 2, 1, 1);
     }
     break;
     case 81:
     case 209:
     case 217: {
       e00 = c1;
       e01 = c1;
       e10 = c1;
       e11 = c7.IsNotLike(c5) ? c1 : sPixel.Interpolate(c1, c5, c7, 2, 1, 1);
     }
     break;
     case 82:
     case 214:
     case 222: {
       e00 = c0;
       e10 = c0;
       e11 = c7.IsNotLike(c5) ? c0 : sPixel.Interpolate(c0, c5, c7, 2, 1, 1);
       e01 = c1.IsNotLike(c5) ? c0 : sPixel.Interpolate(c0, c1, c5, 2, 1, 1);
     }
     break;
     case 83:
     case 115: {
       e00 = c2;
       e10 = c2;
       e11 = (c7.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c5, c7, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c1, c5, 6, 1, 1));
     }
     break;
     case 84:
     case 212: {
       e00 = c0;
       e10 = c0;
       if (c7.IsNotLike(c5)) {
         e01 = c0;
         e11 = c0;
       } else {
         e01 = sPixel.Interpolate(c0, c5, 3, 1);
         e11 = sPixel.Interpolate(c5, c7, c0, 3, 3, 2);
       }
     }
     break;
     case 85:
     case 213:
     case 221: {
       e00 = c1;
       e10 = c1;
       if (c7.IsNotLike(c5)) {
         e01 = c1;
         e11 = c1;
       } else {
         e01 = sPixel.Interpolate(c1, c5, 3, 1);
         e11 = sPixel.Interpolate(c5, c7, c1, 3, 3, 2);
       }
     }
     break;
     case 87: {
       e00 = c3;
       e10 = c3;
       e11 = (c7.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c5, c7, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c1, c5, 2, 1, 1));
     }
     break;
     case 88:
     case 248:
     case 250: {
       e00 = c0;
       e01 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 2, 1, 1));
     }
     break;
     case 89:
     case 93: {
       e00 = c1;
       e01 = c1;
       e10 = (c7.IsNotLike(c3)) ? (c1) : (sPixel.Interpolate(c1, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c1) : (sPixel.Interpolate(c1, c5, c7, 6, 1, 1));
     }
     break;
     case 90: {
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 6, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 6, 1, 1));
     }
     break;
     case 91: {
       e10 = (c7.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c5, c7, 6, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c1, c5, 6, 1, 1));
     }
     break;
     case 92: {
       e00 = c0;
       e01 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 6, 1, 1));
     }
     break;
     case 94: {
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 6, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 107:
     case 123: {
       e01 = c2;
       e11 = c2;
       e10 = (c7.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c3, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
     }
     break;
     case 111: {
       e01 = c4;
       e11 = c4;
       e10 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
     }
     break;
     case 112:
     case 240: {
       e00 = c0;
       e01 = c0;
       if (c7.IsNotLike(c5)) {
         e10 = c0;
         e11 = c0;
       } else {
         e10 = sPixel.Interpolate(c0, c7, 3, 1);
         e11 = sPixel.Interpolate(c5, c7, c0, 3, 3, 2);
       }
     }
     break;
     case 113:
     case 241: {
       e00 = c1;
       e01 = c1;
       if (c7.IsNotLike(c5)) {
         e10 = c1;
         e11 = c1;
       } else {
         e10 = sPixel.Interpolate(c1, c7, 3, 1);
         e11 = sPixel.Interpolate(c5, c7, c1, 3, 3, 2);
       }
     }
     break;
     case 114: {
       e00 = c0;
       e10 = c0;
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 6, 1, 1));
     }
     break;
     case 116: {
       e00 = c0;
       e01 = c0;
       e10 = c0;
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 6, 1, 1));
     }
     break;
     case 117: {
       e00 = c1;
       e01 = c1;
       e10 = c1;
       e11 = (c7.IsNotLike(c5)) ? (c1) : (sPixel.Interpolate(c1, c5, c7, 6, 1, 1));
     }
     break;
     case 121: {
       e00 = c1;
       e01 = c1;
       e10 = (c7.IsNotLike(c3)) ? (c1) : (sPixel.Interpolate(c1, c3, c7, 2, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c1) : (sPixel.Interpolate(c1, c5, c7, 6, 1, 1));
     }
     break;
     case 122: {
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 6, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 6, 1, 1));
     }
     break;
     case 126: {
       e00 = c0;
       e11 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 127: {
       e11 = c4;
       e10 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 2, 1, 1));
     }
     break;
     case 146:
     case 150:
     case 178:
     case 182:
     case 190: {
       e00 = c0;
       e10 = c0;
       if (c1.IsNotLike(c5)) {
         e01 = c0;
         e11 = c0;
       } else {
         e01 = sPixel.Interpolate(c1, c5, c0, 3, 3, 2);
         e11 = sPixel.Interpolate(c0, c5, 3, 1);
       }
     }
     break;
     case 147:
     case 179: {
       e00 = c2;
       e10 = c2;
       e11 = c2;
       e01 = (c1.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c1, c5, 6, 1, 1));
     }
     break;
     case 151:
     case 183: {
       e00 = c3;
       e10 = c3;
       e11 = c3;
       e01 = (c1.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c1, c5, 14, 1, 1));
     }
     break;
     case 158: {
       e10 = c0;
       e11 = c0;
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 159: {
       e10 = c4;
       e11 = c4;
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 14, 1, 1));
     }
     break;
     case 191: {
       e10 = c4;
       e11 = c4;
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 14, 1, 1));
     }
     break;
     case 200:
     case 204:
     case 232:
     case 236:
     case 238: {
       e00 = c0;
       e01 = c0;
       if (c7.IsNotLike(c3)) {
         e10 = c0;
         e11 = c0;
       } else {
         e10 = sPixel.Interpolate(c3, c7, c0, 3, 3, 2);
         e11 = sPixel.Interpolate(c0, c7, 3, 1);
       }
     }
     break;
     case 201:
     case 205: {
       e00 = c1;
       e01 = c1;
       e11 = c1;
       e10 = (c7.IsNotLike(c3)) ? (c1) : (sPixel.Interpolate(c1, c3, c7, 6, 1, 1));
     }
     break;
     case 211: {
       e00 = c2;
       e01 = c2;
       e10 = c2;
       e11 = (c7.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c5, c7, 2, 1, 1));
     }
     break;
     case 215: {
       e00 = c3;
       e10 = c3;
       e11 = (c7.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c5, c7, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c1, c5, 14, 1, 1));
     }
     break;
     case 218: {
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 6, 1, 1));
     }
     break;
     case 219: {
       e01 = c2;
       e10 = c2;
       e11 = (c7.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c5, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
     }
     break;
     case 220: {
       e00 = c0;
       e01 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 6, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 2, 1, 1));
     }
     break;
     case 223: {
       e10 = c4;
       e11 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 14, 1, 1));
     }
     break;
     case 233:
     case 237: {
       e00 = c1;
       e01 = c1;
       e11 = c1;
       e10 = (c7.IsNotLike(c3)) ? (c1) : (sPixel.Interpolate(c1, c3, c7, 14, 1, 1));
     }
     break;
     case 234: {
       e01 = c0;
       e11 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c1, c3, 6, 1, 1));
     }
     break;
     case 235: {
       e01 = c2;
       e11 = c2;
       e10 = (c7.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c3, c7, 14, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
     }
     break;
     case 239: {
       e01 = c4;
       e11 = c4;
       e10 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 14, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
     }
     break;
     case 242: {
       e00 = c0;
       e10 = c0;
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 2, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 6, 1, 1));
     }
     break;
     case 243: {
       e00 = c2;
       e01 = c2;
       if (c7.IsNotLike(c5)) {
         e10 = c2;
         e11 = c2;
       } else {
         e10 = sPixel.Interpolate(c2, c7, 3, 1);
         e11 = sPixel.Interpolate(c5, c7, c2, 3, 3, 2);
       }
     }
     break;
     case 244: {
       e00 = c0;
       e01 = c0;
       e10 = c0;
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 14, 1, 1));
     }
     break;
     case 245: {
       e00 = c1;
       e01 = c1;
       e10 = c1;
       e11 = (c7.IsNotLike(c5)) ? (c1) : (sPixel.Interpolate(c1, c5, c7, 14, 1, 1));
     }
     break;
     case 246: {
       e00 = c0;
       e10 = c0;
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 247: {
       e00 = c3;
       e10 = c3;
       e11 = (c7.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c5, c7, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c3) : (sPixel.Interpolate(c3, c1, c5, 14, 1, 1));
     }
     break;
     case 249: {
       e00 = c1;
       e01 = c1;
       e10 = (c7.IsNotLike(c3)) ? (c1) : (sPixel.Interpolate(c1, c3, c7, 14, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c1) : (sPixel.Interpolate(c1, c5, c7, 2, 1, 1));
     }
     break;
     case 251: {
       e01 = c2;
       e10 = (c7.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c3, c7, 14, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c2) : (sPixel.Interpolate(c2, c5, c7, 2, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c2) : (sPixel.Interpolate(c2, c1, c3, 2, 1, 1));
     }
     break;
     case 252: {
       e00 = c0;
       e01 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 14, 1, 1));
     }
     break;
     case 253: {
       e00 = c1;
       e01 = c1;
       e10 = (c7.IsNotLike(c3)) ? (c1) : (sPixel.Interpolate(c1, c3, c7, 14, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c1) : (sPixel.Interpolate(c1, c5, c7, 14, 1, 1));
     }
     break;
     case 254: {
       e00 = c0;
       e10 = (c7.IsNotLike(c3)) ? (c0) : (sPixel.Interpolate(c0, c3, c7, 2, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c5, c7, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c0) : (sPixel.Interpolate(c0, c1, c5, 2, 1, 1));
     }
     break;
     case 255: {
       e10 = (c7.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c3, c7, 14, 1, 1));
       e11 = (c7.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c5, c7, 14, 1, 1));
       e00 = (c1.IsNotLike(c3)) ? (c4) : (sPixel.Interpolate(c4, c1, c3, 14, 1, 1));
       e01 = (c1.IsNotLike(c5)) ? (c4) : (sPixel.Interpolate(c4, c1, c5, 14, 1, 1));
     }
     break;
     #endregion
   }
   worker.TargetP0P0(e00);
   worker.TargetP1P0(e01);
   worker.TargetP0P1(e10);
   worker.TargetP1P1(e11);
 }
Example #38
0
 public void BlendCorner(sPixel col, OutputMatrix output) {
   //model a round corner
   _AlphaBlend(86, 100, output.Reference(4, 4), col); //exact: 0.8631434088
   _AlphaBlend(23, 100, output.Reference(4, 3), col); //0.2306749731
   _AlphaBlend(23, 100, output.Reference(3, 4), col); //0.2306749731
   //alphaBlend(8, 1000, out.ref(4, 2), col); //0.008384061834 -> negligable
   //alphaBlend(8, 1000, out.ref(2, 4), col); //0.008384061834
 }
Example #39
0
 public void BlendLineSteepAndShallow(sPixel col, OutputMatrix output) {
   _AlphaBlend(3, 4, output.Reference(3, 1), col);
   _AlphaBlend(3, 4, output.Reference(1, 3), col);
   _AlphaBlend(1, 4, output.Reference(3, 0), col);
   _AlphaBlend(1, 4, output.Reference(0, 3), col);
   _AlphaBlend(1, 3, output.Reference(2, 2), col); //[!] fixes 1/4 used in xBR
   output.Reference(3, 3).SetPixel(col);
   output.Reference(3, 2).SetPixel(col);
   output.Reference(2, 3).SetPixel(col);
 }
Example #40
0
 private static void _AlphaBlend224W(ref sPixel dst, sPixel src, bool blend) {
   dst = blend ? sPixel.Interpolate(dst, src, 1, 7) : src;
 }
Example #41
0
 private static void _Dia(out sPixel n15, ref sPixel n14, ref sPixel n11, sPixel pixel, bool blend)
 {
     _AlphaBlend128W(ref n11, pixel, blend);
     _AlphaBlend128W(ref n14, pixel, blend);
     n15 = pixel;
 }
Example #42
0
 private static void _LeftUp2_2X(ref sPixel n3, ref sPixel n2, out sPixel n1, sPixel pixel, bool blend) {
   _AlphaBlend224W(ref n3, pixel, blend);
   _AlphaBlend64W(ref n2, pixel, blend);
   n1 = n2;
 }
Example #43
0
 private static void _Left2(out sPixel n15, out sPixel n14, ref sPixel n11, ref sPixel n13, ref sPixel n12, ref sPixel n10, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n11, pixel, blend);
   _AlphaBlend192W(ref n13, pixel, blend);
   _AlphaBlend64W(ref n10, pixel, blend);
   _AlphaBlend64W(ref n12, pixel, blend);
   n14 = pixel;
   n15 = pixel;
 }
Example #44
0
 private static void _Left2_2X(ref sPixel n3, ref sPixel n2, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n3, pixel, blend);
   _AlphaBlend64W(ref n2, pixel, blend);
 }
Example #45
0
 private static void _Dia(out sPixel n15, ref sPixel n14, ref sPixel n11, sPixel pixel, bool blend) {
   _AlphaBlend128W(ref n11, pixel, blend);
   _AlphaBlend128W(ref n14, pixel, blend);
   n15 = pixel;
 }
Example #46
0
 private static void _Up2_2X(ref sPixel n3, ref sPixel n1, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n3, pixel, blend);
   _AlphaBlend64W(ref n1, pixel, blend);
 }
Example #47
0
 public void BlendLineDiagonal(sPixel col, OutputMatrix output) {
   _AlphaBlend(1, 8, output.Reference(_SCALE - 1, _SCALE / 2), col);
   _AlphaBlend(1, 8, output.Reference(_SCALE - 2, _SCALE / 2 + 1), col);
   _AlphaBlend(1, 8, output.Reference(_SCALE - 3, _SCALE / 2 + 2), col);
   _AlphaBlend(7, 8, output.Reference(4, 3), col);
   _AlphaBlend(7, 8, output.Reference(3, 4), col);
   output.Reference(4, 4).SetPixel(col);
 }
Example #48
0
 private static void _Dia_2X(ref sPixel n3, sPixel pixel, bool blend) {
   _AlphaBlend128W(ref n3, pixel, blend);
 }
Example #49
0
 private static void _Up2_2X(ref sPixel n3, ref sPixel n1, sPixel pixel, bool blend)
 {
     _AlphaBlend192W(ref n3, pixel, blend);
     _AlphaBlend64W(ref n1, pixel, blend);
 }
Example #50
0
 private static void _LeftUp2_3X(ref sPixel n7, out sPixel n5, ref sPixel n6, ref sPixel n2, out sPixel n8, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n7, pixel, blend);
   _AlphaBlend64W(ref n6, pixel, blend);
   n5 = n7;
   n2 = n6;
   n8 = pixel;
 }
Example #51
0
 public void BlendLineSteepAndShallow(sPixel col, OutputMatrix output) {
   _AlphaBlend(1, 4, output.Reference(0, _SCALE - 1), col);
   _AlphaBlend(1, 4, output.Reference(2, _SCALE - 2), col);
   _AlphaBlend(3, 4, output.Reference(1, _SCALE - 1), col);
   _AlphaBlend(1, 4, output.Reference(_SCALE - 1, 0), col);
   _AlphaBlend(1, 4, output.Reference(_SCALE - 2, 2), col);
   _AlphaBlend(3, 4, output.Reference(_SCALE - 1, 1), col);
   output.Reference(2, _SCALE - 1).SetPixel(col);
   output.Reference(3, _SCALE - 1).SetPixel(col);
   output.Reference(_SCALE - 1, 2).SetPixel(col);
   output.Reference(_SCALE - 1, 3).SetPixel(col);
   output.Reference(4, _SCALE - 1).SetPixel(col);
   _AlphaBlend(2, 3, output.Reference(3, 3), col);
 }
Example #52
0
 private static void _Up2_3X(ref sPixel n5, ref sPixel n7, ref sPixel n2, out sPixel n8, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n5, pixel, blend);
   _AlphaBlend64W(ref n7, pixel, blend);
   _AlphaBlend64W(ref n2, pixel, blend);
   n8 = pixel;
 }
Example #53
0
 private static void _Dia_3X(ref sPixel n8, ref sPixel n5, ref sPixel n7, sPixel pixel, bool blend)
 {
     _AlphaBlend224W(ref n8, pixel, blend);
     _AlphaBlend32W(ref n5, pixel, blend);
     _AlphaBlend32W(ref n7, pixel, blend);
 }
Example #54
0
 private static void _Dia_3X(ref sPixel n8, ref sPixel n5, ref sPixel n7, sPixel pixel, bool blend) {
   _AlphaBlend224W(ref n8, pixel, blend);
   _AlphaBlend32W(ref n5, pixel, blend);
   _AlphaBlend32W(ref n7, pixel, blend);
 }
Example #55
0
 public void BlendCorner(sPixel col, OutputMatrix output) {
   //model a round corner
   _AlphaBlend(68, 100, output.Reference(3, 3), col); //exact: 0.6848532563
   _AlphaBlend(9, 100, output.Reference(3, 2), col); //0.08677704501
   _AlphaBlend(9, 100, output.Reference(2, 3), col); //0.08677704501
 }
Example #56
0
    private static void _Kernel3X(sPixel pe, sPixel pi, sPixel ph, sPixel pf, sPixel pg, sPixel pc, sPixel pd, sPixel pb, sPixel f4, sPixel i4, sPixel h5, sPixel i5, ref sPixel n2, ref sPixel n5, ref sPixel n6, ref sPixel n7, ref sPixel n8, bool blend, bool useOriginalImplementation) {
      var ex = (pe != ph && pe != pf);
      if (!ex)
        return;

      var e = (_YuvDifference(pe, pc) + _YuvDifference(pe, pg) + _YuvDifference(pi, h5) + _YuvDifference(pi, f4)) + (_YuvDifference(ph, pf) << 2);
      var i = (_YuvDifference(ph, pd) + _YuvDifference(ph, i5) + _YuvDifference(pf, i4) + _YuvDifference(pf, pb)) + (_YuvDifference(pe, pi) << 2);

      bool state;
      if (useOriginalImplementation)
        state = ((e < i) && (!_IsEqual(pf, pb) && !_IsEqual(ph, pd) || _IsEqual(pe, pi) && (!_IsEqual(pf, i4) && !_IsEqual(ph, i5)) || _IsEqual(pe, pg) || _IsEqual(pe, pc)));
      else
        state = ((e < i) && (!_IsEqual(pf, pb) && !_IsEqual(pf, pc) || !_IsEqual(ph, pd) && !_IsEqual(ph, pg) || _IsEqual(pe, pi) && (!_IsEqual(pf, f4) && !_IsEqual(pf, i4) || !_IsEqual(ph, h5) && !_IsEqual(ph, i5)) || _IsEqual(pe, pg) || _IsEqual(pe, pc)));

      if (state) {
        var ke = _YuvDifference(pf, pg);
        var ki = _YuvDifference(ph, pc);
        var ex2 = (pe != pc && pb != pc);
        var ex3 = (pe != pg && pd != pg);
        var px = (_YuvDifference(pe, pf) <= _YuvDifference(pe, ph)) ? pf : ph;
        if (((ke << 1) <= ki) && ex3 && (ke >= (ki << 1)) && ex2) {
          _LeftUp2_3X(ref n7, out n5, ref n6, ref n2, out n8, px, blend);
        } else if (((ke << 1) <= ki) && ex3) {
          _Left2_3X(ref n7, ref n5, ref n6, out  n8, px, blend);
        } else if ((ke >= (ki << 1)) && ex2) {
          _Up2_3X(ref n5, ref n7, ref  n2, out n8, px, blend);
        } else {
          _Dia_3X(ref n8, ref n5, ref n7, px, blend);
        }
      } else if (e <= i) {
        _AlphaBlend128W(ref n8, ((_YuvDifference(pe, pf) <= _YuvDifference(pe, ph)) ? pf : ph), blend);
      }
    }
Example #57
0
 public void BlendCorner(sPixel col, OutputMatrix output) {
   //model a round corner
   _AlphaBlend(45, 100, output.Reference(2, 2), col); //exact: 0.4545939598
   //alphaBlend(14, 1000, out.ref(2, 1), col); //0.01413008627 -> negligable
   //alphaBlend(14, 1000, out.ref(1, 2), col); //0.01413008627
 }
Example #58
0
 private static void _LeftUp2(out sPixel n15, out sPixel n14, out sPixel n11, ref sPixel n13, ref sPixel n12, out sPixel n10, out sPixel n7, out sPixel n3, sPixel pixel, bool blend) {
   _AlphaBlend192W(ref n13, pixel, blend);
   _AlphaBlend64W(ref n12, pixel, blend);
   n15 = n14 = n11 = pixel;
   n10 = n3 = n12;
   n7 = n13;
 }
Example #59
0
 private static uint _YuvDifference(sPixel a, sPixel b) {
   return (a.AbsDifference(b));
 }
Example #60
0
    // private static double distNonLinearRGB(
    //  int pix1,
    //  int pix2
    // ) {
    //  //non-linear rgb: http://www.compuphase.com/cmetric.htm
    //  double r_diff = ((pix1 & redMask) - (pix2 & redMask)) >> 16; //we may delay division by 255 to after matrix multiplication
    //  double g_diff = ((pix1 & greenMask) - (pix2 & greenMask)) >> 8; //
    //  double b_diff = (pix1 & blueMask) - (pix2 & blueMask); //subtraction for int is noticeable faster than for double
    //
    //  double r_avg = (double)(((pix1 & redMask) + (pix2 & redMask)) >> 16) / 2;
    //  return ((2 + r_avg / 255) * square(r_diff) + 4 * square(g_diff) + (2 + (255 - r_avg) / 255) * square(b_diff));
    // }

    private static double _ColorDist(sPixel pix1, sPixel pix2, double luminanceWeight) {
      return pix1 == pix2 ? 0 : _DistYCbCr(pix1, pix2, luminanceWeight);

      //  return distNonLinearRGB(pix1, pix2);
    }