template<class DstArrayT, class SrcArrayT, class ExtraArrayT, class NgbT>
Row : phase 2, loop.
Definition at line 201 of file FuncNgbOp2dExtra.h. References ArrayCPB(), ArrayCW(), ArrayInc(), FuncNgbOp2dExtra_Pix_P1Loop(), FuncNgbOp2dExtra_Pix_P2Loop(), PtrRead(), and PtrWrite(). 00203 { 00204 typedef typename DstArrayT::StorType DstStorT; 00205 typedef typename DstArrayT::ArithType DstArithT; 00206 typedef typename SrcArrayT::StorType SrcStorT; 00207 typedef typename SrcArrayT::ArithType SrcArithT; 00208 typedef typename ExtraArrayT::StorType ExtraStorT; 00209 typedef typename ExtraArrayT::ArithType ExtraArithT; 00210 00211 int ngbWidth = ngb.Width(); 00212 int ngbHeight = ngb.Height(); 00213 int width = ArrayCW(dst); 00214 DstStorT* dPtr = ArrayCPB(dst, 0, y); 00215 SrcStorT* sPtr = ArrayCPB(src, -ngbWidth/2, y-ngbHeight/2); 00216 SrcStorT* ePtr = ArrayCPB(extra, -ngbWidth/2, y-ngbHeight/2); 00217 SrcStorT* cenPtr = ArrayCPB(src, 0, y); 00218 SrcStorT* ecenPtr = ArrayCPB(extra, 0, y); 00219 int srcIncX = ArrayInc(src, 1, 0); 00220 int srcIncY = ArrayInc(src, -ngbWidth, 1); 00221 int extraIncX = ArrayInc(extra, 1, 0); 00222 int extraIncY = ArrayInc(extra, -ngbWidth, 1); 00223 for (int x=0 ; x<width ; x++) 00224 { 00225 ngb.Init(x, y, PtrRead(cenPtr, SrcArithT()), 00226 PtrRead(ecenPtr, ExtraArithT())); 00227 FuncNgbOp2dExtra_Pix_P1Loop(sPtr, ePtr, ngb, ngbWidth, ngbHeight, 00228 srcIncX, srcIncY, SrcArithT(), 00229 extraIncX, extraIncY, ExtraArithT()); 00230 ngb.Init2(x, y, PtrRead(cenPtr, SrcArithT()), 00231 PtrRead(ecenPtr, ExtraArithT())); 00232 FuncNgbOp2dExtra_Pix_P2Loop(sPtr, ePtr, ngb, ngbWidth, ngbHeight, 00233 srcIncX, srcIncY, SrcArithT(), 00234 extraIncX, extraIncY, ExtraArithT()); 00235 PtrWrite(dPtr, ngb.Result()); 00236 dPtr += DstArrayT::ElemSize(); 00237 sPtr += SrcArrayT::ElemSize(); 00238 ePtr += ExtraArrayT::ElemSize(); 00239 cenPtr += SrcArrayT::ElemSize(); 00240 ecenPtr += ExtraArrayT::ElemSize(); 00241 } 00242 }
Here is the call graph for this function:
|