template<class DstArrayT, class SrcArrayT, class ExtraArrayT, class NgbT>
Row : phase N, loop.
Definition at line 249 of file FuncNgbOp2dExtra.h. References ArrayCPB(), ArrayCW(), ArrayInc(), FuncNgbOp2dExtra_Pix_P1Loop(), PtrRead(), and PtrWrite(). 00251 { 00252 typedef typename DstArrayT::StorType DstStorT; 00253 typedef typename DstArrayT::ArithType DstArithT; 00254 typedef typename SrcArrayT::StorType SrcStorT; 00255 typedef typename SrcArrayT::ArithType SrcArithT; 00256 typedef typename ExtraArrayT::StorType ExtraStorT; 00257 typedef typename ExtraArrayT::ArithType ExtraArithT; 00258 00259 int ngbWidth = ngb.Width(); 00260 int ngbHeight = ngb.Height(); 00261 int width = ArrayCW(dst); 00262 DstStorT* dPtr = ArrayCPB(dst, 0, y); 00263 SrcStorT* sPtr = ArrayCPB(src, -ngbWidth/2, y-ngbHeight/2); 00264 SrcStorT* ePtr = ArrayCPB(extra, -ngbWidth/2, y-ngbHeight/2); 00265 SrcStorT* cenPtr = ArrayCPB(src, 0, y); 00266 SrcStorT* ecenPtr = ArrayCPB(extra, 0, y); 00267 int srcIncX = ArrayInc(src, 1, 0); 00268 int srcIncY = ArrayInc(src, -ngbWidth, 1); 00269 int extraIncX = ArrayInc(extra, 1, 0); 00270 int extraIncY = ArrayInc(extra, -ngbWidth, 1); 00271 for (int x=0 ; x<width ; x++) 00272 { 00273 int phase = 1; 00274 do { 00275 ngb.Init(phase, x, y, PtrRead(cenPtr, SrcArithT()), 00276 PtrRead(ecenPtr, ExtraArithT())); 00277 FuncNgbOp2dExtra_Pix_P1Loop(sPtr, ePtr, ngb, ngbWidth, ngbHeight, 00278 srcIncX, srcIncY, SrcArithT(), 00279 extraIncX, extraIncY, ExtraArithT()); 00280 ngb.Done(phase); 00281 } while (ngb.HasNextPhase(phase++)); 00282 PtrWrite(dPtr, ngb.Result()); 00283 dPtr += DstArrayT::ElemSize(); 00284 sPtr += SrcArrayT::ElemSize(); 00285 ePtr += ExtraArrayT::ElemSize(); 00286 cenPtr += SrcArrayT::ElemSize(); 00287 ecenPtr += ExtraArrayT::ElemSize(); 00288 } 00289 }
Here is the call graph for this function:
|