template<class DstArrayT, class SrcArrayT, class ExtraArrayT, class Extra2ArrayT, class NgbT>
Row : phase 2, loop.
Definition at line 235 of file FuncNgbOp2dExtra2.h. References ArrayCPB(), ArrayCW(), ArrayInc(), FuncNgbOp2dExtra2_Pix_P1Loop(), FuncNgbOp2dExtra2_Pix_P2Loop(), PtrRead(), and PtrWrite(). 00238 { 00239 typedef typename DstArrayT::StorType DstStorT; 00240 typedef typename DstArrayT::ArithType DstArithT; 00241 typedef typename SrcArrayT::StorType SrcStorT; 00242 typedef typename SrcArrayT::ArithType SrcArithT; 00243 typedef typename ExtraArrayT::StorType ExtraStorT; 00244 typedef typename ExtraArrayT::ArithType ExtraArithT; 00245 typedef typename Extra2ArrayT::StorType Extra2StorT; 00246 typedef typename Extra2ArrayT::ArithType Extra2ArithT; 00247 00248 int ngbWidth = ngb.Width(); 00249 int ngbHeight = ngb.Height(); 00250 int width = ArrayCW(dst); 00251 DstStorT* dPtr = ArrayCPB(dst, 0, y); 00252 SrcStorT* sPtr = ArrayCPB(src, -ngbWidth/2, y-ngbHeight/2); 00253 SrcStorT* ePtr = ArrayCPB(extra, -ngbWidth/2, y-ngbHeight/2); 00254 SrcStorT* e2Ptr = ArrayCPB(extra2, -ngbWidth/2, y-ngbHeight/2); 00255 SrcStorT* cenPtr = ArrayCPB(src, 0, y); 00256 SrcStorT* ecenPtr = ArrayCPB(extra, 0, y); 00257 SrcStorT* e2cenPtr = ArrayCPB(extra2, 0, y); 00258 int srcIncX = ArrayInc(src, 1, 0); 00259 int srcIncY = ArrayInc(src, -ngbWidth, 1); 00260 int extraIncX = ArrayInc(extra, 1, 0); 00261 int extraIncY = ArrayInc(extra, -ngbWidth, 1); 00262 int extra2IncX = ArrayInc(extra2, 1, 0); 00263 int extra2IncY = ArrayInc(extra2, -ngbWidth, 1); 00264 for (int x=0 ; x<width ; x++) 00265 { 00266 ngb.Init(x, y, PtrRead(cenPtr, SrcArithT()), 00267 PtrRead(ecenPtr, ExtraArithT()), 00268 PtrRead(e2cenPtr, Extra2ArithT())); 00269 FuncNgbOp2dExtra2_Pix_P1Loop(sPtr, ePtr, e2Ptr, ngb, ngbWidth, ngbHeight, 00270 srcIncX, srcIncY, SrcArithT(), 00271 extraIncX, extraIncY, ExtraArithT(), 00272 extra2IncX, extra2IncY, Extra2ArithT()); 00273 ngb.Init2(x, y, PtrRead(cenPtr, SrcArithT()), 00274 PtrRead(ecenPtr, ExtraArithT()), 00275 PtrRead(e2cenPtr, Extra2ArithT())); 00276 FuncNgbOp2dExtra2_Pix_P2Loop(sPtr, ePtr, e2Ptr, ngb, ngbWidth, ngbHeight, 00277 srcIncX, srcIncY, SrcArithT(), 00278 extraIncX, extraIncY, ExtraArithT(), 00279 extra2IncX, extra2IncY, Extra2ArithT()); 00280 PtrWrite(dPtr, ngb.Result()); 00281 dPtr += DstArrayT::ElemSize(); 00282 sPtr += SrcArrayT::ElemSize(); 00283 ePtr += ExtraArrayT::ElemSize(); 00284 e2Ptr += Extra2ArrayT::ElemSize(); 00285 cenPtr += SrcArrayT::ElemSize(); 00286 ecenPtr += ExtraArrayT::ElemSize(); 00287 e2cenPtr += Extra2ArrayT::ElemSize(); 00288 } 00289 }
Here is the call graph for this function:
|