SourceAccessorEdgePad.h
Go to the documentation of this file.00001
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__