⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dpen4.c

📁 nucleus 文件系统,内核和彩色图形系统,在小系统上非常好用
💻 C
📖 第 1 页 / 共 2 页
字号:
		}

		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 + -