Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxFuncNgbOp2dExtra.c File Reference

More...

#include "HxFuncNgbOp2dExtra.h"
#include "HxCategories.h"

Pix_variations

template<class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Pix_P1Cnum (SrcDataPtrT &srcPtr, ExtraDataPtrT &extraPtr, NgbT &ngb, typename NgbT::CnumType cnum)
 Pix : phase 1, cnum. More...

template<class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Pix_P1Loop (SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, NgbT &ngb, int ngbWidth, int ngbHeight)
 Pix : phase 1, loop. More...

template<class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Pix_P2Loop (SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, NgbT &ngb, int ngbWidth, int ngbHeight)
 Pix : phase 2, loop. More...


Row_variations

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Row (DstDataPtrT dstPtr, SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, int y, int imgWidth, NgbT &ngb, HxTag1Phase dummy1, HxTagCnum dummy2)
 Row : phase 1, cnum. More...

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Row (DstDataPtrT dstPtr, SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, int y, int imgWidth, NgbT &ngb, HxTag1Phase dummy1, HxTagLoop dummy2)
 Row : phase 1, loop. More...

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Row (DstDataPtrT dstPtr, SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, int y, int imgWidth, NgbT &ngb, HxTag2Phase dummy1, HxTagLoop dummy2)
 Row : phase 2, loop. More...

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtra_Row (DstDataPtrT dstPtr, SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, int y, int imgWidth, NgbT &ngb, HxTagNPhase dummy1, HxTagLoop dummy2)
 Row : phase N, loop. More...


Functions

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT> void HxFuncNgbOp2dExtraDispatch (DstDataPtrT dstPtr, SrcDataPtrT srcPtr, ExtraDataPtrT extraPtr, HxSizes dstSize, NgbT &ngb)
 Dispatch function for NgbOp2dExtra (see Global functions for NgbOp2dExtra) Dispatch is based on the categories defined in NgbT. More...


Detailed Description


Function Documentation

template<class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Pix_P1Cnum SrcDataPtrT &    srcPtr,
ExtraDataPtrT &    extraPtr,
NgbT &    ngb,
typename NgbT::CnumType    cnum
[inline]
 

Pix : phase 1, cnum.

00054 {
00055     for (; cnum != ngb.end(); cnum.inc())
00056     {
00057         SrcDataPtrT nPtr(srcPtr);
00058         nPtr.incXYZ(cnum.x(), cnum.y());
00059         ExtraDataPtrT n2Ptr(extraPtr);
00060         n2Ptr.incXYZ(cnum.x(), cnum.y());
00061         ngb.next(cnum.x(), cnum.y(), nPtr.read(), n2Ptr.read());
00062     }
00063 }

template<class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Pix_P1Loop SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
NgbT &    ngb,
int    ngbWidth,
int    ngbHeight
[inline]
 

Pix : phase 1, loop.

00071 {
00072     for (int j=0; j<ngbHeight; j++) {
00073         for (int i=0; i<ngbWidth; i++) {
00074             ngb.next(i, j, srcPtr.readIncX(), extraPtr.readIncX());
00075         }
00076         srcPtr.decX(ngbWidth);
00077         srcPtr.incY();
00078         extraPtr.decX(ngbWidth);
00079         extraPtr.incY();
00080     }
00081 }

template<class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Pix_P2Loop SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
NgbT &    ngb,
int    ngbWidth,
int    ngbHeight
[inline]
 

Pix : phase 2, loop.

00089 {
00090     for (int j=0; j<ngbHeight; j++) {
00091         for (int i=0; i<ngbWidth; i++) {
00092             ngb.next2(i, j, srcPtr.readIncX(), extraPtr.readIncX());
00093         }
00094         srcPtr.decX(ngbWidth);
00095         srcPtr.incY();
00096         extraPtr.decX(ngbWidth);
00097         extraPtr.incY();
00098     }
00099 }

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Row DstDataPtrT    dstPtr,
SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
int    y,
int    imgWidth,
NgbT &    ngb,
HxTag1Phase    dummy1,
HxTagCnum    dummy2
[inline]
 

Row : phase 1, cnum.

00115 {
00116     srcPtr.incXYZ(ngb.size().x()/2, ngb.size().y()/2, 0);
00117     extraPtr.incXYZ(ngb.size().x()/2, ngb.size().y()/2, 0);
00118     for(int x=0; x < imgWidth; x++) {
00119         ngb.init(x, y, srcPtr.read(), extraPtr.read());
00120         HxFuncNgbOp2dExtra_Pix_P1Cnum(srcPtr, extraPtr, ngb, ngb.begin());
00121         srcPtr.incX();
00122         extraPtr.incX();
00123         dstPtr.writeIncX(ngb.result());
00124     }
00125 }

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Row DstDataPtrT    dstPtr,
SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
int    y,
int    imgWidth,
NgbT &    ngb,
HxTag1Phase    dummy1,
HxTagLoop    dummy2
[inline]
 

Row : phase 1, loop.

00134 {
00135     int ngbWidth = ngb.size().x();
00136     int ngbHeight = ngb.size().y();
00137     SrcDataPtrT cenSrcPtr = srcPtr;
00138     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00139     ExtraDataPtrT cenExtraPtr = extraPtr;
00140     cenExtraPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00141     for(int x=0; x < imgWidth; x++) {
00142         ngb.init(x, y, cenSrcPtr.readIncX(), cenExtraPtr.readIncX());
00143         HxFuncNgbOp2dExtra_Pix_P1Loop(srcPtr, extraPtr, ngb, ngbWidth, ngbHeight);
00144         srcPtr.incX();
00145         extraPtr.incX();
00146         dstPtr.writeIncX(ngb.result());
00147     }
00148 }

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Row DstDataPtrT    dstPtr,
SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
int    y,
int    imgWidth,
NgbT &    ngb,
HxTag2Phase    dummy1,
HxTagLoop    dummy2
[inline]
 

Row : phase 2, loop.

00157 {
00158     int ngbWidth = ngb.size().x();
00159     int ngbHeight = ngb.size().y();
00160     SrcDataPtrT cenSrcPtr = srcPtr;
00161     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00162     ExtraDataPtrT cenExtraPtr = extraPtr;
00163     cenExtraPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00164     for(int x=0; x < imgWidth; x++) {
00165         ngb.init(x, y, cenSrcPtr.read(), cenExtraPtr.read());
00166         HxFuncNgbOp2dExtra_Pix_P1Loop(srcPtr, extraPtr, ngb, ngbWidth, ngbHeight);
00167         ngb.init2(x, y, cenSrcPtr.readIncX(), cenExtraPtr.readIncX());
00168         HxFuncNgbOp2dExtra_Pix_P2Loop(srcPtr, extraPtr, ngb, ngbWidth, ngbHeight);
00169         srcPtr.incX();
00170         extraPtr.incX();
00171         dstPtr.writeIncX(ngb.result());
00172     }
00173 }

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtra_Row DstDataPtrT    dstPtr,
SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
int    y,
int    imgWidth,
NgbT &    ngb,
HxTagNPhase    dummy1,
HxTagLoop    dummy2
[inline]
 

Row : phase N, loop.

00182 {
00183     int ngbWidth = ngb.size().x();
00184     int ngbHeight = ngb.size().y();
00185     SrcDataPtrT cenSrcPtr = srcPtr;
00186     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00187     ExtraDataPtrT cenExtraPtr = extraPtr;
00188     cenExtraPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00189     for(int x=0; x < imgWidth; x++) {
00190         int phase = 1;
00191         do {
00192             ngb.init(phase, x, y, cenSrcPtr.read(), cenExtraPtr.read());
00193             HxFuncNgbOp2dExtra_Pix_P1Loop(srcPtr, extraPtr, ngb,
00194                                           ngbWidth, ngbHeight);
00195             ngb.done(phase);
00196         } while (ngb.hasNextPhase(phase++));
00197         cenSrcPtr.incX();
00198         srcPtr.incX();
00199         cenExtraPtr.incX();
00200         extraPtr.incX();
00201         dstPtr.writeIncX(ngb.result());
00202     }
00203 }

template<class DstDataPtrT, class SrcDataPtrT, class ExtraDataPtrT, class NgbT>
void HxFuncNgbOp2dExtraDispatch DstDataPtrT    dstPtr,
SrcDataPtrT    srcPtr,
ExtraDataPtrT    extraPtr,
HxSizes    dstSize,
NgbT &    ngb
 

Dispatch function for NgbOp2dExtra (see Global functions for NgbOp2dExtra) Dispatch is based on the categories defined in NgbT.

Parameters:
dstPtr  Output image: IS = dstSize, IBS = 0
srcPtr  Input image: IS = dstSize+2*(ngbSize/2), IBS = ngbSize/2, srcPtr is at (IX0,IY0)
extraPtr  Extra image: IS = dstSize+2*(ngbSize/2), IBS = ngbSize/2, extraPtr is at (IX0,IY0)

00223 {
00224     for(int y=0; y < dstSize.y(); y++) {
00225         HxFuncNgbOp2dExtra_Row(dstPtr, srcPtr, extraPtr, y, dstSize.x(), ngb,
00226                           typename NgbT::PhaseCategory(),
00227                           typename NgbT::IteratorCategory());
00228         srcPtr.incY();
00229         extraPtr.incY();
00230         dstPtr.incY();
00231     }
00232 }


Generated on Tue Feb 3 14:18:47 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001