pixel art之 hqx 算法
在去年的时候,偶然看到hqx算法。
一个高质量的插值放大算法。
与双线性插值等插值算法相比,这个算法放大后对人眼保护相对比较好。
没有双线性插值看起来模糊,固然,也抽空把算法简单优化了一下。
官网及代码:
https://web.archive.org/web/20131205091805/http://www.hiend3d.com/hq2x.html
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/hqx/hqx-1.1.tar.gz
维基百科:
https://en.wikipedia.org/wiki/Hqx
不够这个算法写得贼恶心,并不适用于学习。
贴上维基百科上的demo效果对比图。

/*
//(c1*3+c2) >> 2;
#define Interp1(c1, c2) Interpolate_2(c1, c2, 3, 1, 2);
//(c1*2+c2+c3) >> 2;
#define Interp2(c1, c2, c3) Interpolate_3(c1, c2, c3, 2, 1, 1, 2);
//(c1*7+c2)/8;
#define Interp3(c1, c2) Interpolate_2(c1, c2, 7, 1, 3);
//(c1*2+(c2+c3)*7)/16;
#define Interp4(c1, c2, c3) Interpolate_3(c1, c2, c3, 2, 7, 7, 4);
//(c1+c2) >> 1;
#define Interp5(c1, c2) Interpolate_2(c1, c2, 1, 1, 1);
//(c1*5+c2*2+c3)/8;
#define Interp6(c1, c2, c3) Interpolate_3(c1, c2, c3, 5, 2, 1, 3);
//(c1*6+c2+c3)/8;
#define Interp7(c1, c2, c3) Interpolate_3(c1, c2, c3, 6, 1, 1, 3);
//(c1*5+c2*3)/8;
#define Interp8(c1, c2) Interpolate_2(c1, c2, 5, 3, 3);
//(c1*2+(c2+c3)*3)/8;
#define Interp9(c1, c2, c3) Interpolate_3(c1, c2, c3, 2, 3, 3, 3);
//(c1*14+c2+c3)/16;
#define Interp10(c1, c2, c3) Interpolate_3(c1, c2, c3, 14, 1, 1, 4);
*/
#define MASK_2 0x0000FF00
#define MASK_13 0x00FF00FF
#define MASK_ALPHA 0xFF000000
#define rgb_to_y( c) ((19595 * RED((c)) + 38470 * GREEN((c)) + 7471 * BLUE((c))) >> 16)
/* Interpolate functions */
unsigned int Interpolate_2(unsigned int &c1, unsigned int &c2, int w1, int w2, int shift)
{
if (c1 == c2) {
return c1;
}
return
(((((c1 & MASK_ALPHA) >> 24) * w1 + ((c2 & MASK_ALPHA) >> 24) * w2) << (24 - shift)) & MASK_ALPHA) +
((((c1 & MASK_2) * w1 + (c2 & MASK_2) * w2) >> shift) & MASK_2) +
((((c1 & MASK_13) * w1 + (c2 & MASK_13) * w2) >> shift) & MASK_13);
}
unsigned int Interpolate_3(unsigned int &c1, unsigned int &c2, unsigned int &c3, int w1, int w2, int w3, int shift)
{
return
(((((c1 & MASK_ALPHA) >> 24) * w1 + ((c2 & MASK_ALPHA) >> 24) * w2 + ((c3 & MASK_ALPHA) >> 24) * w3) << (24 - shift)) & MASK_ALPHA) +
((((c1 & MASK_2) * w1 + (c2 & MASK_2) * w2 + (c3 & MASK_2) * w3) >> shift) & MASK_2) +
((((c1 & MASK_13) * w1 + (c2 & MASK_13) * w2 + (c3 & MASK_13) * w3) >> shift) & MASK_13);
}
void hq2x_32(unsigned int *input, unsigned int *output, int Width, int Height, int Stride)
{
int Channels = Stride / Width;
if (Channels != 4) return;
unsigned int pixel[10];
unsigned int gray[10];
int step = 2;
unsigned int dstStride = (Width * step)*Channels;
int dstWidth = (unsigned int)((Width * step));
for (int y = 0; y < Height; ++y)
{
int prevline = 0;
int nextline = 0;
if (y > 0)
prevline = -Width;
if (y < Height - 1)
nextline = Width;
unsigned int* srcRowPtr = input + y*Width;
unsigned int* dstRowPtr = output + (y<<1)*dstWidth;
for (int x = 0; x < Width; ++x)
{
unsigned int& pixel5 = pixel[5];
unsigned int& pixel2 = pixel[2];
unsigned int& pixel8 = pixel[8];
unsigned int& pixel1 = pixel[1];
unsigned int& pixel4 = pixel[4];
unsigned int& pixel7 = pixel[7];
unsigned int& pixel3 = pixel[3];
unsigned int& pixel6 = pixel[6];
unsigned int& pixel9 = pixel[9];
unsigned int& gray5 = gray[5];
unsigned int& gray2 = gray[2];
unsigned int& gray8 = gray[8];
unsigned int& gray1 = gray[1];
unsigned int& gray4 = gray[4];
unsigned int& gray7 = gray[7];
unsigned int& gray3 = gray[3];
unsigned int& gray6 = gray[6];
unsigned int& gray9 = gray[9];
pixel2 = srcRowPtr[prevline];
pixel5 = srcRowPtr[0];
pixel8 = srcRowPtr[nextline];
if (x <= 0)
{
pixel1 = pixel2;
pixel4 = pixel5;
pixel7 = pixel8;
}
else
{
pixel1 = srcRowPtr[prevline - 1];
pixel4 = srcRowPtr[-1];
pixel7 = srcRowPtr[nextline - 1];
}
if (x >= Width - 1)
{
pixel3 = pixel2;
pixel6 = pixel5;
pixel9 = pixel8;
}
else
{
pixel3 = srcRowPtr[prevline + 1];
pixel6 = srcRowPtr[1];
pixel9 = srcRowPtr[nextline + 1];
}
int pattern = 0;
int flag = 1;
for (int k = 1; k <= 9; ++k)
{
gray[k] = (7471 * ((pixel[k] >> 16) & 0xFF) + 38470 * ((pixel[k] >> 8) & 0xFF) + 19595 * (pixel[k] & 0xFF)) >> 16;
}
for (int i = 1; i <= 9; ++i)
{
if (i != 5)
{
if (pixel[i] != pixel5)
pattern |= flag;
flag *= 2;
}
}
unsigned int * dstCurLine = &dstRowPtr[dstWidth];
unsigned int * dstCurLineNextPixel = &dstRowPtr[dstWidth + 1];
switch (pattern)
{
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:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 2:
case 34:
case 130:
case 162:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 16:
case 17:
case 48:
case 49:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 64:
case 65:
case 68:
case 69:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 8:
case 12:
case 136:
case 140:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 3:
case 35:
case 131:
case 163:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 6:
case 38:
case 134:
case 166:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 20:
case 21:
case 52:
case 53:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 144:
case 145:
case 176:
case 177:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 192:
case 193:
case 196:
case 197:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 96:
case 97:
case 100:
case 101:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 40:
case 44:
case 168:
case 172:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 9:
case 13:
case 137:
case 141:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 18:
case 50:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 80:
case 81:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 72:
case 76:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 10:
case 138:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 66:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 24:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 7:
case 39:
case 135:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 148:
case 149:
case 180:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 224:
case 225:
case 228:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 41:
case 45:
case 169:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 22:
case 54:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 208:
case 209:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 104:
case 108:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 11:
case 139:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 19:
case 51:
if (gray2 == gray6)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel2, pixel4, 5, 2, 1, 3);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 3, 3, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
}
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 146:
case 178:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
{
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 3, 3, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 5, 2, 1, 3);
}
else
{
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
}
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
break;
case 84:
case 85:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
if (gray6 == gray8)
{
dstRowPtr[1] = Interpolate_3(pixel5, pixel6, pixel2, 5, 2, 1, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 3, 3, 3);
}
else
{
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
}
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
break;
case 112:
case 113:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray6 == gray8)
{
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 5, 2, 1, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 3, 3, 3);
}
else
{
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
}
break;
case 200:
case 204:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
{
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 3, 3, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel8, pixel6, 5, 2, 1, 3);
}
else
{
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
}
break;
case 73:
case 77:
if (gray8 == gray4)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 5, 2, 1, 3);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 3, 3, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
}
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 42:
case 170:
if (gray4 == gray2)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 3, 3, 3);
dstCurLine[0] = Interpolate_3(pixel5, pixel4, pixel8, 5, 2, 1, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
}
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 14:
case 142:
if (gray4 == gray2)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 3, 3, 3);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 5, 2, 1, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
}
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 67:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 70:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 28:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 152:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 194:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 98:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 56:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 25:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 26:
case 31:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 82:
case 214:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 88:
case 248:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 74:
case 107:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 27:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 86:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 216:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 106:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 30:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 210:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 120:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 75:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 29:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 198:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 184:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 99:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 57:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 71:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 156:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 226:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 60:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 195:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 102:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 153:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 58:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 83:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 92:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 202:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 78:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 154:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 114:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 89:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 90:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 23:
case 55:
if (gray2 == gray6)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel2, pixel4, 5, 2, 1, 3);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 3, 3, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = pixel5;
}
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 150:
case 182:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
{
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 3, 3, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 5, 2, 1, 3);
}
else
{
dstRowPtr[1] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
}
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
break;
case 212:
case 213:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
if (gray6 == gray8)
{
dstRowPtr[1] = Interpolate_3(pixel5, pixel6, pixel2, 5, 2, 1, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 3, 3, 3);
}
else
{
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLineNextPixel [0] = pixel5;
}
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
break;
case 240:
case 241:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray6 == gray8)
{
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 5, 2, 1, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 3, 3, 3);
}
else
{
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = pixel5;
}
break;
case 232:
case 236:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
{
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 3, 3, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel8, pixel6, 5, 2, 1, 3);
}
else
{
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
}
break;
case 105:
case 109:
if (gray8 == gray4)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 5, 2, 1, 3);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 3, 3, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = pixel5;
}
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 43:
case 171:
if (gray4 == gray2)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 3, 3, 3);
dstCurLine[0] = Interpolate_3(pixel5, pixel4, pixel8, 5, 2, 1, 3);
}
else
{
dstRowPtr[0] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
}
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 15:
case 143:
if (gray4 == gray2)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 3, 3, 3);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 5, 2, 1, 3);
}
else
{
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
}
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 124:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 203:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 62:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 211:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 118:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 217:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 110:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 155:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 188:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 185:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 61:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 157:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 103:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 227:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 230:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 199:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 220:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 158:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 234:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 242:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 59:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 121:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 87:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 79:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 122:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 94:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 218:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 91:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 229:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 167:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 173:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 181:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 186:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 115:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 93:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 206:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 201:
case 205:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 6, 1, 1, 3);
else
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 46:
case 174:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 6, 1, 1, 3);
else
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 147:
case 179:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 6, 1, 1, 3);
else
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 116:
case 117:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 6, 1, 1, 3);
else
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 189:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 231:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 126:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 219:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 125:
if (gray8 == gray4)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 5, 2, 1, 3);
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 3, 3, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = pixel5;
}
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 221:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray6 == gray8)
{
dstRowPtr[1] = Interpolate_3(pixel5, pixel6, pixel2, 5, 2, 1, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 3, 3, 3);
}
else
{
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLineNextPixel [0] = pixel5;
}
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
break;
case 207:
if (gray4 == gray2)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 3, 3, 3);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 5, 2, 1, 3);
}
else
{
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
}
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 238:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
{
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 3, 3, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel8, pixel6, 5, 2, 1, 3);
}
else
{
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
}
break;
case 190:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
{
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 3, 3, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 5, 2, 1, 3);
}
else
{
dstRowPtr[1] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
}
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 187:
if (gray4 == gray2)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 3, 3, 3);
dstCurLine[0] = Interpolate_3(pixel5, pixel4, pixel8, 5, 2, 1, 3);
}
else
{
dstRowPtr[0] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
}
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 243:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray6 == gray8)
{
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 5, 2, 1, 3);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 3, 3, 3);
}
else
{
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = pixel5;
}
break;
case 119:
if (gray2 == gray6)
{
dstRowPtr[0] = Interpolate_3(pixel5, pixel2, pixel4, 5, 2, 1, 3);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 3, 3, 3);
}
else
{
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstRowPtr[1] = pixel5;
}
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 233:
case 237:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 47:
case 175:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
break;
case 151:
case 183:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 244:
case 245:
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 250:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 123:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 95:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 222:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 252:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel2, 2, 1, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 249:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel2, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 235:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_3(pixel5, pixel3, pixel6, 2, 1, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 111:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel6, 2, 1, 1, 2);
break;
case 63:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel9, pixel8, 2, 1, 1, 2);
break;
case 159:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel8, 2, 1, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 215:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_3(pixel5, pixel7, pixel4, 2, 1, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 246:
dstRowPtr[0] = Interpolate_3(pixel5, pixel1, pixel4, 2, 1, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 254:
dstRowPtr[0] = Interpolate_2(pixel5, pixel1, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 253:
dstRowPtr[0] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
dstRowPtr[1] = Interpolate_2(pixel5, pixel2, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 251:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel3, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 239:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
dstRowPtr[1] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel6, 3, 1, 2);
break;
case 127:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 2, 1, 1, 2);
else
dstRowPtr[1] = pixel5;
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 2, 1, 1, 2);
else
dstCurLine[0] = pixel5;
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel9, 3, 1, 2);
break;
case 191:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
dstCurLineNextPixel [0] = Interpolate_2(pixel5, pixel8, 3, 1, 2);
break;
case 223:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 2, 1, 1, 2);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel7, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 2, 1, 1, 2);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 247:
dstRowPtr[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
dstCurLine[0] = Interpolate_2(pixel5, pixel4, 3, 1, 2);
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
case 255:
if (gray4 == gray2)
dstRowPtr[0] = Interpolate_3(pixel5, pixel4, pixel2, 14, 1, 1, 4);
else
dstRowPtr[0] = pixel5;
if (gray2 == gray6)
dstRowPtr[1] = Interpolate_3(pixel5, pixel2, pixel6, 14, 1, 1, 4);
else
dstRowPtr[1] = pixel5;
if (gray8 == gray4)
dstCurLine[0] = Interpolate_3(pixel5, pixel8, pixel4, 14, 1, 1, 4);
else
dstCurLine[0] = pixel5;
if (gray6 == gray8)
dstCurLineNextPixel [0] = Interpolate_3(pixel5, pixel6, pixel8, 14, 1, 1, 4);
else
dstCurLineNextPixel [0] = pixel5;
break;
default:
break;
}
srcRowPtr++;
dstRowPtr += step;
}
}
}
本代码仅支持4通道32位,若1通道以及3通道,可参考改动之。
也不是很麻烦,代码也是挺简单的,虽然有点长,懒得写注释了,感兴趣的可以看看官方的代码。
俺这代码主要是做了一些算法上的简单优化。
好久没发博文里,上来冒个泡。不喜请喷。
俺的联系方式如下:
邮箱: gaozhihan@vip.qq.com
QQ:200759103
联系我时请说明来意,不然一律忽略,谢谢。
pixel art之 hqx 算法的更多相关文章
- Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化
Atitit 图像处理Depixelizing Pixel Art像素风格画的矢量化 在去年的时候,偶然看到hqx算法. 一个高质量的插值放大算法. 与双线性插值等插值算法相比,这个算法放大后对人眼 ...
- 像素图的实时光照 Lighting on Pixel Art
去年有这样一个工具,We got one toolkit last year. 他有什么功能呢?What is its function? 让你画出各个方向的照明图 That you can draw ...
- LeetCode 531----Lonely Pixel I----两种算法之间性能的比较
Lonely Pixel I 两种算法之间的性能比较 今天参加LeetCode Weekly Contest 22,第二题 "Lonely Pixel I" 问题描述如下: Giv ...
- 图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting
一.序言 陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的.除了利用和Photoshop中的魔棒一样的技术或者 ...
- 通过AI自学习,Google让Pixel 3的人像模式更优秀
通过AI自学习,Google让Pixel 3的人像模式更优秀 Link: https://news.cnblogs.com/n/613720/ 虽然双摄手机已经在市场上普及,其所带来的人像模式.多倍变 ...
- 自适应共振理论网络 ART
引言 自适应共振理论的发源与现状 1976年, 美国 Boston 大学学者 G. A.Carpenter 提出自适应共振理论(Adaptive Res-onance Theory , ART ), ...
- FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM
FFMpeg ver 20160219-git-98a0053 滤镜中英文对照 2016.02.21 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...
- FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照
1 FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照 2016.02.18 by 1CM 2 T.. = Timeline support 3 支持时间轴 4 .S. = ...
- FFMpeg 滤镜中英文对照
FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照 2016.02.17 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...
随机推荐
- 线段树的区间更新---A Simple Problem with Integers
POJ 3468 Description 给出了一个序列,你需要处理如下两种询问. "C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 100 ...
- [Tool] 透过PowerPoint Online在部落格文章里内嵌简报
[Tool] 透过PowerPoint Online在部落格文章里内嵌简报 前言 讲课的时候,用PowerPoint做简报,好像已经成了讲课的惯例.而在课后,将课堂简报整理成部落格的文章,如果单纯是在 ...
- CRM行编辑控件
原创,转载请说明出处 王红福 http://www.cnblogs.com/hellohongfu/p/4792452.html CRM 本身的表格可以根据定义显示列信息,但是出于性能考虑不能详细的展 ...
- NodeJS: 处理request网页乱码问题
对于gb2312编码的网页,直接用request去获取会得到乱码的结果,解决方法很简单: 1. npm install iconv-lite 2. var iconv = require('iconv ...
- 挣值管理(PV、EV、AC、SV、CV、SPI、CPI)记忆之我见
挣值管理(PV.EV.AC.SV.CV.SPI.CPI)记忆之我见 挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三 ...
- Instruments指南:如何调试内存泄露
Instruments指南:如何调试内存泄露 开篇 现在,你应该使用的ARC,而不是原来我们使用的MRC或者其他.但是我们在使用ARC的时候也会出现内存泄露的情况. 幸运的是,苹果为我们提供了Inst ...
- 【读书笔记】iOS-Objective-C对C的扩展基础知识
一,Xcode的.m扩展名表示文件含有Objective-C代码,应由Objective-C编译器处理.C编译器处理名称以.c结尾的文件,而C++编译器处理.cpp文件.在Xcode中,所有这些编译工 ...
- OpenGL ES学习笔记(三)——纹理
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...
- iOS:交换Button中图片与文字的左右位置
titleEdgeInsets属性和 imageEdgeInsets属性只是在画这个button出来的时候用来调整image和label位置的属性,并不影响button本身的大小.它们只是image和 ...
- XMLHttp小手册,原生ajax参考手册
个人做java ee开发,在一般的公司里上班,做的是一般的网站. 1.如果经常使用jquery等框架进行异步调用,最主要的不是了解jquery怎么用,而是了解http协议. 2.为了了解http协议, ...