DGtal  0.9.2
CanonicDigitalSurfaceEmbedder.h
1 
17 #pragma once
18 
31 #if defined(CanonicDigitalSurfaceEmbedder_RECURSES)
32 #error Recursive header files inclusion detected in CanonicDigitalSurfaceEmbedder.h
33 #else // defined(CanonicDigitalSurfaceEmbedder_RECURSES)
34 
35 #define CanonicDigitalSurfaceEmbedder_RECURSES
36 
37 #if !defined CanonicDigitalSurfaceEmbedder_h
38 
39 #define CanonicDigitalSurfaceEmbedder_h
40 
42 // Inclusions
43 #include <iostream>
44 #include "DGtal/base/Common.h"
45 #include "DGtal/base/ConstAlias.h"
46 #include "DGtal/topology/CCellularGridSpaceND.h"
48 
49 namespace DGtal
50 {
51 
53 // class CanonicDigitalSurfaceEmbedder
64  template <typename TDigitalSurface>
66  {
67  public:
69 
70  typedef TDigitalSurface Surface;
71  typedef typename Surface::KSpace KSpace;
73  typedef typename KSpace::SCell SCell;
74  typedef typename KSpace::Space Space;
75  typedef typename Space::RealPoint RealPoint;
76  typedef SCell Argument;
77  typedef RealPoint Value;
78 
79  typedef typename Space::Integer Integer;
80  typedef typename Space::Point Point;
81 
82  // ----------------------- Standard services ------------------------------
83  public:
88 
93 
98 
103  CanonicDigitalSurfaceEmbedder( const Self & other );
104 
110  Self & operator=( const Self & other );
111 
115  const KSpace & space() const
116  {
117  return mySurface->container().space();
118  }
119 
120 
124  const Surface & surface() const;
125 
126 
134  RealPoint embed( const SCell & cell ) const;
135 
143  RealPoint operator()( const SCell & cell ) const;
144 
145  // ----------------------- Interface --------------------------------------
146 public:
147 
152  void selfDisplay ( std::ostream & out ) const;
153 
158  bool isValid() const;
159 
160  // ------------------------- Protected Datas ------------------------------
161  protected:
162  const Surface* mySurface;
163 
164  // ------------------------- Private Datas --------------------------------
165 private:
166 
167  // ------------------------- Hidden services ------------------------------
168 protected:
169 
170 
171  // ------------------------- Internals ------------------------------------
172 private:
173 
174 }; // end of class CanonicDigitalSurfaceEmbedder
175 
176 
183  template <typename TDigitalSurface>
184  std::ostream&
185  operator<< ( std::ostream & out, const CanonicDigitalSurfaceEmbedder<TDigitalSurface> & object );
186 
187 
188 } // namespace DGtal
189 
190 
192 // Includes inline functions.
193 #include "DGtal/topology/CanonicDigitalSurfaceEmbedder.ih"
194 
195 
196 // //
198 
199 #endif // !defined CanonicDigitalSurfaceEmbedder_h
200 
201 #undef CanonicDigitalSurfaceEmbedder_RECURSES
202 #endif // else defined(CanonicDigitalSurfaceEmbedder_RECURSES)
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition: ConstAlias.h:186
RealPoint embed(const SCell &cell) const
Aim: Implements basic operations that will be used in Point and Vector classes.
Definition: PointVector.h:141
Aim: A trivial embedder for digital surfaces, which corresponds to the canonic injection of cell cent...
void selfDisplay(std::ostream &out) const
BOOST_CONCEPT_ASSERT((concepts::CCellularGridSpaceND< KSpace >))
const Surface & surface() const
TInteger Integer
Arithmetic ring induced by (+,-,*) and Integer numbers.
Definition: SpaceND.h:102
DGtal is the top-level namespace which contains all DGtal functions and types.
Self & operator=(const Self &other)
RealPoint operator()(const SCell &cell) const
Aim: This concept describes a cellular grid space in nD. In these spaces obtained by cartesian produc...
CanonicDigitalSurfaceEmbedder< TDigitalSurface > Self