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

HxFuncNgbOp2d.c File Reference

More...

#include "HxFuncNgbOp2d.h"
#include "HxCategories.h"

Pix_variations

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

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

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


Row_variations

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

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

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

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


Functions

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


Detailed Description


Function Documentation

template<class SrcDataPtrT, class NgbT>
void HxFuncNgbOp2d_Pix_P1Cnum SrcDataPtrT &    srcPtr,
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         ngb.next(cnum.x(), cnum.y(), nPtr.read());
00060     }
00061 }

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

Pix : phase 1, loop.

00068 {
00069     for (int j=0; j<ngbHeight; j++) {
00070         for (int i=0; i<ngbWidth; i++) {
00071             ngb.next(i, j, srcPtr.readIncX());
00072         }
00073         srcPtr.decX(ngbWidth);
00074         srcPtr.incY();
00075     }
00076 }

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

Pix : phase 2, loop.

00083 {
00084     for (int j=0; j<ngbHeight; j++) {
00085         for (int i=0; i<ngbWidth; i++) {
00086             ngb.next2(i, j, srcPtr.readIncX());
00087         }
00088         srcPtr.decX(ngbWidth);
00089         srcPtr.incY();
00090     }
00091 }

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

Row : phase 1, cnum.

00106 {
00107     srcPtr.incXYZ(ngb.size().x()/2, ngb.size().y()/2, 0);
00108     for(int x=0; x < imgWidth; x++) {
00109         ngb.init(x, y, srcPtr.read());
00110         HxFuncNgbOp2d_Pix_P1Cnum(srcPtr, ngb, ngb.begin());
00111         srcPtr.incX();
00112         dstPtr.writeIncX(ngb.result());
00113     }
00114 }

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

Row : phase 1, loop.

00122 {
00123     int ngbWidth = ngb.size().x();
00124     int ngbHeight = ngb.size().y();
00125     SrcDataPtrT cenSrcPtr = srcPtr;
00126     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00127     for(int x=0; x < imgWidth; x++) {
00128         ngb.init(x, y, cenSrcPtr.readIncX());
00129         HxFuncNgbOp2d_Pix_P1Loop(srcPtr, ngb, ngbWidth, ngbHeight);
00130         srcPtr.incX();
00131         dstPtr.writeIncX(ngb.result());
00132     }
00133 }

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

Row : phase 2, loop.

00141 {
00142     int ngbWidth = ngb.size().x();
00143     int ngbHeight = ngb.size().y();
00144     SrcDataPtrT cenSrcPtr = srcPtr;
00145     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00146     for(int x=0; x < imgWidth; x++) {
00147         ngb.init(x, y, cenSrcPtr.read());
00148         HxFuncNgbOp2d_Pix_P1Loop(srcPtr, ngb, ngbWidth, ngbHeight);
00149         ngb.init2(x, y, cenSrcPtr.readIncX());
00150         HxFuncNgbOp2d_Pix_P2Loop(srcPtr, ngb, ngbWidth, ngbHeight);
00151         srcPtr.incX();
00152         dstPtr.writeIncX(ngb.result());
00153     }
00154 }

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

Row : phase N, loop.

00162 {
00163     int ngbWidth = ngb.size().x();
00164     int ngbHeight = ngb.size().y();
00165     SrcDataPtrT cenSrcPtr = srcPtr;
00166     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00167     for(int x=0; x < imgWidth; x++) {
00168         int phase = 1;
00169         do {
00170             ngb.init(phase, x, y, cenSrcPtr.read());
00171             HxFuncNgbOp2d_Pix_P1Loop(srcPtr, ngb, ngbWidth, ngbHeight);
00172             ngb.done(phase);
00173         } while (ngb.hasNextPhase(phase++));
00174         cenSrcPtr.incX();
00175         srcPtr.incX();
00176         dstPtr.writeIncX(ngb.result());
00177     }
00178 }

template<class DstDataPtrT, class SrcDataPtrT, class NgbT>
void HxFuncNgbOp2dDispatch DstDataPtrT    dstPtr,
SrcDataPtrT    srcPtr,
HxSizes    dstSize,
NgbT &    ngb
 

Dispatch function for NgbOp2d (see Global functions for NgbOp2d) 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)

00196 {
00197     for(int y=0; y < dstSize.y(); y++) {
00198         HxFuncNgbOp2d_Row(dstPtr, srcPtr, y, dstSize.x(), ngb,
00199                           typename NgbT::PhaseCategory(),
00200                           typename NgbT::IteratorCategory());
00201         srcPtr.incY();
00202         dstPtr.incY();
00203     }
00204 }


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