DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
DigitalSetDomain.ih
1 
30 
31 #include <cstdlib>
33 
35 // IMPLEMENTATION of inline methods.
37 
39 // ----------------------- Standard services ------------------------------
40 
41 template <typename TDigitalSet>
42 inline
45 {
46 }
47 //------------------------------------------------------------------------------
48 template <typename TDigitalSet>
49 inline
52  : mySet( aSet ), myPredicate( aSet )
53 {
54  mySet.computeBoundingBox( myLowerBound, myUpperBound );
55 }
56 //------------------------------------------------------------------------------
57 template <typename TDigitalSet>
58 inline
61  : mySet( other.mySet ),
62  myLowerBound( other.myLowerBound ),
63  myUpperBound( other.myUpperBound ),
64  myPredicate( other.mySet )
65 {}
66 
67 // ----------------------- Domain services --------------------------------
68 //------------------------------------------------------------------------------
69 template <typename TDigitalSet>
70 inline
73 ::begin(const Point &aPoint) const
74 {
75  return mySet.find(aPoint);
76 }
77 //------------------------------------------------------------------------------
78 template <typename TDigitalSet>
79 inline
82 ::begin() const
83 {
84  return mySet.begin();
85 }
86 //------------------------------------------------------------------------------
87 template <typename TDigitalSet>
88 inline
91 ::end() const
92 {
93  return mySet.end();
94 }
95 //------------------------------------------------------------------------------
96 template <typename TDigitalSet>
97 inline
101 {
102  return myLowerBound;
103 }
104 //------------------------------------------------------------------------------
105 template <typename TDigitalSet>
106 inline
110 {
111  return myUpperBound;
112 }
113 //------------------------------------------------------------------------------
114 template <typename TDigitalSet>
115 inline
118 ::size() const
119 {
120  return mySet.size();
121 }
122 //------------------------------------------------------------------------------
123 template <typename TDigitalSet>
124 inline
125 bool
127 ::isInside( const Point & p ) const
128 {
129  // std::cerr << "isInside: p=" << p
130  // << " lower=" << myLowerBound
131  // << " islower=" << p.isLower( myUpperBound )
132  // << " upper=" << myUpperBound
133  // << " isupper=" << p.isUpper( myLowerBound )
134  // << std::endl;
135  return p.isLower( myUpperBound )
136  && p.isUpper( myLowerBound )
137  && myPredicate( p ); // mySet.find( p ) != end();
138 }
139 //------------------------------------------------------------------------------
140 template <typename TDigitalSet>
141 inline
144 ::predicate() const
145 {
146  return myPredicate;
147 }
148 
149 //------------------------------------------------------------------------------
150 template <typename TDigitalSet>
151 inline
152 void
154 {
155  out << "[DigitalSetDomain set=" << mySet << "]";
156 }
157 //------------------------------------------------------------------------------
158 template <typename TDigitalSet>
159 inline
160 bool
162 {
163  return true;
164 }
165 //------------------------------------------------------------------------------
166 template <typename TDigitalSet>
167 inline
168 std::ostream&
169 DGtal::operator<< ( std::ostream & out,
170  const DigitalSetDomain<TDigitalSet> & object )
171 {
172  object.selfDisplay( out );
173  return out;
174 }
175 
176 // //
178 
179