template<class DstArrayT, class SrcArrayT, class KerArrayT, class PixOpT, class RedOpT>
Line : X direction (inc), using value call. Processes the entire line designated by y using value call. This function does the same operation as FuncGenConv2dSep_Line_Xdir but the code of FuncGenConv2dSep_Pix_Xdir is inserted in the loop (instead of calling the function like FuncGenConv2dSep_Line_Xdir does). Definition at line 209 of file FuncGenConv2dSep.h. References ArrayCPB(), ArrayCW(), PtrRead(), and PtrWrite(). 00212 { 00213 typedef typename DstArrayT::StorType DstStorT; 00214 typedef typename DstArrayT::ArithType DstArithT; 00215 typedef typename SrcArrayT::StorType SrcStorT; 00216 typedef typename SrcArrayT::ArithType SrcArithT; 00217 typedef typename KerArrayT::StorType KerStorT; 00218 typedef typename KerArrayT::ArithType KerArithT; 00219 00220 int width = ArrayCW(dst); 00221 int kerWidth = ArrayCW(ker); 00222 int kerBW = ArrayCW(ker) / 2; 00223 KerArithT neutralElement = RedOpT::NeutralElement(); 00224 DstStorT* dPtr = ArrayCPB(dst, 0, y); 00225 for (int x=0 ; x<width ; x++) 00226 { 00227 SrcStorT* sPtr = ArrayCPB(src, -kerBW + x, y); 00228 KerStorT* kPtr = ArrayCPB(ker, 0, 0); 00229 KerArithT result(neutralElement); 00230 for (int k=0; k<kerWidth; k++) 00231 { 00232 redOp.DoIt(result, pixOp.DoIt(PtrRead(sPtr, KerArithT()), 00233 PtrRead(kPtr, KerArithT()))); 00234 sPtr += SrcArrayT::ElemSize(); 00235 kPtr += KerArrayT::ElemSize(); 00236 } 00237 PtrWrite(dPtr, result); 00238 dPtr += DstArrayT::ElemSize(); 00239 } 00240 }
Here is the call graph for this function:
|