DGtal
0.6.devel
Main Page
Related Pages
Modules
Namespaces
Data Structures
Examples
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
src
DGtal
topology
UmbrellaComputer.h
1
17
#pragma once
18
31
#if defined(UmbrellaComputer_RECURSES)
32
#error Recursive header files inclusion detected in UmbrellaComputer.h
33
#else // defined(UmbrellaComputer_RECURSES)
34
35
#define UmbrellaComputer_RECURSES
36
37
#if !defined UmbrellaComputer_h
38
39
#define UmbrellaComputer_h
40
42
// Inclusions
43
#include <iostream>
44
#include "DGtal/base/Common.h"
45
#include "DGtal/topology/CDigitalSurfaceTracker.h"
47
48
namespace
DGtal
49
{
50
52
// template class UmbrellaComputer
86
template
<
typename
TDigitalSurfaceTracker>
87
class
UmbrellaComputer
88
{
89
// Concept checks
90
BOOST_CONCEPT_ASSERT
((
CDigitalSurfaceTracker<TDigitalSurfaceTracker>
) );
91
92
// ----------------------- public types ------------------------------
93
public
:
94
typedef
TDigitalSurfaceTracker
DigitalSurfaceTracker
;
95
typedef
typename
DigitalSurfaceTracker::DigitalSurfaceContainer
DigitalSurfaceContainer
;
96
typedef
typename
DigitalSurfaceContainer::KSpace
KSpace
;
97
typedef
typename
DigitalSurfaceContainer::Surfel
Surfel
;
98
typedef
typename
DigitalSurfaceContainer::Size
Size
;
99
typedef
typename
KSpace::SCell
SCell
;
100
105
struct
State
106
{
108
Surfel
surfel
;
110
Dimension
k
;
112
bool
epsilon
;
114
Dimension
j
;
115
inline
State
(){}
116
inline
State
(
const
Surfel
& _surfel,
117
Dimension
_k,
bool
_epsilon,
Dimension
_j )
118
:
surfel
( _surfel ),
k
( _k ),
epsilon
( _epsilon ),
j
( _j )
119
{}
120
inline
bool
operator==
(
const
State
& other )
const
121
{
122
return
(
surfel
== other.
surfel
)
123
&& (
k
== other.
k
)
124
&& (
epsilon
== other.
epsilon
)
125
&& (
j
== other.
j
);
126
}
127
inline
bool
operator<
(
const
State
& other )
const
128
{
129
return
(
surfel
< other.
surfel
)
130
|| ( (
surfel
== other.
surfel
)
131
&& ( (
k
< other.
k
)
132
|| ( (
k
== other.
k
)
133
&& ( (
epsilon
< other.
epsilon
)
134
|| ( (
epsilon
== other.
epsilon
)
135
&& (
j
< other.
j
) ) ) ) ) );
136
}
137
};
138
139
// ----------------------- Standard services ------------------------------
140
public
:
141
143
~UmbrellaComputer
();
144
146
UmbrellaComputer
();
147
152
UmbrellaComputer
(
const
UmbrellaComputer
& other );
153
159
UmbrellaComputer
&
160
operator=
(
const
UmbrellaComputer
& other );
161
178
void
init
(
const
DigitalSurfaceTracker
& tracker,
179
Dimension
k,
bool
epsilon,
Dimension
j );
180
189
void
setState
(
const
State & aState );
190
197
void
getState
( State & aState )
const
;
198
200
const
State &
state
()
const
;
201
203
const
KSpace
&
space
()
const
;
204
205
// ----------------------- Accessor services ------------------------------
206
public
:
207
209
const
Surfel
&
surfel
()
const
;
210
212
SCell
separator
()
const
;
213
215
SCell
pivot
()
const
;
216
218
Dimension
orthDir
()
const
;
219
221
Dimension
trackDir
()
const
;
222
224
bool
trackOrientation
()
const
;
225
227
Dimension
separatorDir
()
const
;
228
230
bool
separatorOrientation
()
const
;
231
232
// ----------------------- Pivoting services ------------------------------
233
public
:
234
241
unsigned
int
next
();
242
249
unsigned
int
previous
();
250
259
bool
adjacent
();
260
261
262
263
// ----------------------- Interface --------------------------------------
264
public
:
265
270
void
selfDisplay
( std::ostream & out )
const
;
271
276
bool
isValid
()
const
;
277
278
// ------------------------- Protected Datas ------------------------------
279
private
:
280
// ------------------------- Private Datas --------------------------------
281
private
:
282
284
DigitalSurfaceTracker
*
myTracker
;
286
State
myState
;
287
288
// ------------------------- Hidden services ------------------------------
289
protected
:
290
291
// ------------------------- Internals ------------------------------------
292
private
:
293
294
};
// end of class UmbrellaComputer
295
296
303
template
<
typename
TDigitalSurfaceTracker>
304
std::ostream&
305
operator<< ( std::ostream & out, const UmbrellaComputer<TDigitalSurfaceTracker> & object );
306
307
}
// namespace DGtal
308
309
311
// Includes inline functions.
312
#include "DGtal/topology/UmbrellaComputer.ih"
313
314
// //
316
317
#endif // !defined UmbrellaComputer_h
318
319
#undef UmbrellaComputer_RECURSES
320
#endif // else defined(UmbrellaComputer_RECURSES)
Generated on Wed Dec 19 2012 19:10:42 for DGtal by
1.8.1.1