📄 dpen4.c
字号:
}
npal = FindClosestRGB(&imgData, palPtr);
*imgOutDataPtr++ = npal; /* store corrected value */
/* calculate corrections for surrounding points */
colorErr = ((imgPal[imgInData].palRed - palPtr[npal].palRed) >> 4);
rerr1[1] = rerr2[1] + (7 * colorErr);
rerr2[1] = colorErr;
rerr2[0] = (5 * colorErr);
colorErr = ((imgPal[imgInData].palGreen - palPtr[npal].palGreen) >> 4);
gerr1[1] = gerr2[1] + (7 * colorErr);
gerr2[1] = colorErr;
gerr2[0] = (5 * colorErr);
colorErr = ((imgPal[imgInData].palBlue - palPtr[npal].palBlue) >> 4);
berr1[1] = berr2[1] + (7 * colorErr);
berr2[1] = colorErr;
berr2[0] = (5 * colorErr);
/* do rest of row */
for (icol = 1; icol < iwidth; icol++)
{
imgInData = *imgInDataPtr++;
tempImgRed = (imgPal[imgInData].palRed) + rerr1[icol];
if (tempImgRed < 0)
{
imgData.palRed = 0;
}
else
{
if (tempImgRed > 0xff00)
{
imgData.palRed = 0xff00;
}
else
{
imgData.palRed = (word) tempImgRed;
}
}
tempImgGreen = (imgPal[imgInData].palGreen) + gerr1[icol];
if (tempImgGreen < 0)
{
imgData.palGreen = 0;
}
else
{
if (tempImgGreen > 0xff00)
{
imgData.palGreen = 0xff00;
}
else
{
imgData.palGreen = (word) tempImgGreen;
}
}
tempImgBlue = (imgPal[imgInData].palBlue) + berr1[icol];
if (tempImgBlue < 0)
{
imgData.palBlue = 0;
}
else
{
if (tempImgBlue > 0xff00)
{
imgData.palBlue = 0xff00;
}
else
{
imgData.palBlue = (word) tempImgBlue;
}
}
npal = FindClosestRGB(&imgData, palPtr);
*imgOutDataPtr++ = npal; /* store corrected value */
/* calculate corrections for surrounding points */
colorErr = ((imgPal[imgInData].palRed - palPtr[npal].palRed) >> 4);
rerr1[icol+1] = rerr2[icol+1] + (7 * colorErr);
rerr2[icol+1] = colorErr;
rerr2[icol-1] += (3 * colorErr);
rerr2[icol] += (5 * colorErr);
colorErr = ((imgPal[imgInData].palGreen - palPtr[npal].palGreen) >> 4);
gerr1[icol+1] = gerr2[icol+1] + (7 * colorErr);
gerr2[icol+1] = colorErr;
gerr2[icol-1] += (3 * colorErr);
gerr2[icol] += (5 * colorErr);
colorErr = ((imgPal[imgInData].palBlue - palPtr[npal].palBlue) >> 4);
berr1[icol+1] = berr2[icol+1] + (7 * colorErr);
berr2[icol+1] = colorErr;
berr2[icol-1] += (3 * colorErr);
berr2[icol] += (5 * colorErr);
}
/* do last pixel */
imgInData = *imgInDataPtr++;
tempImgRed = (imgPal[imgInData].palRed) + rerr1[icol];
if (tempImgRed < 0)
{
imgData.palRed = 0;
}
else
{
if (tempImgRed > 0xff00)
{
imgData.palRed = 0xff00;
}
else
{
imgData.palRed = (word) tempImgRed;
}
}
tempImgGreen = (imgPal[imgInData].palGreen) + gerr1[icol];
if (tempImgGreen < 0)
{
imgData.palGreen = 0;
}
else
{
if (tempImgGreen > 0xff00)
{
imgData.palGreen = 0xff00;
}
else
{
imgData.palGreen = (word) tempImgGreen;
}
}
tempImgBlue = (imgPal[imgInData].palBlue) + berr1[icol];
if (tempImgBlue < 0)
{
imgData.palBlue = 0;
}
else
{
if (tempImgBlue > 0xff00)
{
imgData.palBlue = 0xff00;
}
else
{
imgData.palBlue = (word) tempImgBlue;
}
}
npal = FindClosestRGB(&imgData, palPtr);
*imgOutDataPtr++ = npal; /* store corrected value */
/* calculate corrections for surrounding points */
colorErr = ((imgPal[imgInData].palRed - palPtr[npal].palRed) >> 4);
rerr2[icol-1] += (3 * colorErr);
rerr2[icol] += (5 * colorErr);
colorErr = ((imgPal[imgInData].palGreen - palPtr[npal].palGreen) >> 4);
gerr2[icol-1] += (3 * colorErr);
gerr2[icol] += (5 * colorErr);
colorErr = ((imgPal[imgInData].palBlue - palPtr[npal].palBlue) >> 4);
berr2[icol-1] += (3 * colorErr);
berr2[icol] += (5 * colorErr);
}
/*do last row */
/* get first pixel */
imgInData = *imgInDataPtr++;
tempImgRed = (imgPal[imgInData].palRed) + rerr2[icol];
if (tempImgRed < 0)
{
imgData.palRed = 0;
}
else
{
if (tempImgRed > 0xff00)
{
imgData.palRed = 0xff00;
}
else
{
imgData.palRed = (word) tempImgRed;
}
}
tempImgGreen = (imgPal[imgInData].palGreen) + gerr2[icol];
if (tempImgGreen < 0)
{
imgData.palGreen = 0;
}
else
{
if (tempImgGreen > 0xff00)
{
imgData.palGreen = 0xff00;
}
else
{
imgData.palGreen = (word) tempImgGreen;
}
}
tempImgBlue = (imgPal[imgInData].palBlue) + berr2[icol];
if (tempImgBlue < 0)
{
imgData.palBlue = 0;
}
else
{
if (tempImgBlue > 0xff00)
{
imgData.palBlue = 0xff00;
}
else
{
imgData.palBlue = (word) tempImgBlue;
}
}
npal = FindClosestRGB(&imgData, palPtr);
*imgOutDataPtr++ = npal; /* store corrected value */
/* calculate corrections for surrounding points */
colorErr = ((imgPal[imgInData].palRed - palPtr[npal].palRed) >> 4);
rerr1[1] = rerr2[1] + (7 * colorErr);
colorErr = ((imgPal[imgInData].palGreen - palPtr[npal].palGreen) >> 4);
gerr1[1] = gerr2[1] + (7 * colorErr);
colorErr = ((imgPal[imgInData].palBlue - palPtr[npal].palBlue) >> 4);
berr1[1] = berr2[1] + (7 * colorErr);
/* do rest of row */
for (icol = 1; icol < iwidth; icol++)
{
imgInData = *imgInDataPtr++;
tempImgRed = (imgPal[imgInData].palRed) + rerr1[icol];
if (tempImgRed < 0)
{
imgData.palRed = 0;
}
else
{
if (tempImgRed > 0xff00)
{
imgData.palRed = 0xff00;
}
else
{
imgData.palRed = (word) tempImgRed;
}
}
tempImgGreen = (imgPal[imgInData].palGreen) + gerr1[icol];
if (tempImgGreen < 0)
{
imgData.palGreen = 0;
}
else
{
if (tempImgGreen > 0xff00)
{
imgData.palGreen = 0xff00;
}
else
{
imgData.palGreen = (word) tempImgGreen;
}
}
tempImgBlue = (imgPal[imgInData].palBlue) + berr1[icol];
if (tempImgBlue < 0)
{
imgData.palBlue = 0;
}
else
{
if (tempImgBlue > 0xff00)
{
imgData.palBlue = 0xff00;
}
else
{
imgData.palBlue = (word) tempImgBlue;
}
}
npal = FindClosestRGB(&imgData, palPtr);
*imgOutDataPtr++ = npal; /* store corrected value */
/* calculate corrections for surrounding points */
colorErr = ((imgPal[imgInData].palRed - palPtr[npal].palRed) >> 4);
rerr1[icol+1] = rerr2[icol+1] + (7 * colorErr);
colorErr = ((imgPal[imgInData].palGreen - palPtr[npal].palGreen) >> 4);
gerr1[icol+1] = gerr2[icol+1] + (7 * colorErr);
colorErr = ((imgPal[imgInData].palBlue - palPtr[npal].palBlue) >> 4);
berr1[icol+1] = berr2[icol+1] + (7 * colorErr);
}
/* do last pixel */
imgInData = *imgInDataPtr++;
tempImgRed = (imgPal[imgInData].palRed) + rerr1[icol];
if (tempImgRed < 0)
{
imgData.palRed = 0;
}
else
{
if (tempImgRed > 0xff00)
{
imgData.palRed = 0xff00;
}
else
{
imgData.palRed = (word) tempImgRed;
}
}
tempImgGreen = (imgPal[imgInData].palGreen) + gerr1[icol];
if (tempImgGreen < 0)
{
imgData.palGreen = 0;
}
else
{
if (tempImgGreen > 0xff00)
{
imgData.palGreen = 0xff00;
}
else
{
imgData.palGreen = (word) tempImgGreen;
}
}
tempImgBlue = (imgPal[imgInData].palBlue) + berr1[icol];
if (tempImgBlue < 0)
{
imgData.palBlue = 0;
}
else
{
if (tempImgBlue > 0xff00)
{
imgData.palBlue = 0xff00;
}
else
{
imgData.palBlue = (word) tempImgBlue;
}
}
npal = FindClosestRGB(&imgData, palPtr);
*imgOutDataPtr++ = npal; /* store corrected value */
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -