SourceAccessorEdgePad.h

Go to the documentation of this file.
00001 // $Id$
00002 
00003 #ifndef __SOURCEACCESSOREDGEPAD_H__
00004 #define __SOURCEACCESSOREDGEPAD_H__
00005 
00006 #include "SourceGenerics.h"
00007 
00008 #include "Point.h"
00009 #include "Point2D.h"
00010 #include <math.h>
00011 
00012 template<class DATA, int DIMENSIONALITY, class PRECISION, class SOURCE>
00013 class SourceAccessorEdgePadOf: public SourceAccessorOf<DATA, DIMENSIONALITY,
00014     PRECISION, SOURCE>
00015 {
00016 public:
00017 };
00018 
00019 template<class DATA, class PRECISION, class SOURCE>
00020 class SourceAccessorEdgePadOf<DATA, 2, PRECISION, SOURCE> : public SourceAccessorOf<
00021     DATA, 2, PRECISION, SOURCE>
00022 {
00023   DATA m_dataPad;
00024 
00025 public:
00026   SourceAccessorEdgePadOf() :
00027     SourceAccessorOf<DATA, 2, PRECISION, SOURCE> (), m_dataPad(0)
00028   {
00029   }
00030 
00031   virtual void Describe() const
00032   {
00033     return (_LINE + "SourceAccessorEdgePadOf(2D)" + LINE_
00034         + this->DescribeCommon());
00035   }
00036 
00037   void Get(DATA& dataOut, PRECISION rX, PRECISION rY) const
00038   {
00039     PRECISION cX = this->m_ptSize.X();
00040     PRECISION cY = this->m_ptSize.Y();
00041 
00042     if (rX < 0 || rY < 0 || rX >= cX || rY >= cY)
00043       {
00044       dataOut = DATA(m_dataPad);
00045       }
00046     else
00047       {
00048       ::Get(this->m_psource, dataOut, rX, rY);
00049       }
00050   }
00051 
00052   void Set(PRECISION rX, PRECISION rY, const DATA& data)
00053   {
00054     PRECISION cX = this->m_ptSize.X();
00055     PRECISION cY = this->m_ptSize.Y();
00056 
00057     if (rX < 0 || rY < 0 || rX >= cX || rY >= cY)
00058       {
00059       return;
00060       }
00061 
00062     ::Set(this->m_psource, rX, rY, data);
00063   }
00064 
00065   void SetPadding(const DATA& data)
00066   {
00067     m_dataPad = data;
00068   }
00069 
00070 };
00071 
00072 #endif // __SOURCEACCESSOREDGEPAD_H__

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1