📄 hsv.c
字号:
#define mid( a, b, c ) \
( a >= b && a <= c ? \
a : ( b >= a && b <= c ? b : c ) )
void RGB2HSV( int nRed, int nGreen, int nBlue,
int *nH, int *nS, int *nV )
{
int nLow, nMid, nHigh;
if( nRed == nGreen &&
nGreen == nBlue ){
*nH = 0;
*nS = 0;
*nV = nRed;
return;
}
nLow = min( nRed, min( nGreen, nBlue ) );
nHigh = max( nRed, max( nGreen, nBlue ) );
nMid = mid( nRed, nGreen, nBlue );
*nV = ( nLow + nHigh ) / 2;
*nS = nHigh - nLow;
int nCommon = (int)
( 60.0 * (double) ( nMid - nLow ) /
(double) ( nHigh - nLow ) );
if( nRed == nLow && nBlue == nHigh )
*nH = 240 - nCommon;
else if( nRed == nLow && nGreen == nHigh )
*nH = 120 + nCommon;
else if( nGreen == nLow && nRed == nHigh )
*nH = 360 - nCommon;
else if( nGreen == nLow && nBlue == nHigh )
*nH = 240 - nCommon;
else if( nBlue == nLow && nGreen == nHigh )
*nH = 120 - nCommon;
else if( nBlue == nLow && nRed == nHigh )
*nH = nCommon;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -