#include <bfxtest.h>
Inheritance diagram for TestBitmapEffect:
Public Member Functions | |
BOOL | Run () |
Internal test routine. | |
Private Member Functions | |
CC_DECLARE_DYNCREATE (TestBitmapEffect) |
Definition at line 117 of file bfxtest.h.
|
|
|
Internal test routine.
Reimplemented from BitmapEffectBase. Definition at line 142 of file bfxtest.cpp. 00143 { 00144 00145 /* 00146 INT32 x, y, i, j; 00147 00148 fixed16 conv[3][3]; 00149 fixed16 convsum; 00150 00151 BitmapInfo BMInfo; 00152 Source->ActualBitmap->GetInfo(&BMInfo); 00153 00154 conv[0][0]=(fixed16) 2.0; conv[0][1] =(fixed16) 2.0; conv[0][2]=(fixed16) 2.0; 00155 conv[1][0]=(fixed16) 2.0; conv[1][1] =(fixed16) 2.0; conv[1][2]=(fixed16) 2.0; 00156 conv[2][0]=(fixed16) 2.0; conv[2][1] =(fixed16) 2.0; conv[2][2]=(fixed16) 2.0; 00157 00158 convsum=(fixed16) 0.0; 00159 00160 for (i=0; i<3; i++) for(j=0; j<3; j++) convsum+=conv[i][j]; 00161 if (convsum!=(fixed16)0) for (i=0; i<3; i++) for(j=0; j<3; j++) conv[i][j]=conv[i][j]/convsum; 00162 00163 for (y=0; y<(INT32) BMInfo.PixelHeight; y++) for (x=0; x<(INT32) BMInfo.PixelWidth; x++) 00164 { 00165 fixed16 r=0.5; //0.5 for final rounding 00166 fixed16 g=0.5; 00167 fixed16 b=0.5; 00168 UINT32 v; 00169 for (i=0; i<3; i++) for(j=0; j<3; j++) 00170 { 00171 v=Source->ReadPixel( (i+x-1<0?0:(i+x-1>=(INT32)BMInfo.PixelWidth?BMInfo.PixelWidth-1:i+x-1)), 00172 (j+y-1<0?0:(j+y-1>=(INT32)BMInfo.PixelHeight?BMInfo.PixelHeight-1:j+y-1))); 00173 r+=conv[i][j]*(fixed16)((INT32)(v & 0xFF)); 00174 g+=conv[i][j]*(fixed16)((INT32)((v & 0xFF00)>>8)); 00175 b+=conv[i][j]*(fixed16)((INT32)((v & 0xFF0000)>>16)); 00176 } 00177 if (convsum==(fixed16)0) 00178 { 00179 r+=128; 00180 g+=128; 00181 b+=128; 00182 } 00183 if (r<0) r=0; 00184 if (g<0) g=0; 00185 if (b<0) b=0; 00186 if (r>255) r=255; 00187 if (g>255) g=255; 00188 if (b>255) b=255; 00189 Destination->PlotPixel(x,y,(r.MakeLong())+((g.MakeLong())<<8)+((b.MakeLong())<<16) ); 00190 } 00191 00192 return TRUE; 00193 */ 00194 TCHAR buf[256]; 00195 00196 clock_t Timer = clock(); // start clock 00197 00198 INT32 i,j; 00199 INT32 ITER; 00200 BOOL dummybool=TRUE; 00201 BOOL ShiftPressed; 00202 KernelBitmap * Temp; 00203 00204 ShiftPressed = ((GetAsyncKeyState( CAMKEY(SHIFT) ) & 0x8000 )!=0); 00205 00206 00207 if (ShiftPressed) 00208 { 00209 ITER=1; 00210 } 00211 else 00212 { 00213 ITER=1; 00214 } 00215 00216 00217 //BfxALULUT LUT; 00218 //LUT.LinearABK(0.09375,0.90625,0); 00219 //Timer = clock() - Timer; // stop clock 00220 00221 for (i=1; i<=ITER; i++) 00222 { 00223 if ((Temp = ALU->NewBitmap(Source)) && 00224 ALU->SetA(Temp) && 00225 ALU->ZeroA() && 00226 ALU->SetB(Source) && 00227 ALU->SetT((DWORD) 0x00) && 00228 ALU->PartTAB() && 00229 TRUE) 00230 { 00231 for (j=1; j<=10; j++) 00232 dummybool=( 00233 00234 ALU->SetA(Destination) && 00235 ALU->ZeroA() && 00236 00237 ALU->SetB(Temp) && 00238 ALU->AddKAB(0x80) && 00239 00240 ALU->ZeroA() && 00241 00242 ALU->SetB(Temp) && 00243 ALU->AddKAB(0x80) && 00244 00245 ALU->SetB(Temp,0,1) && 00246 ALU->AddKAB(0x18) && 00247 00248 ALU->SetB(Temp,0,-1) && 00249 ALU->AddKAB(0x18) && 00250 00251 ALU->SetB(Temp,1,0) && 00252 ALU->AddKAB(0x18) && 00253 00254 ALU->SetB(Temp,-1,0) && 00255 ALU->AddKAB(0x18) && 00256 00257 ALU->SetB(Temp,1,1) && 00258 ALU->AddKAB(0x08) && 00259 00260 ALU->SetB(Temp,-1,1) && 00261 ALU->AddKAB(0x08) && 00262 00263 ALU->SetB(Temp,1,-1) && 00264 ALU->AddKAB(0x08) && 00265 00266 ALU->SetB(Temp,-1,-1) && 00267 ALU->AddKAB(0x08) && 00268 00269 ALU->SetA(Temp) && 00270 ALU->SetB(Destination) && 00271 ALU->PartTAB() && 00272 00273 TRUE); 00274 00275 delete Temp; 00276 } 00277 } 00278 Timer = clock() - Timer; // stop clock 00279 00280 //ALU->SetA(Destination); 00281 //ALU->SetB(Source,-20,20); 00282 //ALU->PlotBLUT(&LUT); 00283 00284 // as this is for our use only, it is permitted to hard-code English strings 00285 00286 // this lovely line translates the clock_t value into a useful value without using 00287 // floats 00288 wsprintf( buf, "Done %d iterations. Each took %d.%03d secs", ITER, (INT32)(Timer / (CLOCKS_PER_SEC*ITER)), 00289 (INT32)((Timer % (CLOCKS_PER_SEC*ITER)) * 1000 / (CLOCKS_PER_SEC*ITER)) ); 00290 00291 if (ShiftPressed) AfxMessageBox( buf ); 00292 00293 return dummybool; 00294 }
|