ACI 转 RGB
来源:互联网 发布:mac 编译php 编辑:程序博客网 时间:2024/04/29 18:25
unsigned long ulACI2RGB(unsigned int iAci,
unsigned int *piRed,
unsigned int *piGreen,
unsigned int *piBlue)
{
double dTemp;
dTemp = (iAci % 10) / 2;
int iSign = 0;
double dStart, dFactor, dA, dB, dC;
dStart = dFactor = dA = dB = dC = 0.0;
bool bAdd = false;
int iBase = 0;
if ( iAci < 1 )
{
iAci = 1;
}
else if ( iAci < 10 )
{
goto SkipCalc;
}
else if ( iAci < 60 )
{
bAdd = true; iBase = 1;
}
else if ( iAci < 90 )
{
bAdd = false; iBase = 6;
}
else if ( iAci < 140 )
{
bAdd =true; iBase = 9;
}
else if ( iAci < 170 )
{
bAdd = false; iBase = 14;
}
else if ( iAci < 220 )
{
bAdd = true; iBase = 17;
}
else if ( iAci < 250 )
{
bAdd = false; iBase = 22;
}
else if ( iAci < 256 )
{
goto SkipCalc;
}
else
{
iAci = 255;
goto SkipCalc;
}
if ( bAdd )
{
dStart = dTemp == (int)dTemp ? 0 : 0.5;
}
else
{
dStart = dTemp == (int)dTemp ? 0.75 : 0.875;
}
iSign = bAdd ? 1 : -1;
dFactor = dTemp == (int)dTemp ? 0.25 : 0.125;
switch ( (int)dTemp + 1 )
{
case 1:
dA = 1;
break;
case 2:
dA = 0.65;
break;
case 3:
dA = 0.5;
break;
case 4:
dA = 0.3;
break;
default:
dA = 0.15;
break;
}
dB = (dStart + iSign * ((int)(iAci / 10) - iBase) * dFactor ) * dA;
dC = ( (int)(2 * dTemp) % 2) * 0.5 * dA;
SkipCalc:
switch ( iAci )
{
case 1:
*piRed = 255; *piGreen = 0; *piBlue = 0;
break;
case 2:
*piRed = 255; *piGreen = 255; *piBlue = 0;
break;
case 3:
*piRed = 0; *piGreen = 255; *piBlue = 0;
break;
case 4:
*piRed = 0; *piGreen = 255; *piBlue = 255;
break;
case 5:
*piRed = 0; *piGreen = 0; *piBlue = 255;
break;
case 6:
*piRed = 255; *piGreen = 0; *piBlue = 255;
break;
case 7:
case 8:
case 9:
*piRed = 0; *piGreen = 0; *piBlue = 0;
break;
default:
{
if ( iAci < 60 )
{
*piRed = 255 * dA; *piGreen = 255 * dB; *piBlue = 255 * dC;
}
else if ( iAci < 90 )
{
*piRed = 255 * dB; *piGreen = 255 * dA; *piBlue = 255 * dC;
}
else if ( iAci < 140 )
{
*piRed = 255 * dC; *piGreen = 255 * dA; *piBlue = 255 * dB;
}
else if ( iAci < 170 )
{
*piRed = 255 * dC; *piGreen = 255 * dB; *piBlue = 255 * dA;
}
else if ( iAci < 220 )
{
*piRed = 255 * dB; *piGreen = 255 * dC; *piBlue = 255 * dA;
}
else if ( iAci < 250 )
{
*piRed = 255 * dA; *piGreen = 255 * dC; *piBlue = 255 * dB;
}
else if ( iAci < 256 )
{
double dTempValue;
switch ( int(dTemp * 2) + 1 )
{
case 1:
dTempValue = 0.33;
break;
case 2:
dTempValue = 0.464;
case 3:
dTempValue = 0.598;
break;
case 4:
dTempValue = 0.732;
break;
case 5:
dTempValue = 0.866;
break;
default:
dTempValue = 1;
break;
}
*piRed = 255 * dTempValue;
*piGreen = *piBlue = *piRed;
}
}
}
return RGB(*piRed, *piGreen, *piBlue);
}s
- ACI 转 RGB
- ACI 样例
- ACI权限控制
- aci安装说明
- Cisco ACI的测试感受
- 操作系统ahci aci ide模式
- ACI-LIUNX-Nginx安装配置
- RGB 与 (RGB转 YCbCr再转为 RGB)的图像
- RGB转YUV YUV转RGB
- rgb转yuv420,yuv420转rgb
- bmp转rgb,rgb转yuv420p文件
- YUV转RGB函数
- CMYK 简易转 RGB
- YUV转RGB
- C# RGB转CMYK
- RGB转YUV422,420
- YUV转RGB
- RGB转灰度图
- Windows Server 2003 R2 with SP2 安装Realtek HD AUDIO Driver的解决方法
- 常见内存错误 - iu_81的专栏 - CSDNBlog
- 多线程下vc2003,vc2005对虚函数表处理的BUG?
- 用sp_lock诊断SQL Sever的性能问题
- 您知道SQLServer2005的10个高级特性吗
- ACI 转 RGB
- 在SQL Server中使用NewID()方法产生随机集
- 一个Javascript程序的烦恼!!!!达人赐教
- 在SQL Server 2005中获得详细错误处理信息
- 如何添加新的系统调用
- 使用SQL Server 2005 Express Edition的3种场合
- 【保定七中】【①⑤②】 之爱心守侯
- 命令行方式 启动和停止 windows服务
- 为何等待