template<class DstArrayT, class SrcArrayT, class KerArrayT, class PixOpT, class RedOpT>
Line : Y direction, simple (inc), using value call.
Definition at line 379 of file FuncGenConv2dSep.h. References ArrayCPB(), ArrayCW(), ArrayInc(), PtrRead(), and PtrWrite(). Referenced by FuncGenConv2dSepDispatch_V(). 00382 { 00383 typedef typename DstArrayT::StorType DstStorT; 00384 typedef typename DstArrayT::ArithType DstArithT; 00385 typedef typename SrcArrayT::StorType SrcStorT; 00386 typedef typename SrcArrayT::ArithType SrcArithT; 00387 typedef typename KerArrayT::StorType KerStorT; 00388 typedef typename KerArrayT::ArithType KerArithT; 00389 00390 int width = ArrayCW(dst); 00391 int kerWidth = ArrayCW(ker); 00392 int kerBW = ArrayCW(ker) / 2; 00393 int srcInc = ArrayInc(src, 0, 1); 00394 KerArithT neutralElement = RedOpT::NeutralElement(); 00395 DstStorT* dPtr = ArrayCPB(dst, 0, y); 00396 SrcStorT* srcPtr = ArrayCPB(src, 0, -kerBW + y); 00397 for (int x=0 ; x<width ; x++) 00398 { 00399 SrcStorT* sPtr = srcPtr; 00400 KerStorT* kPtr = ArrayCPB(ker, 0, 0); 00401 KerArithT result(neutralElement); 00402 for (int k=0; k<kerWidth; k++) 00403 { 00404 redOp.DoIt(result, pixOp.DoIt(PtrRead(sPtr, KerArithT()), 00405 PtrRead(kPtr, KerArithT()))); 00406 sPtr += srcInc; 00407 kPtr += KerArrayT::ElemSize(); 00408 } 00409 PtrWrite(dPtr, result); 00410 srcPtr += SrcArrayT::ElemSize(); 00411 dPtr += DstArrayT::ElemSize(); 00412 } 00413 }
Here is the call graph for this function:
|