www.pudn.com > isee_code01231.zip > BogusMulticolor.cpp
// 未完成文件
#include "stdafx.h"
#include "BogusMulticolor.h"
#include "AdjustContrast.h"
#include "System.h"
void _fnSPE_BogusRed(BYTE *pRed)
{
if(*pRed>=0 && *pRed<=63)
{
*pRed=0;
}
else if(*pRed>=64 && *pRed<=127)
{
*pRed=0;
}
else if(*pRed>=128 && *pRed<=191)
{
*pRed=*pRed*4-510;
}
else if(*pRed>=192 && *pRed<=255)
{
*pRed=255;
}
}
void _fnSPE_BogusGreen(BYTE *pGrn)
{
if(*pGrn>=0 && *pGrn<=63)
{
*pGrn=254-4*(*pGrn);
}
else if(*pGrn>=64 && *pGrn<=127)
{
*pGrn=4*(*pGrn)-254;
}
else if(*pGrn>=128 && *pGrn<=191)
{
*pGrn=255;
}
else if(*pGrn>=192 && *pGrn<=255)
{
*pGrn=1022-4*(*pGrn);
}
}
void _fnSPE_BogusBlue(BYTE *pBlu)
{
if(*pBlu>=0 && *pBlu<=63)
{
*pBlu=255;
}
else if(*pBlu>=64 && *pBlu<=127)
{
*pBlu=510-4*(*pBlu);
}
else if(*pBlu>=128 && *pBlu<=191)
{
*pBlu=0;
}
else if(*pBlu>=192 && *pBlu<=255)
{
*pBlu=0;
}
}
void _fnSPE_BogusMulticolor(BYTE *pRed,BYTE *pGrn,BYTE *pBlu)
{
_fnSPE_BogusRed(pRed);
_fnSPE_BogusGreen(pGrn);
_fnSPE_BogusBlue(pBlu);
}
// 伪彩色调节处理函数
BOOL _fnCOM_BogusMulticolor(LPIMAGEPROCSTR lpInfo)
{
static HANDLE hCursor;
hCursor=GetCursor();
SetCursor(LoadCursor(NULL, IDC_WAIT));
CreatMemImage(lpProcInfo);
CopyMemory(lpInfo->_pdbdata ,lpInfo->_psbdata ,lpInfo->sImageInfo.width*lpInfo->sImageInfo.height*(lpInfo->sImageInfo.bitperpix/8));
LPBYTE pRed=(LPBYTE)lpInfo->_pdbdata;
LPBYTE pGrn=pRed+1, pBlu=pRed+2;
WORD skip=lpInfo->sImageInfo.bitperpix/8;
UINT i,j;
for(i=0;i<(UINT)lpInfo->sImageInfo.width;i++)
{
for(j=0;j<(UINT)lpInfo->sImageInfo.height;j++)
{
_fnSPE_BogusMulticolor(pRed,pGrn,pBlu);
pRed+=skip;
pGrn+=skip;
pBlu+=skip;
}
}
SetCursor((HICON)hCursor);
return PROCERR_SUCCESS;
}