#include #include #include #include Average::Average(char *imageName,HPALETTE hPalette,UHUGE *hpImage,WORD width,WORD height,WORD *isThreaded) : mhPalette(hPalette), mhpImage(hpImage), mWidth(width), mHeight(height), mIsThreaded(isThreaded), mDivisor(0) { ::strcpy(mImageName,imageName); } Average::~Average() { } void Average::processImage(Block &averagingMatrix,Criterion criterion) { int size; size=(int)averagingMatrix.size(); if(size!=MatrixDimension*3)return; mAvMatrix[0][0]=averagingMatrix[0]; mAvMatrix[0][1]=averagingMatrix[1]; mAvMatrix[0][2]=averagingMatrix[2]; mAvMatrix[1][0]=averagingMatrix[3]; mAvMatrix[1][1]=averagingMatrix[4]; mAvMatrix[1][2]=averagingMatrix[5]; mAvMatrix[2][0]=averagingMatrix[6]; mAvMatrix[2][1]=averagingMatrix[7]; mAvMatrix[2][2]=averagingMatrix[8]; for(int i=0;isetText((LPSTR)statusMsg); } if(::PeekMessage(&msg,0,0,0,PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } if(!(*mIsThreaded))break; for(currImageCol=1;currImageColsetText(""); } BYTE NEAR Average::averageImageIndex(LONG imageIndex) { BYTE paletteIndex; int tempRed,tempGreen,tempBlue; int col,row; LONG currentIndex; tempRed=tempGreen=tempBlue=0; for(col=-1;colsetText((LPSTR)statusMsg); } if(::PeekMessage(&msg,0,0,0,PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } if(!(*mIsThreaded))break; for(currImageCol=1;currImageColsetText(""); } BYTE NEAR Average::averageImageIndexRangeClipping(LONG imageIndex) { BYTE paletteIndex; int tempRed,tempGreen,tempBlue; int col,row; LONG currentIndex; tempRed=tempGreen=tempBlue=0; for(col=-1;col255)tempRed=255; if(tempGreen<0)tempGreen=0; else if(tempGreen>255)tempGreen=255; if(tempBlue<0)tempBlue=0; else if(tempBlue>255)tempBlue=255; return ::GetNearestPaletteIndex(mhPalette,RGB((BYTE)(tempRed/mDivisor),(BYTE)(tempGreen/mDivisor),(BYTE)(tempBlue/mDivisor))); }