template<class DstArrayT, class SrcArrayT, class ExtraArrayT, class Extra2ArrayT, class NgbT>
Row : phase N, loop.
Definition at line 297 of file FuncNgbOp2dExtra2.h. References ArrayCPB(), ArrayCW(), ArrayInc(), FuncNgbOp2dExtra2_Pix_P1Loop(), PtrRead(), and PtrWrite(). 00300 { 00301 typedef typename DstArrayT::StorType DstStorT; 00302 typedef typename DstArrayT::ArithType DstArithT; 00303 typedef typename SrcArrayT::StorType SrcStorT; 00304 typedef typename SrcArrayT::ArithType SrcArithT; 00305 typedef typename ExtraArrayT::StorType ExtraStorT; 00306 typedef typename ExtraArrayT::ArithType ExtraArithT; 00307 typedef typename Extra2ArrayT::StorType Extra2StorT; 00308 typedef typename Extra2ArrayT::ArithType Extra2ArithT; 00309 00310 int ngbWidth = ngb.Width(); 00311 int ngbHeight = ngb.Height(); 00312 int width = ArrayCW(dst); 00313 DstStorT* dPtr = ArrayCPB(dst, 0, y); 00314 SrcStorT* sPtr = ArrayCPB(src, -ngbWidth/2, y-ngbHeight/2); 00315 SrcStorT* ePtr = ArrayCPB(extra, -ngbWidth/2, y-ngbHeight/2); 00316 SrcStorT* e2Ptr = ArrayCPB(extra2, -ngbWidth/2, y-ngbHeight/2); 00317 SrcStorT* cenPtr = ArrayCPB(src, 0, y); 00318 SrcStorT* ecenPtr = ArrayCPB(extra, 0, y); 00319 SrcStorT* e2cenPtr = ArrayCPB(extra2, 0, y); 00320 int srcIncX = ArrayInc(src, 1, 0); 00321 int srcIncY = ArrayInc(src, -ngbWidth, 1); 00322 int extraIncX = ArrayInc(extra, 1, 0); 00323 int extraIncY = ArrayInc(extra, -ngbWidth, 1); 00324 int extra2IncX = ArrayInc(extra2, 1, 0); 00325 int extra2IncY = ArrayInc(extra2, -ngbWidth, 1); 00326 for (int x=0 ; x<width ; x++) 00327 { 00328 int phase = 1; 00329 do 00330 { 00331 ngb.Init(phase, x, y, PtrRead(cenPtr, SrcArithT()), 00332 PtrRead(ecenPtr, ExtraArithT()), 00333 PtrRead(e2cenPtr, Extra2ArithT())); 00334 FuncNgbOp2dExtra2_Pix_P1Loop(sPtr, ePtr, e2Ptr, ngb, 00335 ngbWidth, ngbHeight, 00336 srcIncX, srcIncY, SrcArithT(), 00337 extraIncX, extraIncY, ExtraArithT(), 00338 extra2IncX, extra2IncY, Extra2ArithT()); 00339 ngb.Done(phase); 00340 } 00341 while (ngb.HasNextPhase(phase++)); 00342 PtrWrite(dPtr, ngb.Result()); 00343 dPtr += DstArrayT::ElemSize(); 00344 sPtr += SrcArrayT::ElemSize(); 00345 ePtr += ExtraArrayT::ElemSize(); 00346 e2Ptr += Extra2ArrayT::ElemSize(); 00347 cenPtr += SrcArrayT::ElemSize(); 00348 ecenPtr += ExtraArrayT::ElemSize(); 00349 e2cenPtr += Extra2ArrayT::ElemSize(); 00350 } 00351 }
Here is the call graph for this function:
|