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

HxFuncNgbOp2dExtra2.c File Reference

More...

#include "HxFuncNgbOp2dExtra2.h"
#include "HxCategories.h"

Pix_variations

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

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

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


Row_variations

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

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

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

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


Functions

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


Detailed Description


Function Documentation

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

Pix : phase 1, cnum.

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

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

Pix : phase 1, loop.

00075 {
00076     for (int j=0; j<ngbHeight; j++) {
00077         for (int i=0; i<ngbWidth; i++) {
00078             ngb.next(i, j, srcPtr.readIncX(), extraPtr.readIncX(), 
00079                      extra2Ptr.readIncX());
00080         }
00081         srcPtr.decX(ngbWidth);
00082         srcPtr.incY();
00083         extraPtr.decX(ngbWidth);
00084         extraPtr.incY();
00085         extra2Ptr.decX(ngbWidth);
00086         extra2Ptr.incY();
00087     }
00088 }

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

Pix : phase 2, loop.

00097 {
00098     for (int j=0; j<ngbHeight; j++) {
00099         for (int i=0; i<ngbWidth; i++) {
00100             ngb.next2(i, j, srcPtr.readIncX(), extraPtr.readIncX(),
00101                       extra2Ptr.readIncX());
00102         }
00103         srcPtr.decX(ngbWidth);
00104         srcPtr.incY();
00105         extraPtr.decX(ngbWidth);
00106         extraPtr.incY();
00107         extra2Ptr.decX(ngbWidth);
00108         extra2Ptr.incY();
00109     }
00110 }

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

Row : phase 1, cnum.

00127 {
00128     srcPtr.incXYZ(ngb.size().x()/2, ngb.size().y()/2, 0);
00129     extraPtr.incXYZ(ngb.size().x()/2, ngb.size().y()/2, 0);
00130     extra2Ptr.incXYZ(ngb.size().x()/2, ngb.size().y()/2, 0);
00131     for(int x=0; x < imgWidth; x++) {
00132         ngb.init(x, y, srcPtr.read(), extraPtr.read(), extra2Ptr.read());
00133         HxFuncNgbOp2dExtra2_Pix_P1Cnum(srcPtr, extraPtr, extra2Ptr, ngb,
00134                                        ngb.begin());
00135         srcPtr.incX();
00136         extraPtr.incX();
00137         extra2Ptr.incX();
00138         dstPtr.writeIncX(ngb.result());
00139     }
00140 }

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

Row : phase 1, loop.

00150 {
00151     int ngbWidth = ngb.size().x();
00152     int ngbHeight = ngb.size().y();
00153     SrcDataPtrT cenSrcPtr = srcPtr;
00154     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00155     ExtraDataPtrT cenExtraPtr = extraPtr;
00156     cenExtraPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00157     Extra2DataPtrT cenExtra2Ptr = extra2Ptr;
00158     cenExtra2Ptr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00159     for(int x=0; x < imgWidth; x++) {
00160         ngb.init(x, y, cenSrcPtr.readIncX(), cenExtraPtr.readIncX(),
00161                  cenExtra2Ptr.readIncX());
00162         HxFuncNgbOp2dExtra2_Pix_P1Loop(srcPtr, extraPtr, extra2Ptr, ngb,
00163                                        ngbWidth, ngbHeight);
00164         srcPtr.incX();
00165         extraPtr.incX();
00166         extra2Ptr.incX();
00167         dstPtr.writeIncX(ngb.result());
00168     }
00169 }

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

Row : phase 2, loop.

00179 {
00180     int ngbWidth = ngb.size().x();
00181     int ngbHeight = ngb.size().y();
00182     SrcDataPtrT cenSrcPtr = srcPtr;
00183     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00184     ExtraDataPtrT cenExtraPtr = extraPtr;
00185     cenExtraPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00186     Extra2DataPtrT cenExtra2Ptr = extra2Ptr;
00187     cenExtra2Ptr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00188     for(int x=0; x < imgWidth; x++) {
00189         ngb.init(x, y, cenSrcPtr.read(), cenExtraPtr.read(), cenExtra2Ptr.read());
00190         HxFuncNgbOp2dExtra2_Pix_P1Loop(srcPtr, extraPtr, extra2Ptr, ngb,
00191                                        ngbWidth, ngbHeight);
00192         ngb.init2(x, y, cenSrcPtr.readIncX(), cenExtraPtr.readIncX(),
00193                   cenExtraPtr.readIncX());
00194         HxFuncNgbOp2dExtra2_Pix_P2Loop(srcPtr, extraPtr, extra2Ptr, ngb,
00195                                        ngbWidth, ngbHeight);
00196         srcPtr.incX();
00197         extraPtr.incX();
00198         extra2Ptr.incX();
00199         dstPtr.writeIncX(ngb.result());
00200     }
00201 }

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

Row : phase N, loop.

00211 {
00212     int ngbWidth = ngb.size().x();
00213     int ngbHeight = ngb.size().y();
00214     SrcDataPtrT cenSrcPtr = srcPtr;
00215     cenSrcPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00216     ExtraDataPtrT cenExtraPtr = extraPtr;
00217     cenExtraPtr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00218     Extra2DataPtrT cenExtra2Ptr = extra2Ptr;
00219     cenExtra2Ptr.incXYZ(ngbWidth/2, ngbHeight/2, 0);
00220     for(int x=0; x < imgWidth; x++) {
00221         int phase = 1;
00222         do {
00223             ngb.init(phase, x, y, cenSrcPtr.read(), cenExtraPtr.read(),
00224                      cenExtra2Ptr.read());
00225             HxFuncNgbOp2dExtra2_Pix_P1Loop(srcPtr, extraPtr, extra2Ptr, ngb,
00226                                           ngbWidth, ngbHeight);
00227             ngb.done(phase);
00228         } while (ngb.hasNextPhase(phase++));
00229         cenSrcPtr.incX();
00230         srcPtr.incX();
00231         cenExtraPtr.incX();
00232         extraPtr.incX();
00233         cenExtra2Ptr.incX();
00234         extra2Ptr.incX();
00235         dstPtr.writeIncX(ngb.result());
00236     }
00237 }

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

Dispatch function for NgbOp2dExtra2 (see Global functions for NgbOp2dExtra2) 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)
extra2Ptr  Extra image: IS = dstSize+2*(ngbSize/2), IBS = ngbSize/2, extra2Ptr is at (IX0,IY0)

00260 {
00261     for(int y=0; y < dstSize.y(); y++) {
00262         HxFuncNgbOp2dExtra2_Row(dstPtr, srcPtr, extraPtr, extra2Ptr,
00263                                 y, dstSize.x(), ngb,
00264                                 typename NgbT::PhaseCategory(),
00265                                 typename NgbT::IteratorCategory());
00266         srcPtr.incY();
00267         extraPtr.incY();
00268         extra2Ptr.incY();
00269         dstPtr.incY();
00270     }
00271 }


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