/// <summary> /// MAME's AdvInterp2x, very similar to Scale2x but uses interpolation, modified by Hawkynt to support thresholds /// </summary> public static void AdvInterp2x(PixelWorker <sPixel> worker) { var c1 = worker.SourceP0M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c7 = worker.SourceP0P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c1.IsNotLike(c7) && c3.IsNotLike(c5)) { if (c3.IsLike(c1)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c1, c3), c4, 5, 3); } if (c5.IsLike(c1)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c1, c5), c4, 5, 3); } if (c3.IsLike(c7)) { e10 = sPixel.Interpolate(sPixel.Interpolate(c7, c3), c4, 5, 3); } if (c5.IsLike(c7)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c7, c5), c4, 5, 3); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
public static void DoUltra2XScl(PixelWorker <sPixel> worker) { var n = worker.SourceP0M1(); var w = worker.SourceM1P0(); var c = worker.SourceP0P0(); var e = worker.SourceP1P0(); var s = worker.SourceP0P1(); var cx = c; var wx = w; var ex = e; var cw = _Mixpal(c, w); var ce = _Mixpal(c, e); var p0 = (((w.IsLike(n)) && (n.IsNotLike(e)) && (w.IsNotLike(s))) ? wx : cw); var p1 = (((n.IsLike(e)) && (n.IsNotLike(w)) && (e.IsNotLike(s))) ? ex : ce); var p2 = (((w.IsLike(s)) && (w.IsNotLike(n)) && (s.IsNotLike(e))) ? wx : cw); var p3 = (((s.IsLike(e)) && (w.IsNotLike(s)) && (n.IsNotLike(e))) ? ex : ce); p0 = _Unmix(p0, cx); p1 = _Unmix(p1, cx); p2 = _Unmix(p2, cx); p3 = _Unmix(p3, cx); worker.TargetP0P0(p0); worker.TargetP1P0(p1); worker.TargetP0P1(p2); worker.TargetP1P1(p3); }
public static void DES2(PixelWorker <sPixel> worker) { var n = worker.SourceP0M1(); var w = worker.SourceM1P0(); var c = worker.SourceP0P0(); var e = worker.SourceP1P0(); var s = worker.SourceP0P1(); var se = worker.SourceP1P1(); var p0 = (((w.IsLike(n)) && (n.IsNotLike(e)) && (w.IsNotLike(s))) ? w : c); var p1 = (((n.IsLike(e)) && (n.IsNotLike(w)) && (e.IsNotLike(s))) ? e : c); var p2 = (((w.IsLike(s)) && (w.IsNotLike(n)) && (s.IsNotLike(e))) ? w : c); var p3 = (((s.IsLike(e)) && (w.IsNotLike(s)) && (n.IsNotLike(e))) ? e : c); var cx = c; var ce = sPixel.Interpolate(c, e, 3, 1); var cs = sPixel.Interpolate(c, s, 3, 1); var cse = sPixel.Interpolate(c, se, 3, 1); var d1 = sPixel.Interpolate(p0, cx, 3, 1); var d2 = sPixel.Interpolate(p1, ce, 3, 1); var d3 = sPixel.Interpolate(p2, cs, 3, 1); var d4 = sPixel.Interpolate(p3, cse, 3, 1); worker.TargetP0P0(d1); worker.TargetP1P0(d2); worker.TargetP0P1(d3); worker.TargetP1P1(d4); }
/// <summary> /// MAME's RGB 2x /// </summary> public static void Rgb2x(PixelWorker<sPixel> worker) { var pixel = worker.SourceP0P0(); worker.TargetP0P0(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P0(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP0P1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); worker.TargetP1P1(pixel); }
/// <summary> /// good old Eagle Engine modified by Hawkynt to support thresholds /// </summary> public static void Eagle2x(PixelWorker<sPixel>worker ) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if ((c1.IsLike(c0)) && (c1.IsLike(c3))) e00 = sPixel.Interpolate(c1, c0, c3); if ((c2.IsLike(c1)) && (c2.IsLike(c5))) e01 = sPixel.Interpolate(c2, c1, c5); if ((c6.IsLike(c3)) && (c6.IsLike(c7))) e10 = sPixel.Interpolate(c6, c3, c7); if ((c7.IsLike(c5)) && (c7.IsLike(c8))) e11 = sPixel.Interpolate(c7, c5, c8); worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// another bad one a made for MS-Dos in 1998 /// </summary> public static void Tv3x(PixelWorker <sPixel> worker) { var pixel = worker.SourceP0P0(); worker.TargetP0P0(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P0(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP2P0(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); if ((worker.SourceX() & 1) == 0) { worker.TargetP0P1(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); if (worker.SourceY() > 0) { worker.TargetP1M1(new sPixel(0, pixel.Green, 0, pixel.Alpha)); } worker.TargetP2P1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); } else { if (worker.SourceY() > 0) { worker.TargetP0M1(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); } worker.TargetP1P1(new sPixel(0, pixel.Green, 0, pixel.Alpha)); if (worker.SourceY() > 0) { worker.TargetP2M1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); } } }
public static void DES2(PixelWorker<sPixel> worker) { var n = worker.SourceP0M1(); var w = worker.SourceM1P0(); var c = worker.SourceP0P0(); var e = worker.SourceP1P0(); var s = worker.SourceP0P1(); var se = worker.SourceP1P1(); var p0 = (((w.IsLike(n)) && (n.IsNotLike(e)) && (w.IsNotLike(s))) ? w : c); var p1 = (((n.IsLike(e)) && (n.IsNotLike(w)) && (e.IsNotLike(s))) ? e : c); var p2 = (((w.IsLike(s)) && (w.IsNotLike(n)) && (s.IsNotLike(e))) ? w : c); var p3 = (((s.IsLike(e)) && (w.IsNotLike(s)) && (n.IsNotLike(e))) ? e : c); var cx = c; var ce = sPixel.Interpolate(c, e, 3, 1); var cs = sPixel.Interpolate(c, s, 3, 1); var cse = sPixel.Interpolate(c, se, 3, 1); var d1 = sPixel.Interpolate(p0, cx, 3, 1); var d2 = sPixel.Interpolate(p1, ce, 3, 1); var d3 = sPixel.Interpolate(p2, cs, 3, 1); var d4 = sPixel.Interpolate(p3, cse, 3, 1); worker.TargetP0P0(d1); worker.TargetP1P0(d2); worker.TargetP0P1(d3); worker.TargetP1P1(d4); }
/// <summary> /// just a bad old-school TV effect /// </summary> public static void Tv2x(PixelWorker<sPixel> worker) { var pixel = worker.SourceP0P0(); var luminance = pixel.Luminance; worker.TargetP0P0(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P0(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP0P1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); worker.TargetP1P1(sPixel.FromGrey(luminance, pixel.Alpha)); }
/// <summary> /// MAME's TV effect in 2x /// </summary> public static void Tv2x(PixelWorker<sPixel> worker) { var pixel = worker.SourceP0P0(); var subPixel = pixel * _gamma58; worker.TargetP0P0(pixel); worker.TargetP1P0(pixel); worker.TargetP0P1(subPixel); worker.TargetP1P1(subPixel); }
/// <summary> /// MAME's RGB 2x /// </summary> public static void Rgb2x(PixelWorker <sPixel> worker) { var pixel = worker.SourceP0P0(); worker.TargetP0P0(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P0(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP0P1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); worker.TargetP1P1(pixel); }
/// <summary> /// just a bad old-school TV effect /// </summary> public static void Tv2x(PixelWorker <sPixel> worker) { var pixel = worker.SourceP0P0(); var luminance = pixel.Luminance; worker.TargetP0P0(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P0(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP0P1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); worker.TargetP1P1(sPixel.FromGrey(luminance, pixel.Alpha)); }
/// <summary> /// MAME's TV effect in 2x /// </summary> public static void Tv2x(PixelWorker <sPixel> worker) { var pixel = worker.SourceP0P0(); var subPixel = pixel * _gamma58; worker.TargetP0P0(pixel); worker.TargetP1P0(pixel); worker.TargetP0P1(subPixel); worker.TargetP1P1(subPixel); }
/// <summary> /// This is the XBR4x by Hyllian (see http://board.byuu.org/viewtopic.php?f=10&t=2248) /// </summary> public static void Xbr4X(PixelWorker <sPixel> worker, bool allowAlphaBlending) { Contract.Assume(worker != null); var a1 = worker.SourceM1M2(); var b1 = worker.SourceP0M2(); var c1 = worker.SourceP1M2(); var a0 = worker.SourceM2M1(); var pa = worker.SourceM1M1(); var pb = worker.SourceP0M1(); var pc = worker.SourceP1M1(); var c4 = worker.SourceP2M1(); var d0 = worker.SourceM2P0(); var pd = worker.SourceM1P0(); var pe = worker.SourceP0P0(); var pf = worker.SourceP1P0(); var f4 = worker.SourceP2P0(); var g0 = worker.SourceM2P1(); var pg = worker.SourceM1P1(); var ph = worker.SourceP0P1(); var pi = worker.SourceP1P1(); var i4 = worker.SourceP2P1(); var g5 = worker.SourceM1P2(); var h5 = worker.SourceP0P2(); var i5 = worker.SourceP1P2(); sPixel e1, e2, e3, e4, e5, e6, e7, e8, e9, ea, eb, ec, ed, ee, ef; var e0 = e1 = e2 = e3 = e4 = e5 = e6 = e7 = e8 = e9 = ea = eb = ec = ed = ee = ef = pe; _Kernel4Xv2(pe, pi, ph, pf, pg, pc, pd, pb, f4, i4, h5, i5, ref ef, ref ee, ref eb, ref e3, ref e7, ref ea, ref ed, ref ec, allowAlphaBlending); _Kernel4Xv2(pe, pc, pf, pb, pi, pa, ph, pd, b1, c1, f4, c4, ref e3, ref e7, ref e2, ref e0, ref e1, ref e6, ref eb, ref ef, allowAlphaBlending); _Kernel4Xv2(pe, pa, pb, pd, pc, pg, pf, ph, d0, a0, b1, a1, ref e0, ref e1, ref e4, ref ec, ref e8, ref e5, ref e2, ref e3, allowAlphaBlending); _Kernel4Xv2(pe, pg, pd, ph, pa, pi, pb, pf, h5, g5, d0, g0, ref ec, ref e8, ref ed, ref ef, ref ee, ref e9, ref e4, ref e0, allowAlphaBlending); worker.TargetP0P0(e0); worker.TargetP1P0(e1); worker.TargetP2P0(e2); worker.TargetP3P0(e3); worker.TargetP0P1(e4); worker.TargetP1P1(e5); worker.TargetP2P1(e6); worker.TargetP3P1(e7); worker.TargetP0P2(e8); worker.TargetP1P2(e9); worker.TargetP2P2(ea); worker.TargetP3P2(eb); worker.TargetP0P3(ec); worker.TargetP1P3(ed); worker.TargetP2P3(ee); worker.TargetP3P3(ef); }
/// <summary> /// MAME's TV effect 3x /// </summary> public static void Tv3x(PixelWorker<sPixel> worker) { var pixel = worker.SourceP0P0(); var subPixel = pixel * _gamma58; var subPixel2 = pixel * _gamma516; worker.TargetP0P0(pixel); worker.TargetP1P0(pixel); worker.TargetP2P0(pixel); worker.TargetP0P1(subPixel); worker.TargetP1P1(subPixel); worker.TargetP2P1(subPixel); worker.TargetP0P2(subPixel2); worker.TargetP1P2(subPixel2); worker.TargetP2P2(subPixel2); }
/// <summary> /// Bilinear Plus Original /// </summary> public static void BilinearPlusOriginal(PixelWorker<sPixel>worker ) { var c00 = worker.SourceP0P0(); var c01 = worker.SourceP1P0(); var c10 = worker.SourceP0P1(); var c11 = worker.SourceP1P1(); var e00 = sPixel.Interpolate(c00, c01, c10, 5, 2, 1); var e01 = sPixel.Interpolate(c00, c01); var e10 = sPixel.Interpolate(c00, c10); var e11 = sPixel.Interpolate(c00, c01, c10, c11); worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// MAME's TV effect 3x /// </summary> public static void Tv3x(PixelWorker <sPixel> worker) { var pixel = worker.SourceP0P0(); var subPixel = pixel * _gamma58; var subPixel2 = pixel * _gamma516; worker.TargetP0P0(pixel); worker.TargetP1P0(pixel); worker.TargetP2P0(pixel); worker.TargetP0P1(subPixel); worker.TargetP1P1(subPixel); worker.TargetP2P1(subPixel); worker.TargetP0P2(subPixel2); worker.TargetP1P2(subPixel2); worker.TargetP2P2(subPixel2); }
/// <summary> /// This is the XBR3x by Hyllian (see http://board.byuu.org/viewtopic.php?f=10&t=2248) /// </summary> public static void Xbr3X(PixelWorker <sPixel> worker, bool allowAlphaBlending, bool useOriginalImplementation) { Contract.Assume(worker != null); var a1 = worker.SourceM1M2(); var b1 = worker.SourceP0M2(); var c1 = worker.SourceP1M2(); var a0 = worker.SourceM2M1(); var pa = worker.SourceM1M1(); var pb = worker.SourceP0M1(); var pc = worker.SourceP1M1(); var c4 = worker.SourceP2M1(); var d0 = worker.SourceM2P0(); var pd = worker.SourceM1P0(); var pe = worker.SourceP0P0(); var pf = worker.SourceP1P0(); var f4 = worker.SourceP2P0(); var g0 = worker.SourceM2P1(); var pg = worker.SourceM1P1(); var ph = worker.SourceP0P1(); var pi = worker.SourceP1P1(); var i4 = worker.SourceP2P1(); var g5 = worker.SourceM1P2(); var h5 = worker.SourceP0P2(); var i5 = worker.SourceP1P2(); sPixel e1, e2, e3, e4, e5, e6, e7, e8; var e0 = e1 = e2 = e3 = e4 = e5 = e6 = e7 = e8 = pe; _Kernel3X(pe, pi, ph, pf, pg, pc, pd, pb, f4, i4, h5, i5, ref e2, ref e5, ref e6, ref e7, ref e8, allowAlphaBlending, useOriginalImplementation); _Kernel3X(pe, pc, pf, pb, pi, pa, ph, pd, b1, c1, f4, c4, ref e0, ref e1, ref e8, ref e5, ref e2, allowAlphaBlending, useOriginalImplementation); _Kernel3X(pe, pa, pb, pd, pc, pg, pf, ph, d0, a0, b1, a1, ref e6, ref e3, ref e2, ref e1, ref e0, allowAlphaBlending, useOriginalImplementation); _Kernel3X(pe, pg, pd, ph, pa, pi, pb, pf, h5, g5, d0, g0, ref e8, ref e7, ref e0, ref e3, ref e6, allowAlphaBlending, useOriginalImplementation); worker.TargetP0P0(e0); worker.TargetP1P0(e1); worker.TargetP2P0(e2); worker.TargetP0P1(e3); worker.TargetP1P1(e4); worker.TargetP2P1(e5); worker.TargetP0P2(e6); worker.TargetP1P2(e7); worker.TargetP2P2(e8); }
/// <summary> /// Bilinear Plus Original /// </summary> public static void BilinearPlusOriginal(PixelWorker <sPixel> worker) { var c00 = worker.SourceP0P0(); var c01 = worker.SourceP1P0(); var c10 = worker.SourceP0P1(); var c11 = worker.SourceP1P1(); var e00 = sPixel.Interpolate(c00, c01, c10, 5, 2, 1); var e01 = sPixel.Interpolate(c00, c01); var e10 = sPixel.Interpolate(c00, c10); var e11 = sPixel.Interpolate(c00, c01, c10, c11); worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// FNES' 2xSCL /// </summary> /// <param name="worker">The worker.</param> public static void Do2XScl(PixelWorker<sPixel> worker) { var n = worker.SourceP0M1(); var w = worker.SourceM1P0(); var c = worker.SourceP0P0(); var e = worker.SourceP1P0(); var s = worker.SourceP0P1(); var p0 = (((w.IsLike(n)) && (n.IsNotLike(e)) && (w.IsNotLike(s))) ? w : c); var p1 = (((n.IsLike(e)) && (n.IsNotLike(w)) && (e.IsNotLike(s))) ? e : c); var p2 = (((w.IsLike(s)) && (w.IsNotLike(n)) && (s.IsNotLike(e))) ? w : c); var p3 = (((s.IsLike(e)) && (w.IsNotLike(s)) && (n.IsNotLike(e))) ? e : c); worker.TargetP0P0(p0); worker.TargetP1P0(p1); worker.TargetP0P1(p2); worker.TargetP1P1(p3); }
/// <summary> /// FNES' 2xSCL /// </summary> /// <param name="worker">The worker.</param> public static void Do2XScl(PixelWorker <sPixel> worker) { var n = worker.SourceP0M1(); var w = worker.SourceM1P0(); var c = worker.SourceP0P0(); var e = worker.SourceP1P0(); var s = worker.SourceP0P1(); var p0 = (((w.IsLike(n)) && (n.IsNotLike(e)) && (w.IsNotLike(s))) ? w : c); var p1 = (((n.IsLike(e)) && (n.IsNotLike(w)) && (e.IsNotLike(s))) ? e : c); var p2 = (((w.IsLike(s)) && (w.IsNotLike(n)) && (s.IsNotLike(e))) ? w : c); var p3 = (((s.IsLike(e)) && (w.IsNotLike(s)) && (n.IsNotLike(e))) ? e : c); worker.TargetP0P0(p0); worker.TargetP1P0(p1); worker.TargetP0P1(p2); worker.TargetP1P1(p3); }
/// <summary> /// Bilinear Plus /// </summary> public static void BilinearPlus(PixelWorker<sPixel>worker ) { var c00 = worker.SourceP0P0(); var c01 = worker.SourceP1P0(); var c10 = worker.SourceP0P1(); var c11 = worker.SourceP1P1(); const float gamma = 14f / 16f; var e00 = sPixel.Interpolate(c00, c01, c10, 10, 2, 2) * gamma; var e01 = sPixel.Interpolate(c00, c01); var e10 = sPixel.Interpolate(c00, c10); var e11 = sPixel.Interpolate(c00, c01, c10, c11); worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// another one that takes into account that normal eagle means that 3 surroundings should be equal /// looks ugly sometimes depends heavily on source image /// </summary> public static void Eagle3xB(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e02, e10, e12, e20, e21, e22; var e00 = e01 = e02 = e10 = e12 = e20 = e21 = e22 = c4; if ((c0.IsLike(c1)) && (c0.IsLike(c3))) { e00 = sPixel.Interpolate(c0, c1, c3); } if ((c2.IsLike(c1)) && (c2.IsLike(c5))) { e02 = sPixel.Interpolate(c2, c1, c5); } if ((c6.IsLike(c3)) && (c6.IsLike(c7))) { e20 = sPixel.Interpolate(c6, c3, c7); } if ((c8.IsLike(c5)) && (c8.IsLike(c7))) { e22 = sPixel.Interpolate(c8, c5, c7); } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP2P0(e02); worker.TargetP0P1(e10); worker.TargetP1P1(c4); worker.TargetP2P1(e12); worker.TargetP0P2(e20); worker.TargetP1P2(e21); worker.TargetP2P2(e22); }
/// <summary> /// another bad one a made for MS-Dos in 1998 /// </summary> public static void Tv3x(PixelWorker<sPixel> worker) { var pixel = worker.SourceP0P0(); worker.TargetP0P0(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P0(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP2P0(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); if ((worker.SourceX() & 1) == 0) { worker.TargetP0P1(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); if (worker.SourceY() > 0) worker.TargetP1M1(new sPixel(0, pixel.Green, 0, pixel.Alpha)); worker.TargetP2P1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); } else { if (worker.SourceY() > 0) worker.TargetP0M1(new sPixel(pixel.Red, 0, 0, pixel.Alpha)); worker.TargetP1P1(new sPixel(0, pixel.Green, 0, pixel.Alpha)); if (worker.SourceY() > 0) worker.TargetP2M1(new sPixel(0, 0, pixel.Blue, pixel.Alpha)); } }
/// <summary> /// Bilinear Plus /// </summary> public static void BilinearPlus(PixelWorker <sPixel> worker) { var c00 = worker.SourceP0P0(); var c01 = worker.SourceP1P0(); var c10 = worker.SourceP0P1(); var c11 = worker.SourceP1P1(); const float gamma = 14f / 16f; var e00 = sPixel.Interpolate(c00, c01, c10, 10, 2, 2) * gamma; var e01 = sPixel.Interpolate(c00, c01); var e10 = sPixel.Interpolate(c00, c10); var e11 = sPixel.Interpolate(c00, c01, c10, c11); worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// This is the XBR2x by Hyllian (see http://board.byuu.org/viewtopic.php?f=10&t=2248) /// </summary> public static void Xbr2X(PixelWorker <sPixel> worker, bool allowAlphaBlending) { Contract.Assume(worker != null); var a1 = worker.SourceM1M2(); var b1 = worker.SourceP0M2(); var c1 = worker.SourceP1M2(); var a0 = worker.SourceM2M1(); var pa = worker.SourceM1M1(); var pb = worker.SourceP0M1(); var pc = worker.SourceP1M1(); var c4 = worker.SourceP2M1(); var d0 = worker.SourceM2P0(); var pd = worker.SourceM1P0(); var pe = worker.SourceP0P0(); var pf = worker.SourceP1P0(); var f4 = worker.SourceP2P0(); var g0 = worker.SourceM2P1(); var pg = worker.SourceM1P1(); var ph = worker.SourceP0P1(); var pi = worker.SourceP1P1(); var i4 = worker.SourceP2P1(); var g5 = worker.SourceM1P2(); var h5 = worker.SourceP0P2(); var i5 = worker.SourceP1P2(); sPixel e1, e2, e3; var e0 = e1 = e2 = e3 = pe; _Kernel2Xv5(pe, pi, ph, pf, pg, pc, pd, pb, f4, i4, h5, i5, ref e1, ref e2, ref e3, allowAlphaBlending); _Kernel2Xv5(pe, pc, pf, pb, pi, pa, ph, pd, b1, c1, f4, c4, ref e0, ref e3, ref e1, allowAlphaBlending); _Kernel2Xv5(pe, pa, pb, pd, pc, pg, pf, ph, d0, a0, b1, a1, ref e2, ref e1, ref e0, allowAlphaBlending); _Kernel2Xv5(pe, pg, pd, ph, pa, pi, pb, pf, h5, g5, d0, g0, ref e3, ref e0, ref e2, allowAlphaBlending); worker.TargetP0P0(e0); worker.TargetP1P0(e1); worker.TargetP0P1(e2); worker.TargetP1P1(e3); }
/// <summary> /// This is the XBR2x by Hyllian (see http://board.byuu.org/viewtopic.php?f=10&t=2248) /// </summary> public static void Xbr2X(PixelWorker<sPixel> worker, bool allowAlphaBlending) { Contract.Assume(worker != null); var a1 = worker.SourceM1M2(); var b1 = worker.SourceP0M2(); var c1 = worker.SourceP1M2(); var a0 = worker.SourceM2M1(); var pa = worker.SourceM1M1(); var pb = worker.SourceP0M1(); var pc = worker.SourceP1M1(); var c4 = worker.SourceP2M1(); var d0 = worker.SourceM2P0(); var pd = worker.SourceM1P0(); var pe = worker.SourceP0P0(); var pf = worker.SourceP1P0(); var f4 = worker.SourceP2P0(); var g0 = worker.SourceM2P1(); var pg = worker.SourceM1P1(); var ph = worker.SourceP0P1(); var pi = worker.SourceP1P1(); var i4 = worker.SourceP2P1(); var g5 = worker.SourceM1P2(); var h5 = worker.SourceP0P2(); var i5 = worker.SourceP1P2(); sPixel e1, e2, e3; var e0 = e1 = e2 = e3 = pe; _Kernel2Xv5(pe, pi, ph, pf, pg, pc, pd, pb, f4, i4, h5, i5, ref e1, ref e2, ref e3, allowAlphaBlending); _Kernel2Xv5(pe, pc, pf, pb, pi, pa, ph, pd, b1, c1, f4, c4, ref e0, ref e3, ref e1, allowAlphaBlending); _Kernel2Xv5(pe, pa, pb, pd, pc, pg, pf, ph, d0, a0, b1, a1, ref e2, ref e1, ref e0, allowAlphaBlending); _Kernel2Xv5(pe, pg, pd, ph, pa, pi, pb, pf, h5, g5, d0, g0, ref e3, ref e0, ref e2, allowAlphaBlending); worker.TargetP0P0(e0); worker.TargetP1P0(e1); worker.TargetP0P1(e2); worker.TargetP1P1(e3); }
public static void DoSuper2XScl(PixelWorker<sPixel> worker) { var n = worker.SourceP0M1(); var w = worker.SourceM1P0(); var c = worker.SourceP0P0(); var e = worker.SourceP1P0(); var s = worker.SourceP0P1(); var wx = w; var ex = e; var cw = _Mixpal(c, w); var ce = _Mixpal(c, e); var p0 = (((w.IsLike(n)) && (n.IsNotLike(e)) && (w.IsNotLike(s))) ? wx : cw); var p1 = (((n.IsLike(e)) && (n.IsNotLike(w)) && (e.IsNotLike(s))) ? ex : ce); var p2 = (((w.IsLike(s)) && (w.IsNotLike(n)) && (s.IsNotLike(e))) ? wx : cw); var p3 = (((s.IsLike(e)) && (w.IsNotLike(s)) && (n.IsNotLike(e))) ? ex : ce); worker.TargetP0P0(p0); worker.TargetP1P0(p1); worker.TargetP0P1(p2); worker.TargetP1P1(p3); }
/// <summary> /// Christoph Feck's ([email protected]) Reverse Anti-Alias filter /// TODO: make mathutils and join clamp, min and max with the ones from spixel /// </summary> /// <param name="worker">The worker.</param> public static void Process(PixelWorker <sPixel> worker) { var b1 = worker.SourceP0M2(); var b = worker.SourceP0M1(); var d = worker.SourceM1P0(); var e = worker.SourceP0P0(); var f = worker.SourceP1P0(); var h = worker.SourceP0P1(); var h5 = worker.SourceP0P2(); var d0 = worker.SourceM2P0(); var f4 = worker.SourceP2P0(); var redPart = _ReverseAntiAlias(b1.Red, b.Red, d.Red, e.Red, f.Red, h.Red, h5.Red, d0.Red, f4.Red); var greenPart = _ReverseAntiAlias(b1.Green, b.Green, d.Green, e.Green, f.Green, h.Green, h5.Green, d0.Green, f4.Green); var bluePart = _ReverseAntiAlias(b1.Blue, b.Blue, d.Blue, e.Blue, f.Blue, h.Blue, h5.Blue, d0.Blue, f4.Blue); var alphaPart = _ReverseAntiAlias(b1.Alpha, b.Alpha, d.Alpha, e.Alpha, f.Alpha, h.Alpha, h5.Alpha, d0.Alpha, f4.Alpha); worker.TargetP0P0(sPixel.FromRGBA(redPart.Item1, greenPart.Item1, bluePart.Item1, alphaPart.Item1)); worker.TargetP1P0(sPixel.FromRGBA(redPart.Item2, greenPart.Item2, bluePart.Item2, alphaPart.Item2)); worker.TargetP0P1(sPixel.FromRGBA(redPart.Item3, greenPart.Item3, bluePart.Item3, alphaPart.Item3)); worker.TargetP1P1(sPixel.FromRGBA(redPart.Item4, greenPart.Item4, bluePart.Item4, alphaPart.Item4)); }
/// <summary> /// Christoph Feck's ([email protected]) Reverse Anti-Alias filter /// TODO: make mathutils and join clamp, min and max with the ones from spixel /// </summary> /// <param name="worker">The worker.</param> public static void Process(PixelWorker<sPixel>worker ) { var b1 = worker.SourceP0M2(); var b = worker.SourceP0M1(); var d = worker.SourceM1P0(); var e = worker.SourceP0P0(); var f = worker.SourceP1P0(); var h = worker.SourceP0P1(); var h5 = worker.SourceP0P2(); var d0 = worker.SourceM2P0(); var f4 = worker.SourceP2P0(); var redPart = _ReverseAntiAlias(b1.Red, b.Red, d.Red, e.Red, f.Red, h.Red, h5.Red, d0.Red, f4.Red); var greenPart = _ReverseAntiAlias(b1.Green, b.Green, d.Green, e.Green, f.Green, h.Green, h5.Green, d0.Green, f4.Green); var bluePart = _ReverseAntiAlias(b1.Blue, b.Blue, d.Blue, e.Blue, f.Blue, h.Blue, h5.Blue, d0.Blue, f4.Blue); var alphaPart = _ReverseAntiAlias(b1.Alpha, b.Alpha, d.Alpha, e.Alpha, f.Alpha, h.Alpha, h5.Alpha, d0.Alpha, f4.Alpha); worker.TargetP0P0( sPixel.FromRGBA(redPart.Item1, greenPart.Item1, bluePart.Item1, alphaPart.Item1)); worker.TargetP1P0(sPixel.FromRGBA(redPart.Item2, greenPart.Item2, bluePart.Item2, alphaPart.Item2)); worker.TargetP0P1( sPixel.FromRGBA(redPart.Item3, greenPart.Item3, bluePart.Item3, alphaPart.Item3)); worker.TargetP1P1( sPixel.FromRGBA(redPart.Item4, greenPart.Item4, bluePart.Item4, alphaPart.Item4)); }
/// <summary> /// good old Eagle Engine modified by Hawkynt to support thresholds /// </summary> public static void Eagle2x(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if ((c1.IsLike(c0)) && (c1.IsLike(c3))) { e00 = sPixel.Interpolate(c1, c0, c3); } if ((c2.IsLike(c1)) && (c2.IsLike(c5))) { e01 = sPixel.Interpolate(c2, c1, c5); } if ((c6.IsLike(c3)) && (c6.IsLike(c7))) { e10 = sPixel.Interpolate(c6, c3, c7); } if ((c7.IsLike(c5)) && (c7.IsLike(c8))) { e11 = sPixel.Interpolate(c7, c5, c8); } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// SNES9x's EPXC modified by Hawkynt to support thresholds /// </summary> public static void EpxC(PixelWorker<sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c3.IsNotLike(c5) && c7.IsNotLike(c1)) { var neq40 = c4.IsNotLike(c0); var neq41 = c4.IsNotLike(c1); var neq42 = c4.IsNotLike(c2); var neq43 = c4.IsNotLike(c3); var neq45 = c4.IsNotLike(c5); var neq46 = c4.IsNotLike(c6); var neq47 = c4.IsNotLike(c7); var neq48 = c4.IsNotLike(c8); var eq13 = c1.IsLike(c3) && (neq40 || neq48 || c1.IsNotLike(c2) || c3.IsNotLike(c6)); var eq37 = c3.IsLike(c7) && (neq46 || neq42 || c3.IsNotLike(c0) || c7.IsNotLike(c8)); var eq75 = c7.IsLike(c5) && (neq48 || neq40 || c7.IsNotLike(c6) || c5.IsNotLike(c2)); var eq51 = c5.IsLike(c1) && (neq42 || neq46 || c5.IsNotLike(c8) || c1.IsNotLike(c0)); if ( (!neq40) || (!neq41) || (!neq42) || (!neq43) || (!neq45) || (!neq46) || (!neq47) || (!neq48) ) { sPixel c3A; if ((eq13 && neq46) && (eq37 && neq40)) c3A = sPixel.Interpolate(c3, c1, c7); else if (eq13 && neq46) c3A = sPixel.Interpolate(c3, c1); else if (eq37 && neq40) c3A = sPixel.Interpolate(c3, c7); else c3A = c4; sPixel c7B; if ((eq37 && neq48) && (eq75 && neq46)) c7B = sPixel.Interpolate(c7, c3, c5); else if (eq37 && neq48) c7B = sPixel.Interpolate(c7, c3); else if (eq75 && neq46) c7B = sPixel.Interpolate(c7, c5); else c7B = c4; sPixel c5C; if ((eq75 && neq42) && (eq51 && neq48)) c5C = sPixel.Interpolate(c5, c1, c7); else if (eq75 && neq42) c5C = sPixel.Interpolate(c5, c7); else if (eq51 && neq48) c5C = sPixel.Interpolate(c5, c1); else c5C = c4; sPixel c1D; if ((eq51 && neq40) && (eq13 && neq42)) c1D = sPixel.Interpolate(c1, c3, c5); else if (eq51 && neq40) c1D = sPixel.Interpolate(c1, c5); else if (eq13 && neq42) c1D = sPixel.Interpolate(c1, c3); else c1D = c4; if (eq13) e00 = sPixel.Interpolate(c1, c3); if (eq51) e01 = sPixel.Interpolate(c5, c1); if (eq37) e10 = sPixel.Interpolate(c3, c7); if (eq75) e11 = sPixel.Interpolate(c7, c5); e00 = sPixel.Interpolate(e00, c1D, c3A, c4, 5, 1, 1, 1); e01 = sPixel.Interpolate(e01, c7B, c5C, c4, 5, 1, 1, 1); e10 = sPixel.Interpolate(e10, c3A, c7B, c4, 5, 1, 1, 1); e11 = sPixel.Interpolate(e11, c5C, c1D, c4, 5, 1, 1, 1); } else { if (eq13) e00 = sPixel.Interpolate(c1, c3); if (eq51) e01 = sPixel.Interpolate(c5, c1); if (eq37) e10 = sPixel.Interpolate(c3, c7); if (eq75) e11 = sPixel.Interpolate(c7, c5); e00 = sPixel.Interpolate(c4, e00, 3, 1); e01 = sPixel.Interpolate(c4, e01, 3, 1); e10 = sPixel.Interpolate(c4, e10, 3, 1); e11 = sPixel.Interpolate(c4, e11, 3, 1); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// SNES9x's EPXB modified by Hawkynt to support thresholds /// </summary> public static void EpxB(PixelWorker<sPixel> worker ) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if ( c3.IsNotLike(c5) && c1.IsNotLike(c7) && ( // diagonal ( c4.IsLike(c3) || c4.IsLike(c7) || c4.IsLike(c5) || c4.IsLike(c1) || ( // edge smoothing ( c0.IsNotLike(c8) || c4.IsLike(c6) || c4.IsLike(c2) ) && ( c6.IsNotLike(c2) || c4.IsLike(c0) || c4.IsLike(c8) ) ) ) ) ) { if ( c1.IsLike(c3) && ( c4.IsNotLike(c0) || c4.IsNotLike(c8) || c1.IsNotLike(c2) || c3.IsNotLike(c6) ) ) { e00 = sPixel.Interpolate(c1, c3); } if ( c5.IsLike(c1) && ( c4.IsNotLike(c2) || c4.IsNotLike(c6) || c5.IsNotLike(c8) || c1.IsNotLike(c0) ) ) { e01 = sPixel.Interpolate(c5, c1); } if ( c3.IsLike(c7) && ( c4.IsNotLike(c6) || c4.IsNotLike(c2) || c3.IsNotLike(c0) || c7.IsNotLike(c8) ) ) { e10 = sPixel.Interpolate(c3, c7); } if ( c7.IsLike(c5) && ( c4.IsNotLike(c8) || c4.IsNotLike(c0) || c7.IsNotLike(c6) || c5.IsNotLike(c2) ) ) { e11 = sPixel.Interpolate(c7, c5); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// SNES9x's EPXB modified by Hawkynt to support thresholds /// </summary> public static void EpxB(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if ( c3.IsNotLike(c5) && c1.IsNotLike(c7) && ( // diagonal ( c4.IsLike(c3) || c4.IsLike(c7) || c4.IsLike(c5) || c4.IsLike(c1) || ( // edge smoothing ( c0.IsNotLike(c8) || c4.IsLike(c6) || c4.IsLike(c2) ) && ( c6.IsNotLike(c2) || c4.IsLike(c0) || c4.IsLike(c8) ) ) ) ) ) { if ( c1.IsLike(c3) && ( c4.IsNotLike(c0) || c4.IsNotLike(c8) || c1.IsNotLike(c2) || c3.IsNotLike(c6) ) ) { e00 = sPixel.Interpolate(c1, c3); } if ( c5.IsLike(c1) && ( c4.IsNotLike(c2) || c4.IsNotLike(c6) || c5.IsNotLike(c8) || c1.IsNotLike(c0) ) ) { e01 = sPixel.Interpolate(c5, c1); } if ( c3.IsLike(c7) && ( c4.IsNotLike(c6) || c4.IsNotLike(c2) || c3.IsNotLike(c0) || c7.IsNotLike(c8) ) ) { e10 = sPixel.Interpolate(c3, c7); } if ( c7.IsLike(c5) && ( c4.IsNotLike(c8) || c4.IsNotLike(c0) || c7.IsNotLike(c6) || c5.IsNotLike(c2) ) ) { e11 = sPixel.Interpolate(c7, c5); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// Andrea Mazzoleni's Scale3X modified by Hawkynt to support thresholds /// </summary> public static void Scale3x(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e02, e10, e11, e12, e20, e21, e22 = c4; var e00 = e01 = e02 = e10 = e11 = e12 = e20 = e21 = e22 = c4; if (c1.IsNotLike(c7) && c3.IsNotLike(c5)) { if (c3.IsLike(c1)) { e00 = sPixel.Interpolate(c3, c1); } if (c1.IsLike(c5)) { e02 = sPixel.Interpolate(c1, c5); } if (c3.IsLike(c7)) { e20 = sPixel.Interpolate(c3, c7); } if (c7.IsLike(c5)) { e22 = sPixel.Interpolate(c7, c5); } if ( (c3.IsLike(c1) && c4.IsNotLike(c2)) && (c5.IsLike(c1) && c4.IsNotLike(c0)) ) { e01 = sPixel.Interpolate(c1, c3, c5); } else if (c3.IsLike(c1) && c4.IsNotLike(c2)) { e01 = sPixel.Interpolate(c3, c1); } else if (c5.IsLike(c1) && c4.IsNotLike(c0)) { e01 = sPixel.Interpolate(c5, c1); } if ( (c3.IsLike(c1) && c4.IsNotLike(c6)) && (c3.IsLike(c7) && c4.IsNotLike(c0)) ) { e10 = sPixel.Interpolate(c3, c1, c7); } else if (c3.IsLike(c1) && c4.IsNotLike(c6)) { e10 = sPixel.Interpolate(c3, c1); } else if (c3.IsLike(c7) && c4.IsNotLike(c0)) { e10 = sPixel.Interpolate(c3, c7); } if ( (c5.IsLike(c1) && c4.IsNotLike(c8)) && (c5.IsLike(c7) && c4.IsNotLike(c2)) ) { e12 = sPixel.Interpolate(c5, c1, c7); } else if (c5.IsLike(c1) && c4.IsNotLike(c8)) { e12 = sPixel.Interpolate(c5, c1); } else if (c5.IsLike(c7) && c4.IsNotLike(c2)) { e12 = sPixel.Interpolate(c5, c7); } if ( (c3.IsLike(c7) && c4.IsNotLike(c8)) && (c5.IsLike(c7) && c4.IsNotLike(c6)) ) { e21 = sPixel.Interpolate(c7, c3, c5); } else if (c3.IsLike(c7) && c4.IsNotLike(c8)) { e21 = sPixel.Interpolate(c3, c7); } else if (c5.IsLike(c7) && c4.IsNotLike(c6)) { e21 = sPixel.Interpolate(c5, c7); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP2P0(e02); worker.TargetP0P1(e10); worker.TargetP1P1(e11); worker.TargetP2P1(e12); worker.TargetP0P2(e20); worker.TargetP1P2(e21); worker.TargetP2P2(e22); }
/// <summary> /// Andrea Mazzoleni's Scale3X modified by Hawkynt to support thresholds /// </summary> public static void Scale3x(PixelWorker<sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e02, e10, e11, e12, e20, e21, e22 = c4; var e00 = e01 = e02 = e10 = e11 = e12 = e20 = e21 = e22 = c4; if (c1.IsNotLike(c7) && c3.IsNotLike(c5)) { if (c3.IsLike(c1)) e00 = sPixel.Interpolate(c3, c1); if (c1.IsLike(c5)) e02 = sPixel.Interpolate(c1, c5); if (c3.IsLike(c7)) e20 = sPixel.Interpolate(c3, c7); if (c7.IsLike(c5)) e22 = sPixel.Interpolate(c7, c5); if ( (c3.IsLike(c1) && c4.IsNotLike(c2)) && (c5.IsLike(c1) && c4.IsNotLike(c0)) ) e01 = sPixel.Interpolate(c1, c3, c5); else if (c3.IsLike(c1) && c4.IsNotLike(c2)) e01 = sPixel.Interpolate(c3, c1); else if (c5.IsLike(c1) && c4.IsNotLike(c0)) e01 = sPixel.Interpolate(c5, c1); if ( (c3.IsLike(c1) && c4.IsNotLike(c6)) && (c3.IsLike(c7) && c4.IsNotLike(c0)) ) e10 = sPixel.Interpolate(c3, c1, c7); else if (c3.IsLike(c1) && c4.IsNotLike(c6)) e10 = sPixel.Interpolate(c3, c1); else if (c3.IsLike(c7) && c4.IsNotLike(c0)) e10 = sPixel.Interpolate(c3, c7); if ( (c5.IsLike(c1) && c4.IsNotLike(c8)) && (c5.IsLike(c7) && c4.IsNotLike(c2)) ) e12 = sPixel.Interpolate(c5, c1, c7); else if (c5.IsLike(c1) && c4.IsNotLike(c8)) e12 = sPixel.Interpolate(c5, c1); else if (c5.IsLike(c7) && c4.IsNotLike(c2)) e12 = sPixel.Interpolate(c5, c7); if ( (c3.IsLike(c7) && c4.IsNotLike(c8)) && (c5.IsLike(c7) && c4.IsNotLike(c6)) ) e21 = sPixel.Interpolate(c7, c3, c5); else if (c3.IsLike(c7) && c4.IsNotLike(c8)) e21 = sPixel.Interpolate(c3, c7); else if (c5.IsLike(c7) && c4.IsNotLike(c6)) e21 = sPixel.Interpolate(c5, c7); } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP2P0(e02); worker.TargetP0P1(e10); worker.TargetP1P1(e11); worker.TargetP2P1(e12); worker.TargetP0P2(e20); worker.TargetP1P2(e21); worker.TargetP2P2(e22); }
/// <summary> /// Kreed's SuperSaI /// </summary> public static void SuperSaI(PixelWorker<sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var d3 = worker.SourceP2M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var d4 = worker.SourceP2P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); var d5 = worker.SourceP2P1(); var d0 = worker.SourceM1P2(); var d1 = worker.SourceP0P2(); var d2 = worker.SourceP1P2(); var d6 = worker.SourceP2P2(); sPixel e01, e10, e11; var e00 = e01 = e11 = c4; if (c7.IsLike(c5) && c4.IsNotLike(c8)) { var c57 = sPixel.Interpolate(c7, c5); e11 = c57; e01 = c57; } else if (c4.IsLike(c8) && c7.IsNotLike(c5)) { //nothing } else if (c4.IsLike(c8) && c7.IsLike(c5)) { var c57 = sPixel.Interpolate(c7, c5); var c48 = sPixel.Interpolate(c4, c8); var conc2D = 0; conc2D += _Conc2D(c57, c48, c6, d1); conc2D += _Conc2D(c57, c48, c3, c1); conc2D += _Conc2D(c57, c48, d2, d5); conc2D += _Conc2D(c57, c48, c2, d4); if (conc2D > 0) { e11 = c57; e01 = c57; } else if (conc2D == 0) { e11 = sPixel.Interpolate(c48, c57); e01 = sPixel.Interpolate(c48, c57); } } else { if (c8.IsLike(c5) && c8.IsLike(d1) && c7.IsNotLike(d2) && c8.IsNotLike(d0)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c8, c5, d1), c7, 3, 1); } else if (c7.IsLike(c4) && c7.IsLike(d2) && c7.IsNotLike(d6) && c8.IsNotLike(d1)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c7, c4, d2), c8, 3, 1); } else { e11 = sPixel.Interpolate(c7, c8); } if (c5.IsLike(c8) && c5.IsLike(c1) && c5.IsNotLike(c0) && c4.IsNotLike(c2)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c5, c8, c1), c4, 3, 1); } else if (c4.IsLike(c7) && c4.IsLike(c2) && c5.IsNotLike(c1) && c4.IsNotLike(d3)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c4, c7, c2), c5, 3, 1); } else { e01 = sPixel.Interpolate(c4, c5); } } if (c4.IsLike(c8) && c4.IsLike(c3) && c7.IsNotLike(c5) && c4.IsNotLike(d2)) { e10 = sPixel.Interpolate(c7, sPixel.Interpolate(c4, c8, c3)); } else if (c4.IsLike(c6) && c4.IsLike(c5) && c7.IsNotLike(c3) && c4.IsNotLike(d0)) { e10 = sPixel.Interpolate(c7, sPixel.Interpolate(c4, c6, c5)); } else { e10 = c7; } if (c7.IsLike(c5) && c7.IsLike(c6) && c4.IsNotLike(c8) && c7.IsNotLike(c2)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c7, c5, c6), c4); } else if (c7.IsLike(c3) && c7.IsLike(c8) && c4.IsNotLike(c6) && c7.IsNotLike(c0)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c7, c3, c8), c4); } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// SNES9x's EPX3 modified by Hawkynt to support thresholds /// </summary> public static void Epx3(PixelWorker<sPixel>worker ) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e02, e10, e11, e12, e20, e21, e22; var e00 = e01 = e02 = e10 = e11 = e12 = e20 = e21 = e22 = c4; if (c3.IsNotLike(c5) && c7.IsNotLike(c1)) { var neq40 = c4.IsNotLike(c0); var neq41 = c4.IsNotLike(c1); var neq42 = c4.IsNotLike(c2); var neq43 = c4.IsNotLike(c3); var neq45 = c4.IsNotLike(c5); var neq46 = c4.IsNotLike(c6); var neq47 = c4.IsNotLike(c7); var neq48 = c4.IsNotLike(c8); var eq13 = c1.IsLike(c3) && (neq40 || neq48 || c1.IsNotLike(c2) || c3.IsNotLike(c6)); var eq37 = c3.IsLike(c7) && (neq46 || neq42 || c3.IsNotLike(c0) || c7.IsNotLike(c8)); var eq75 = c7.IsLike(c5) && (neq48 || neq40 || c7.IsNotLike(c6) || c5.IsNotLike(c2)); var eq51 = c5.IsLike(c1) && (neq42 || neq46 || c5.IsNotLike(c8) || c1.IsNotLike(c0)); if ( (!neq40) || (!neq41) || (!neq42) || (!neq43) || (!neq45) || (!neq46) || (!neq47) || (!neq48) ) { if (eq13) e00 = sPixel.Interpolate(c1, c3); if (eq51) e02 = sPixel.Interpolate(c5, c1); if (eq37) e20 = sPixel.Interpolate(c3, c7); if (eq75) e22 = sPixel.Interpolate(c7, c5); if ((eq51 && neq40) && (eq13 && neq42)) e01 = sPixel.Interpolate(c1, c3, c5); else if (eq51 && neq40) e01 = sPixel.Interpolate(c1, c5); else if (eq13 && neq42) e01 = sPixel.Interpolate(c1, c3); if ((eq13 && neq46) && (eq37 && neq40)) e10 = sPixel.Interpolate(c3, c1, c7); else if (eq13 && neq46) e10 = sPixel.Interpolate(c3, c1); else if (eq37 && neq40) e10 = sPixel.Interpolate(c3, c7); if ((eq75 && neq42) && (eq51 && neq48)) e12 = sPixel.Interpolate(c5, c1, c7); else if (eq75 && neq42) e12 = sPixel.Interpolate(c5, c7); else if (eq51 && neq48) e12 = sPixel.Interpolate(c5, c1); if ((eq37 && neq48) && (eq75 && neq46)) e21 = sPixel.Interpolate(c7, c3, c5); else if (eq75 && neq46) e21 = sPixel.Interpolate(c7, c5); else if (eq37 && neq48) e21 = sPixel.Interpolate(c7, c3); } else { if (eq13) e00 = sPixel.Interpolate(c1, c3); if (eq51) e02 = sPixel.Interpolate(c5, c1); if (eq37) e20 = sPixel.Interpolate(c3, c7); if (eq75) e22 = sPixel.Interpolate(c7, c5); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP2P0(e02); worker.TargetP0P1(e10); worker.TargetP1P1(e11); worker.TargetP2P1(e12); worker.TargetP0P2(e20); worker.TargetP1P2(e21); worker.TargetP2P2(e22); }
/// <summary> /// This is the XBR3x by Hyllian (see http://board.byuu.org/viewtopic.php?f=10&t=2248) /// </summary> public static void Xbr3X(PixelWorker<sPixel> worker, bool allowAlphaBlending, bool useOriginalImplementation) { Contract.Assume(worker != null); var a1 = worker.SourceM1M2(); var b1 = worker.SourceP0M2(); var c1 = worker.SourceP1M2(); var a0 = worker.SourceM2M1(); var pa = worker.SourceM1M1(); var pb = worker.SourceP0M1(); var pc = worker.SourceP1M1(); var c4 = worker.SourceP2M1(); var d0 = worker.SourceM2P0(); var pd = worker.SourceM1P0(); var pe = worker.SourceP0P0(); var pf = worker.SourceP1P0(); var f4 = worker.SourceP2P0(); var g0 = worker.SourceM2P1(); var pg = worker.SourceM1P1(); var ph = worker.SourceP0P1(); var pi = worker.SourceP1P1(); var i4 = worker.SourceP2P1(); var g5 = worker.SourceM1P2(); var h5 = worker.SourceP0P2(); var i5 = worker.SourceP1P2(); sPixel e1, e2, e3, e4, e5, e6, e7, e8; var e0 = e1 = e2 = e3 = e4 = e5 = e6 = e7 = e8 = pe; _Kernel3X(pe, pi, ph, pf, pg, pc, pd, pb, f4, i4, h5, i5, ref e2, ref e5, ref e6, ref e7, ref e8, allowAlphaBlending, useOriginalImplementation); _Kernel3X(pe, pc, pf, pb, pi, pa, ph, pd, b1, c1, f4, c4, ref e0, ref e1, ref e8, ref e5, ref e2, allowAlphaBlending, useOriginalImplementation); _Kernel3X(pe, pa, pb, pd, pc, pg, pf, ph, d0, a0, b1, a1, ref e6, ref e3, ref e2, ref e1, ref e0, allowAlphaBlending, useOriginalImplementation); _Kernel3X(pe, pg, pd, ph, pa, pi, pb, pf, h5, g5, d0, g0, ref e8, ref e7, ref e0, ref e3, ref e6, allowAlphaBlending, useOriginalImplementation); worker.TargetP0P0(e0); worker.TargetP1P0(e1); worker.TargetP2P0(e2); worker.TargetP0P1(e3); worker.TargetP1P1(e4); worker.TargetP2P1(e5); worker.TargetP0P2(e6); worker.TargetP1P2(e7); worker.TargetP2P2(e8); }
/// <summary> /// Derek Liauw Kie Fa's 2XSaI /// </summary> public static void SaI2X(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var d3 = worker.SourceP2M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var d4 = worker.SourceP2P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); var d5 = worker.SourceP2P1(); var d0 = worker.SourceM1P2(); var d1 = worker.SourceP0P2(); var d2 = worker.SourceP1P2(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c4.IsLike(c8) && c5.IsNotLike(c7)) { var c48 = sPixel.Interpolate(c4, c8); if ((c48.IsLike(c1) && c5.IsLike(d5)) || (c48.IsLike(c7) && c48.IsLike(c2) && c5.IsNotLike(c1) && c5.IsLike(d3))) { //nothing } else { e01 = sPixel.Interpolate(c48, c5); } if ((c48.IsLike(c3) && c7.IsLike(d2)) || (c48.IsLike(c5) && c48.IsLike(c6) && c3.IsNotLike(c7) && c7.IsLike(d0))) { //nothing } else { e10 = sPixel.Interpolate(c48, c7); } } else if (c5.IsLike(c7) && c4.IsNotLike(c8)) { var c57 = sPixel.Interpolate(c5, c7); if ((c57.IsLike(c2) && c4.IsLike(c6)) || (c57.IsLike(c1) && c57.IsLike(c8) && c4.IsNotLike(c2) && c4.IsLike(c0))) { e01 = c57; } else { e01 = sPixel.Interpolate(c4, c57); } if ((c57.IsLike(c6) && c4.IsLike(c2)) || (c57.IsLike(c3) && c57.IsLike(c8) && c4.IsNotLike(c6) && c4.IsLike(c0))) { e10 = c57; } else { e10 = sPixel.Interpolate(c4, c57); } e11 = c57; } else if (c4.IsLike(c8) && c5.IsLike(c7)) { var c48 = sPixel.Interpolate(c4, c8); var c57 = sPixel.Interpolate(c5, c7); if (c48.IsNotLike(c57)) { var conc2D = 0; conc2D += _Conc2D(c48, c57, c3, c1); conc2D -= _Conc2D(c57, c48, d4, c2); conc2D -= _Conc2D(c57, c48, c6, d1); conc2D += _Conc2D(c48, c57, d5, d2); if (conc2D < 0) { e11 = c57; } else if (conc2D == 0) { e11 = sPixel.Interpolate(c48, c57); } e10 = sPixel.Interpolate(c48, c57); e01 = sPixel.Interpolate(c48, c57); } } else { e11 = sPixel.Interpolate(c4, c5, c7, c8); if (c4.IsLike(c7) && c4.IsLike(c2) && c5.IsNotLike(c1) && c5.IsLike(d3)) { //nothing } else if (c5.IsLike(c1) && c5.IsLike(c8) && c4.IsNotLike(c2) && c4.IsLike(c0)) { e01 = sPixel.Interpolate(c5, c1, c8); } else { e01 = sPixel.Interpolate(c4, c5); } if (c4.IsLike(c5) && c4.IsLike(c6) && c3.IsNotLike(c7) && c7.IsLike(d0)) { //nothing } else if (c7.IsLike(c3) && c7.IsLike(c8) && c4.IsNotLike(c6) && c4.IsLike(c0)) { e10 = sPixel.Interpolate(c7, c3, c8); } else { e10 = sPixel.Interpolate(c4, c7); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// SNES9x's EPXC modified by Hawkynt to support thresholds /// </summary> public static void EpxC(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c3.IsNotLike(c5) && c7.IsNotLike(c1)) { var neq40 = c4.IsNotLike(c0); var neq41 = c4.IsNotLike(c1); var neq42 = c4.IsNotLike(c2); var neq43 = c4.IsNotLike(c3); var neq45 = c4.IsNotLike(c5); var neq46 = c4.IsNotLike(c6); var neq47 = c4.IsNotLike(c7); var neq48 = c4.IsNotLike(c8); var eq13 = c1.IsLike(c3) && (neq40 || neq48 || c1.IsNotLike(c2) || c3.IsNotLike(c6)); var eq37 = c3.IsLike(c7) && (neq46 || neq42 || c3.IsNotLike(c0) || c7.IsNotLike(c8)); var eq75 = c7.IsLike(c5) && (neq48 || neq40 || c7.IsNotLike(c6) || c5.IsNotLike(c2)); var eq51 = c5.IsLike(c1) && (neq42 || neq46 || c5.IsNotLike(c8) || c1.IsNotLike(c0)); if ( (!neq40) || (!neq41) || (!neq42) || (!neq43) || (!neq45) || (!neq46) || (!neq47) || (!neq48) ) { sPixel c3A; if ((eq13 && neq46) && (eq37 && neq40)) { c3A = sPixel.Interpolate(c3, c1, c7); } else if (eq13 && neq46) { c3A = sPixel.Interpolate(c3, c1); } else if (eq37 && neq40) { c3A = sPixel.Interpolate(c3, c7); } else { c3A = c4; } sPixel c7B; if ((eq37 && neq48) && (eq75 && neq46)) { c7B = sPixel.Interpolate(c7, c3, c5); } else if (eq37 && neq48) { c7B = sPixel.Interpolate(c7, c3); } else if (eq75 && neq46) { c7B = sPixel.Interpolate(c7, c5); } else { c7B = c4; } sPixel c5C; if ((eq75 && neq42) && (eq51 && neq48)) { c5C = sPixel.Interpolate(c5, c1, c7); } else if (eq75 && neq42) { c5C = sPixel.Interpolate(c5, c7); } else if (eq51 && neq48) { c5C = sPixel.Interpolate(c5, c1); } else { c5C = c4; } sPixel c1D; if ((eq51 && neq40) && (eq13 && neq42)) { c1D = sPixel.Interpolate(c1, c3, c5); } else if (eq51 && neq40) { c1D = sPixel.Interpolate(c1, c5); } else if (eq13 && neq42) { c1D = sPixel.Interpolate(c1, c3); } else { c1D = c4; } if (eq13) { e00 = sPixel.Interpolate(c1, c3); } if (eq51) { e01 = sPixel.Interpolate(c5, c1); } if (eq37) { e10 = sPixel.Interpolate(c3, c7); } if (eq75) { e11 = sPixel.Interpolate(c7, c5); } e00 = sPixel.Interpolate(e00, c1D, c3A, c4, 5, 1, 1, 1); e01 = sPixel.Interpolate(e01, c7B, c5C, c4, 5, 1, 1, 1); e10 = sPixel.Interpolate(e10, c3A, c7B, c4, 5, 1, 1, 1); e11 = sPixel.Interpolate(e11, c5C, c1D, c4, 5, 1, 1, 1); } else { if (eq13) { e00 = sPixel.Interpolate(c1, c3); } if (eq51) { e01 = sPixel.Interpolate(c5, c1); } if (eq37) { e10 = sPixel.Interpolate(c3, c7); } if (eq75) { e11 = sPixel.Interpolate(c7, c5); } e00 = sPixel.Interpolate(c4, e00, 3, 1); e01 = sPixel.Interpolate(c4, e01, 3, 1); e10 = sPixel.Interpolate(c4, e10, 3, 1); e11 = sPixel.Interpolate(c4, e11, 3, 1); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
// TODO: to be really exact, the comparisons are not that right by comparing to already interpolated values // TODO: when interpolating 3 or more points I'm using already calculated interpolations and weight them further // which is not the mathematically correct approach, but it's enough - at least for now /// <summary> /// Kreed's SuperEagle modified by Hawkynt to allow thresholds /// </summary> public static void SuperEagle(PixelWorker<sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var d4 = worker.SourceP2P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); var d5 = worker.SourceP2P1(); var d1 = worker.SourceP0P2(); var d2 = worker.SourceP1P2(); sPixel e00 = c4, e11 = c4; sPixel e01, e10; if (c4.IsLike(c8)) { var c48 = sPixel.Interpolate(c4, c8); if (c7.IsLike(c5)) { var c57 = sPixel.Interpolate(c5, c7); var conc2D = 0; conc2D += _Conc2D(c57, c48, c6, d1); conc2D += _Conc2D(c57, c48, c3, c1); conc2D += _Conc2D(c57, c48, d2, d5); conc2D += _Conc2D(c57, c48, c2, d4); if (conc2D > 0) { e10 = c57; e01 = c57; e11 = sPixel.Interpolate(c48, c57); e00 = sPixel.Interpolate(c48, c57); } else if (conc2D < 0) { e10 = sPixel.Interpolate(c48, c57); e01 = sPixel.Interpolate(c48, c57); } else { e10 = c57; e01 = c57; } } else { if (c48.IsLike(c1) && c48.IsLike(d5)) e01 = sPixel.Interpolate(sPixel.Interpolate(c48, c1, d5), c5, 3, 1); else if (c48.IsLike(c1)) e01 = sPixel.Interpolate(sPixel.Interpolate(c48, c1), c5, 3, 1); else if (c48.IsLike(d5)) e01 = sPixel.Interpolate(sPixel.Interpolate(c48, d5), c5, 3, 1); else e01 = sPixel.Interpolate(c48, c5); if (c48.IsLike(d2) && c48.IsLike(c3)) e10 = sPixel.Interpolate(sPixel.Interpolate(c48, d2, c3), c7, 3, 1); else if (c48.IsLike(d2)) e10 = sPixel.Interpolate(sPixel.Interpolate(c48, d2), c7, 3, 1); else if (c48.IsLike(c3)) e10 = sPixel.Interpolate(sPixel.Interpolate(c48, c3), c7, 3, 1); else e10 = sPixel.Interpolate(c48, c7); } } else { if (c7.IsLike(c5)) { var c57 = sPixel.Interpolate(c5, c7); e01 = c57; e10 = c57; if (c57.IsLike(c6) && c57.IsLike(c2)) e00 = sPixel.Interpolate(sPixel.Interpolate(c57, c6, c2), c4, 3, 1); else if (c57.IsLike(c6)) e00 = sPixel.Interpolate(sPixel.Interpolate(c57, c6), c4, 3, 1); else if (c57.IsLike(c2)) e00 = sPixel.Interpolate(sPixel.Interpolate(c57, c2), c4, 3, 1); else e00 = sPixel.Interpolate(c57, c4); if (c57.IsLike(d4) && c57.IsLike(d1)) e11 = sPixel.Interpolate(sPixel.Interpolate(c57, d4, d1), c8, 3, 1); else if (c57.IsLike(d4)) e11 = sPixel.Interpolate(sPixel.Interpolate(c57, d4), c8, 3, 1); else if (c57.IsLike(d1)) e11 = sPixel.Interpolate(sPixel.Interpolate(c57, d1), c8, 3, 1); else e11 = sPixel.Interpolate(c57, c8); } else { e11 = sPixel.Interpolate(c8, c7, c5, 6, 1, 1); e00 = sPixel.Interpolate(c4, c7, c5, 6, 1, 1); e10 = sPixel.Interpolate(c7, c4, c8, 6, 1, 1); e01 = sPixel.Interpolate(c5, c4, c8, 6, 1, 1); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// This is the XBR4x by Hyllian (see http://board.byuu.org/viewtopic.php?f=10&t=2248) /// </summary> public static void Xbr4X(PixelWorker<sPixel> worker, bool allowAlphaBlending) { Contract.Assume(worker != null); var a1 = worker.SourceM1M2(); var b1 = worker.SourceP0M2(); var c1 = worker.SourceP1M2(); var a0 = worker.SourceM2M1(); var pa = worker.SourceM1M1(); var pb = worker.SourceP0M1(); var pc = worker.SourceP1M1(); var c4 = worker.SourceP2M1(); var d0 = worker.SourceM2P0(); var pd = worker.SourceM1P0(); var pe = worker.SourceP0P0(); var pf = worker.SourceP1P0(); var f4 = worker.SourceP2P0(); var g0 = worker.SourceM2P1(); var pg = worker.SourceM1P1(); var ph = worker.SourceP0P1(); var pi = worker.SourceP1P1(); var i4 = worker.SourceP2P1(); var g5 = worker.SourceM1P2(); var h5 = worker.SourceP0P2(); var i5 = worker.SourceP1P2(); sPixel e1, e2, e3, e4, e5, e6, e7, e8, e9, ea, eb, ec, ed, ee, ef; var e0 = e1 = e2 = e3 = e4 = e5 = e6 = e7 = e8 = e9 = ea = eb = ec = ed = ee = ef = pe; _Kernel4Xv2(pe, pi, ph, pf, pg, pc, pd, pb, f4, i4, h5, i5, ref ef, ref ee, ref eb, ref e3, ref e7, ref ea, ref ed, ref ec, allowAlphaBlending); _Kernel4Xv2(pe, pc, pf, pb, pi, pa, ph, pd, b1, c1, f4, c4, ref e3, ref e7, ref e2, ref e0, ref e1, ref e6, ref eb, ref ef, allowAlphaBlending); _Kernel4Xv2(pe, pa, pb, pd, pc, pg, pf, ph, d0, a0, b1, a1, ref e0, ref e1, ref e4, ref ec, ref e8, ref e5, ref e2, ref e3, allowAlphaBlending); _Kernel4Xv2(pe, pg, pd, ph, pa, pi, pb, pf, h5, g5, d0, g0, ref ec, ref e8, ref ed, ref ef, ref ee, ref e9, ref e4, ref e0, allowAlphaBlending); worker.TargetP0P0(e0); worker.TargetP1P0(e1); worker.TargetP2P0(e2); worker.TargetP3P0(e3); worker.TargetP0P1(e4); worker.TargetP1P1(e5); worker.TargetP2P1(e6); worker.TargetP3P1(e7); worker.TargetP0P2(e8); worker.TargetP1P2(e9); worker.TargetP2P2(ea); worker.TargetP3P2(eb); worker.TargetP0P3(ec); worker.TargetP1P3(ed); worker.TargetP2P3(ee); worker.TargetP3P3(ef); }
/// <summary> /// Andrea Mazzoleni's Scale2X modified by Hawkynt to support thresholds /// </summary> public static void Scale2x(PixelWorker<sPixel> worker) { var c1 = worker.SourceP0M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c7 = worker.SourceP0P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c3.IsNotLike(c5) && c1.IsNotLike(c7)) { if (c1.IsLike(c3)) { e00 = sPixel.Interpolate(c1, c3); } if (c1.IsLike(c5)) { e01 = sPixel.Interpolate(c1, c5); } if (c7.IsLike(c3)) { e10 = sPixel.Interpolate(c7, c3); } if (c7.IsLike(c5)) { e11 = sPixel.Interpolate(c7, c5); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// Kreed's SuperSaI /// </summary> public static void SuperSaI(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var d3 = worker.SourceP2M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var d4 = worker.SourceP2P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); var d5 = worker.SourceP2P1(); var d0 = worker.SourceM1P2(); var d1 = worker.SourceP0P2(); var d2 = worker.SourceP1P2(); var d6 = worker.SourceP2P2(); sPixel e01, e10, e11; var e00 = e01 = e11 = c4; if (c7.IsLike(c5) && c4.IsNotLike(c8)) { var c57 = sPixel.Interpolate(c7, c5); e11 = c57; e01 = c57; } else if (c4.IsLike(c8) && c7.IsNotLike(c5)) { //nothing } else if (c4.IsLike(c8) && c7.IsLike(c5)) { var c57 = sPixel.Interpolate(c7, c5); var c48 = sPixel.Interpolate(c4, c8); var conc2D = 0; conc2D += _Conc2D(c57, c48, c6, d1); conc2D += _Conc2D(c57, c48, c3, c1); conc2D += _Conc2D(c57, c48, d2, d5); conc2D += _Conc2D(c57, c48, c2, d4); if (conc2D > 0) { e11 = c57; e01 = c57; } else if (conc2D == 0) { e11 = sPixel.Interpolate(c48, c57); e01 = sPixel.Interpolate(c48, c57); } } else { if (c8.IsLike(c5) && c8.IsLike(d1) && c7.IsNotLike(d2) && c8.IsNotLike(d0)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c8, c5, d1), c7, 3, 1); } else if (c7.IsLike(c4) && c7.IsLike(d2) && c7.IsNotLike(d6) && c8.IsNotLike(d1)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c7, c4, d2), c8, 3, 1); } else { e11 = sPixel.Interpolate(c7, c8); } if (c5.IsLike(c8) && c5.IsLike(c1) && c5.IsNotLike(c0) && c4.IsNotLike(c2)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c5, c8, c1), c4, 3, 1); } else if (c4.IsLike(c7) && c4.IsLike(c2) && c5.IsNotLike(c1) && c4.IsNotLike(d3)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c4, c7, c2), c5, 3, 1); } else { e01 = sPixel.Interpolate(c4, c5); } } if (c4.IsLike(c8) && c4.IsLike(c3) && c7.IsNotLike(c5) && c4.IsNotLike(d2)) { e10 = sPixel.Interpolate(c7, sPixel.Interpolate(c4, c8, c3)); } else if (c4.IsLike(c6) && c4.IsLike(c5) && c7.IsNotLike(c3) && c4.IsNotLike(d0)) { e10 = sPixel.Interpolate(c7, sPixel.Interpolate(c4, c6, c5)); } else { e10 = c7; } if (c7.IsLike(c5) && c7.IsLike(c6) && c4.IsNotLike(c8) && c7.IsNotLike(c2)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c7, c5, c6), c4); } else if (c7.IsLike(c3) && c7.IsLike(c8) && c4.IsNotLike(c6) && c7.IsNotLike(c0)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c7, c3, c8), c4); } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// Derek Liauw Kie Fa's 2XSaI /// </summary> public static void SaI2X(PixelWorker<sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var d3 = worker.SourceP2M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var d4 = worker.SourceP2P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); var d5 = worker.SourceP2P1(); var d0 = worker.SourceM1P2(); var d1 = worker.SourceP0P2(); var d2 = worker.SourceP1P2(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c4.IsLike(c8) && c5.IsNotLike(c7)) { var c48 = sPixel.Interpolate(c4, c8); if ((c48.IsLike(c1) && c5.IsLike(d5)) || (c48.IsLike(c7) && c48.IsLike(c2) && c5.IsNotLike(c1) && c5.IsLike(d3))) { //nothing } else { e01 = sPixel.Interpolate(c48, c5); } if ((c48.IsLike(c3) && c7.IsLike(d2)) || (c48.IsLike(c5) && c48.IsLike(c6) && c3.IsNotLike(c7) && c7.IsLike(d0))) { //nothing } else { e10 = sPixel.Interpolate(c48, c7); } } else if (c5.IsLike(c7) && c4.IsNotLike(c8)) { var c57 = sPixel.Interpolate(c5, c7); if ((c57.IsLike(c2) && c4.IsLike(c6)) || (c57.IsLike(c1) && c57.IsLike(c8) && c4.IsNotLike(c2) && c4.IsLike(c0))) { e01 = c57; } else { e01 = sPixel.Interpolate(c4, c57); } if ((c57.IsLike(c6) && c4.IsLike(c2)) || (c57.IsLike(c3) && c57.IsLike(c8) && c4.IsNotLike(c6) && c4.IsLike(c0))) { e10 = c57; } else { e10 = sPixel.Interpolate(c4, c57); } e11 = c57; } else if (c4.IsLike(c8) && c5.IsLike(c7)) { var c48 = sPixel.Interpolate(c4, c8); var c57 = sPixel.Interpolate(c5, c7); if (c48.IsNotLike(c57)) { var conc2D = 0; conc2D += _Conc2D(c48, c57, c3, c1); conc2D -= _Conc2D(c57, c48, d4, c2); conc2D -= _Conc2D(c57, c48, c6, d1); conc2D += _Conc2D(c48, c57, d5, d2); if (conc2D < 0) { e11 = c57; } else if (conc2D == 0) { e11 = sPixel.Interpolate(c48, c57); } e10 = sPixel.Interpolate(c48, c57); e01 = sPixel.Interpolate(c48, c57); } } else { e11 = sPixel.Interpolate(c4, c5, c7, c8); if (c4.IsLike(c7) && c4.IsLike(c2) && c5.IsNotLike(c1) && c5.IsLike(d3)) { //nothing } else if (c5.IsLike(c1) && c5.IsLike(c8) && c4.IsNotLike(c2) && c4.IsLike(c0)) { e01 = sPixel.Interpolate(c5, c1, c8); } else { e01 = sPixel.Interpolate(c4, c5); } if (c4.IsLike(c5) && c4.IsLike(c6) && c3.IsNotLike(c7) && c7.IsLike(d0)) { //nothing } else if (c7.IsLike(c3) && c7.IsLike(c8) && c4.IsNotLike(c6) && c4.IsLike(c0)) { e10 = sPixel.Interpolate(c7, c3, c8); } else { e10 = sPixel.Interpolate(c4, c7); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// SNES9x's EPX3 modified by Hawkynt to support thresholds /// </summary> public static void Epx3(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e02, e10, e11, e12, e20, e21, e22; var e00 = e01 = e02 = e10 = e11 = e12 = e20 = e21 = e22 = c4; if (c3.IsNotLike(c5) && c7.IsNotLike(c1)) { var neq40 = c4.IsNotLike(c0); var neq41 = c4.IsNotLike(c1); var neq42 = c4.IsNotLike(c2); var neq43 = c4.IsNotLike(c3); var neq45 = c4.IsNotLike(c5); var neq46 = c4.IsNotLike(c6); var neq47 = c4.IsNotLike(c7); var neq48 = c4.IsNotLike(c8); var eq13 = c1.IsLike(c3) && (neq40 || neq48 || c1.IsNotLike(c2) || c3.IsNotLike(c6)); var eq37 = c3.IsLike(c7) && (neq46 || neq42 || c3.IsNotLike(c0) || c7.IsNotLike(c8)); var eq75 = c7.IsLike(c5) && (neq48 || neq40 || c7.IsNotLike(c6) || c5.IsNotLike(c2)); var eq51 = c5.IsLike(c1) && (neq42 || neq46 || c5.IsNotLike(c8) || c1.IsNotLike(c0)); if ( (!neq40) || (!neq41) || (!neq42) || (!neq43) || (!neq45) || (!neq46) || (!neq47) || (!neq48) ) { if (eq13) { e00 = sPixel.Interpolate(c1, c3); } if (eq51) { e02 = sPixel.Interpolate(c5, c1); } if (eq37) { e20 = sPixel.Interpolate(c3, c7); } if (eq75) { e22 = sPixel.Interpolate(c7, c5); } if ((eq51 && neq40) && (eq13 && neq42)) { e01 = sPixel.Interpolate(c1, c3, c5); } else if (eq51 && neq40) { e01 = sPixel.Interpolate(c1, c5); } else if (eq13 && neq42) { e01 = sPixel.Interpolate(c1, c3); } if ((eq13 && neq46) && (eq37 && neq40)) { e10 = sPixel.Interpolate(c3, c1, c7); } else if (eq13 && neq46) { e10 = sPixel.Interpolate(c3, c1); } else if (eq37 && neq40) { e10 = sPixel.Interpolate(c3, c7); } if ((eq75 && neq42) && (eq51 && neq48)) { e12 = sPixel.Interpolate(c5, c1, c7); } else if (eq75 && neq42) { e12 = sPixel.Interpolate(c5, c7); } else if (eq51 && neq48) { e12 = sPixel.Interpolate(c5, c1); } if ((eq37 && neq48) && (eq75 && neq46)) { e21 = sPixel.Interpolate(c7, c3, c5); } else if (eq75 && neq46) { e21 = sPixel.Interpolate(c7, c5); } else if (eq37 && neq48) { e21 = sPixel.Interpolate(c7, c3); } } else { if (eq13) { e00 = sPixel.Interpolate(c1, c3); } if (eq51) { e02 = sPixel.Interpolate(c5, c1); } if (eq37) { e20 = sPixel.Interpolate(c3, c7); } if (eq75) { e22 = sPixel.Interpolate(c7, c5); } } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP2P0(e02); worker.TargetP0P1(e10); worker.TargetP1P1(e11); worker.TargetP2P1(e12); worker.TargetP0P2(e20); worker.TargetP1P2(e21); worker.TargetP2P2(e22); }
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); }
/// <summary> /// AFAIK there is no eagle 3x so I made one (Hawkynt) /// </summary> public static void Eagle3x(PixelWorker<sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); sPixel e01, e02, e10, e12, e20, e21, e22; var e00 = e01 = e02 = e10 = e12 = e20 = e21 = e22 = c4; if ((c0.IsLike(c1)) && (c0.IsLike(c3))) e00 = sPixel.Interpolate(c0, c1, c3); if ((c2.IsLike(c1)) && (c2.IsLike(c5))) e02 = sPixel.Interpolate(c2, c1, c5); if ((c6.IsLike(c3)) && (c6.IsLike(c7))) e20 = sPixel.Interpolate(c6, c3, c7); if ((c8.IsLike(c5)) && (c8.IsLike(c7))) e22 = sPixel.Interpolate(c8, c5, c7); if ((c0.IsLike(c1)) && (c0.IsLike(c3)) && (c2.IsLike(c1)) && (c2.IsLike(c5))) e01 = sPixel.Interpolate(sPixel.Interpolate(c0, c1, c3), sPixel.Interpolate(c2, c1, c5)); if ((c2.IsLike(c1)) && (c2.IsLike(c5)) && (c8.IsLike(c5)) && (c8.IsLike(c7))) e12 = sPixel.Interpolate(sPixel.Interpolate(c2, c1, c5), sPixel.Interpolate(c8, c5, c7)); if ((c6.IsLike(c7)) && (c6.IsLike(c3)) && (c8.IsLike(c5)) && (c8.IsLike(c7))) e21 = sPixel.Interpolate(sPixel.Interpolate(c6, c7, c3), sPixel.Interpolate(c8, c5, c7)); if ((c0.IsLike(c1)) && (c0.IsLike(c3)) && (c6.IsLike(c7)) && (c6.IsLike(c3))) e10 = sPixel.Interpolate(sPixel.Interpolate(c0, c1, c3), sPixel.Interpolate(c6, c3, c7)); worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP2P0(e02); worker.TargetP0P1(e10); worker.TargetP1P1(c4); worker.TargetP2P1(e12); worker.TargetP0P2(e20); worker.TargetP1P2(e21); worker.TargetP2P2(e22); }
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); }
// TODO: to be really exact, the comparisons are not that right by comparing to already interpolated values // TODO: when interpolating 3 or more points I'm using already calculated interpolations and weight them further // which is not the mathematically correct approach, but it's enough - at least for now /// <summary> /// Kreed's SuperEagle modified by Hawkynt to allow thresholds /// </summary> public static void SuperEagle(PixelWorker <sPixel> worker) { var c0 = worker.SourceM1M1(); var c1 = worker.SourceP0M1(); var c2 = worker.SourceP1M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var d4 = worker.SourceP2P0(); var c6 = worker.SourceM1P1(); var c7 = worker.SourceP0P1(); var c8 = worker.SourceP1P1(); var d5 = worker.SourceP2P1(); var d1 = worker.SourceP0P2(); var d2 = worker.SourceP1P2(); sPixel e00 = c4, e11 = c4; sPixel e01, e10; if (c4.IsLike(c8)) { var c48 = sPixel.Interpolate(c4, c8); if (c7.IsLike(c5)) { var c57 = sPixel.Interpolate(c5, c7); var conc2D = 0; conc2D += _Conc2D(c57, c48, c6, d1); conc2D += _Conc2D(c57, c48, c3, c1); conc2D += _Conc2D(c57, c48, d2, d5); conc2D += _Conc2D(c57, c48, c2, d4); if (conc2D > 0) { e10 = c57; e01 = c57; e11 = sPixel.Interpolate(c48, c57); e00 = sPixel.Interpolate(c48, c57); } else if (conc2D < 0) { e10 = sPixel.Interpolate(c48, c57); e01 = sPixel.Interpolate(c48, c57); } else { e10 = c57; e01 = c57; } } else { if (c48.IsLike(c1) && c48.IsLike(d5)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c48, c1, d5), c5, 3, 1); } else if (c48.IsLike(c1)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c48, c1), c5, 3, 1); } else if (c48.IsLike(d5)) { e01 = sPixel.Interpolate(sPixel.Interpolate(c48, d5), c5, 3, 1); } else { e01 = sPixel.Interpolate(c48, c5); } if (c48.IsLike(d2) && c48.IsLike(c3)) { e10 = sPixel.Interpolate(sPixel.Interpolate(c48, d2, c3), c7, 3, 1); } else if (c48.IsLike(d2)) { e10 = sPixel.Interpolate(sPixel.Interpolate(c48, d2), c7, 3, 1); } else if (c48.IsLike(c3)) { e10 = sPixel.Interpolate(sPixel.Interpolate(c48, c3), c7, 3, 1); } else { e10 = sPixel.Interpolate(c48, c7); } } } else { if (c7.IsLike(c5)) { var c57 = sPixel.Interpolate(c5, c7); e01 = c57; e10 = c57; if (c57.IsLike(c6) && c57.IsLike(c2)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c57, c6, c2), c4, 3, 1); } else if (c57.IsLike(c6)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c57, c6), c4, 3, 1); } else if (c57.IsLike(c2)) { e00 = sPixel.Interpolate(sPixel.Interpolate(c57, c2), c4, 3, 1); } else { e00 = sPixel.Interpolate(c57, c4); } if (c57.IsLike(d4) && c57.IsLike(d1)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c57, d4, d1), c8, 3, 1); } else if (c57.IsLike(d4)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c57, d4), c8, 3, 1); } else if (c57.IsLike(d1)) { e11 = sPixel.Interpolate(sPixel.Interpolate(c57, d1), c8, 3, 1); } else { e11 = sPixel.Interpolate(c57, c8); } } else { e11 = sPixel.Interpolate(c8, c7, c5, 6, 1, 1); e00 = sPixel.Interpolate(c4, c7, c5, 6, 1, 1); e10 = sPixel.Interpolate(c7, c4, c8, 6, 1, 1); e01 = sPixel.Interpolate(c5, c4, c8, 6, 1, 1); } } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }
/// <summary> /// MAME's AdvInterp2x, very similar to Scale2x but uses interpolation, modified by Hawkynt to support thresholds /// </summary> public static void AdvInterp2x(PixelWorker<sPixel> worker) { var c1 = worker.SourceP0M1(); var c3 = worker.SourceM1P0(); var c4 = worker.SourceP0P0(); var c5 = worker.SourceP1P0(); var c7 = worker.SourceP0P1(); sPixel e01, e10, e11; var e00 = e01 = e10 = e11 = c4; if (c1.IsNotLike(c7) && c3.IsNotLike(c5)) { if (c3.IsLike(c1)) e00 = sPixel.Interpolate(sPixel.Interpolate(c1, c3), c4, 5, 3); if (c5.IsLike(c1)) e01 = sPixel.Interpolate(sPixel.Interpolate(c1, c5), c4, 5, 3); if (c3.IsLike(c7)) e10 = sPixel.Interpolate(sPixel.Interpolate(c7, c3), c4, 5, 3); if (c5.IsLike(c7)) e11 = sPixel.Interpolate(sPixel.Interpolate(c7, c5), c4, 5, 3); } worker.TargetP0P0(e00); worker.TargetP1P0(e01); worker.TargetP0P1(e10); worker.TargetP1P1(e11); }