DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
HyperRectDomain.ih
1 
30 
31 // IMPLEMENTATION of inline methods.
33 
35 #include <cstdlib>
36 #include "DGtal/io/Color.h"
37 //-----------------------------------------------------------------------------
38 template<typename TSpace>
39 inline
41  : myLowerBound(Point::zero),
42  myUpperBound(Point::zero),
43  myPredicate( myLowerBound, myUpperBound ),
44  myIteratorBegin(myLowerBound,
45  myLowerBound,
46  myUpperBound),
47  myIteratorEnd(myUpperBound,
48  myLowerBound,
49  myUpperBound)
50 { ++myIteratorEnd; }
51 //-----------------------------------------------------------------------------
52 template<typename TSpace>
53 inline
55  const Point &aPointB ) :
56  myLowerBound(/*std::*/min(aPointA, aPointB)),
57  myUpperBound(/*std::*/max(aPointA, aPointB)),
58  myPredicate( myLowerBound, myUpperBound ),
59  myIteratorBegin(myLowerBound,
60  myLowerBound,
61  myUpperBound),
62  myIteratorEnd(myUpperBound,
63  myLowerBound,
64  myUpperBound)
65 
66 { ++myIteratorEnd; }
67 //-----------------------------------------------------------------------------
68 template<typename TSpace>
69 inline
71 ( const typename DGtal::HyperRectDomain<TSpace> &aDomain) :
72  myLowerBound(aDomain.lowerBound()),
73  myUpperBound(aDomain.upperBound()),
74  myPredicate( myLowerBound, myUpperBound ),
75  myIteratorBegin(myLowerBound,
76  myLowerBound,
77  myUpperBound),
78  myIteratorEnd(myUpperBound,
79  myLowerBound,
80  myUpperBound)
81 { ++myIteratorEnd; }
82 //-----------------------------------------------------------------------------
83 template<typename TSpace>
84 inline
86 {}
87 //-----------------------------------------------------------------------------
88 template<typename TSpace>
89 inline
92 ( const typename DGtal::HyperRectDomain<TSpace> & other )
93 {
94  if ( this != &other )
95  {
96  myLowerBound = other.myLowerBound;
97  myUpperBound = other.myUpperBound;
98  myPredicate = other.myPredicate;
99  new(&myIteratorBegin) ConstIterator(myLowerBound,myLowerBound,myUpperBound);
100  new(&myIteratorEnd) ConstIterator(myUpperBound,myLowerBound,myUpperBound);
101  ++myIteratorEnd;
102  }
103  return *this;
104 }
105 //-----------------------------------------------------------------------------
106 /*
107 template<typename TSpace>
108 inline
109 std::size_t
110 DGtal::HyperRectDomain<TSpace>::extent() const
111 {
112  return extent(myLowerBound, myUpperBound);
113  }*/
114 //-----------------------------------------------------------------------------
115 template<typename TSpace>
116 inline
119 {
120  return myLowerBound;
121 }
122 //-----------------------------------------------------------------------------
123 template<typename TSpace>
124 inline
125 bool
127 {
128  return myPredicate( p );
129  //LowerBound.isLower( p ) && myUpperBound.isUpper( p );
130 }
131 //-----------------------------------------------------------------------------
132 template<typename TSpace>
133 inline
136 {
137  return myPredicate;
138 }
139 //-----------------------------------------------------------------------------
140 template<typename TSpace>
141 inline
144 {
145  return myUpperBound;
146 }
147 //-----------------------------------------------------------------------------
148 template<typename TSpace>
149 inline
150 void
152 {
153  out << "[HyperRectDomain] = [" << myLowerBound << "]x["
154  << myUpperBound << "]";
155 }
156 //-----------------------------------------------------------------------------
157 template<typename TSpace>
158 inline
159 bool
161 {
162  return true;
163 }
164 
165 //-----------------------------------------------------------------------------
166 template<typename TSpace>
167 inline
168 std::string
170 {
171  return "HyperRectDomain";
172 }
173 
174 //-----------------------------------------------------------------------------
175 template<typename TSpace>
176 inline
177 std::ostream&
178 DGtal::operator<< ( std::ostream & out,
179  const HyperRectDomain<TSpace> & object )
180 {
181  object.selfDisplay ( out );
182  return out;
183 }
185 
186