DGtal  1.2.0
DigitalSetDomain.h
1 
17 #pragma once
18 
31 #if defined(DigitalSetDomain_RECURSES)
32 #error Recursive header files inclusion detected in DigitalSetDomain.h
33 #else // defined(DigitalSetDomain_RECURSES)
35 #define DigitalSetDomain_RECURSES
36 
37 #if !defined DigitalSetDomain_h
39 #define DigitalSetDomain_h
40 
42 // Inclusions
43 #include <iostream>
44 #include "DGtal/base/Common.h"
45 #include "DGtal/base/ConstAlias.h"
46 #include "DGtal/kernel/NumberTraits.h"
48 
49 namespace DGtal
50 {
51 
53  // template class DigitalSetDomain
58  template <typename TDigitalSet>
60  {
61  // ----------------------- associated types -------------------------------
62  public:
63  typedef TDigitalSet DigitalSet;
64  typedef typename DigitalSet::Domain Domain;
65  typedef typename Domain::Space Space;
66  typedef typename Domain::Integer Integer;
68  typedef typename Domain::Point Point;
69  typedef typename Domain::Vector Vector;
70  typedef typename Domain::Size Size;
71  typedef typename Domain::Dimension Dimension;
73  typedef DigitalSet Predicate; // since 0.6, DigitalSet are PointPredicate
74 
75  // ----------------------- Standard services ------------------------------
76  public:
77 
82 
88 
89 
95 
96  // ----------------------- Domain services --------------------------------
97  public:
98 
104 
109 
114 
119  const Point &lowerBound() const;
120 
125  const Point &upperBound() const ;
126 
131  Size size() const ;
132 
137  bool isInside( const Point & p ) const;
138 
142  const Predicate & predicate() const;
143 
144 
145  // ----------------------- Interface --------------------------------------
146  public:
147 
152  void selfDisplay ( std::ostream & out ) const;
153 
158  bool isValid() const;
159 
160  // ------------------------- Protected Datas ------------------------------
161  private:
162  // ------------------------- Private Datas --------------------------------
163  private:
164 
169 
174 
179 
180  // ------------------------- Hidden services ------------------------------
181  protected:
182 
188 
189  private:
190 
198 
199  // ------------------------- Internals ------------------------------------
200  private:
201 
202 
203  }; // end of class DigitalSetDomain
204 
205 
212  template <typename T>
213  std::ostream&
214  operator<< ( std::ostream & out, const DigitalSetDomain<T> & object );
215 
216 } // namespace DGtal
217 
218 
220 // Includes inline functions.
221 #include "DGtal/kernel/sets/DigitalSetDomain.ih"
222 
223 // //
225 
226 #endif // !defined DigitalSetDomain_h
227 
228 #undef DigitalSetDomain_RECURSES
229 #endif // else defined(DigitalSetDomain_RECURSES)
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition: ConstAlias.h:187
Aim: Constructs a domain limited to the given digital set.
DigitalSetDomain(const DigitalSetDomain &other)
DigitalSet::Domain Domain
bool isInside(const Point &p) const
ConstIterator begin(const Point &aPoint) const
DigitalSet::ConstIterator ConstIterator
const Point & upperBound() const
ConstIterator begin() const
void selfDisplay(std::ostream &out) const
const DigitalSet * mySet
const Point & lowerBound() const
ConstIterator end() const
DigitalSetDomain(ConstAlias< DigitalSet > aSet)
NumberTraits< Integer >::IsBounded IsBounded
const Predicate & predicate() const
DigitalSetDomain & operator=(const DigitalSetDomain &other)
Domain::Dimension Dimension
MyDigitalSurface::ConstIterator ConstIterator
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
const Point aPoint(3, 4)
HyperRectDomain< Space > Domain