35 #if defined(Object_RECURSES)
36 #error Recursive header files inclusion detected in Object.h
37 #else // defined(Object_RECURSES)
39 #define Object_RECURSES
50 #include "DGtal/base/Common.h"
51 #include "DGtal/base/CowPtr.h"
52 #include "DGtal/base/CountedPtr.h"
53 #include "DGtal/base/Clone.h"
54 #include "DGtal/base/Alias.h"
55 #include "DGtal/base/ConstAlias.h"
56 #include "DGtal/kernel/sets/CDigitalSet.h"
57 #include "DGtal/kernel/sets/DigitalSetSelector.h"
58 #include "DGtal/topology/Topology.h"
59 #include <boost/graph/graph_traits.hpp>
60 #include <boost/graph/properties.hpp>
61 #include <boost/dynamic_bitset.hpp>
62 #include <unordered_map>
63 #include <DGtal/topology/helpers/NeighborhoodConfigurationsHelper.h>
72 :
public virtual adjacency_graph_tag,
73 public virtual vertex_list_graph_tag,
74 public virtual incidence_graph_tag,
75 public virtual edge_list_graph_tag { };
118 template <
typename TDigitalTopology,
typename TDigitalSet>
160 typedef typename std::map<Vertex, Value>
Type;
295 const Point & center,
296 const std::unordered_map<
Point,
449 template <
typename OutputObjectIterator>
509 template <
typename OutputIterator>
530 template <
typename OutputIterator,
typename VertexPredicate>
534 const VertexPredicate & pred)
const;
580 template <
typename TAdjacency>
583 const Point & p,
unsigned int k )
const;
589 template <
typename TAdjacency>
592 const Point & p,
unsigned int k )
const;
624 const boost::dynamic_bitset<> & input_table,
625 const std::unordered_map<
Point,
694 template <
typename TDigitalTopology,
typename TDigitalSet>
706 #include "DGtal/topology/Object.ih"
711 #endif // !defined Object_h
713 #undef Object_RECURSES
714 #endif // else defined(Object_RECURSES)
DigitalTopology::Point DTPoint
Aim: This class encapsulates its parameter class to indicate that the given parameter is required to ...
DigitalSet::Domain Domain
MyDigitalSurface::ConstIterator ConstIterator
bool operator<(const Edge &other) const
Object< ReverseTopology, SmallSet > SmallComplementObject
const DigitalTopology & topology() const
Vertex head(const Edge &e) const
TBackgroundAdjacency BackgroundAdjacency
Aim: Represents a digital topology as a couple of adjacency relations.
Connectedness myConnectedness
Aim: Automatically defines an adequate digital set type according to the hints given by the user.
ConstIterator end() const
std::vector< Edge > EdgeRange
void selfDisplay(std::ostream &out) const
void setTable(Alias< boost::dynamic_bitset<> >inputTable)
CountedPtrOrPtr< std::unordered_map< Point, unsigned int > > myNeighborConfigurationMap
Object & operator=(const Object &other)
SmallComplementObject geodesicNeighborhoodInComplement(const TAdjacency &adj, const Point &p, unsigned int k) const
uint32_t NeighborhoodConfiguration
Edge(const Vertex &v1, const Vertex &v2)
TDigitalTopology DigitalTopology
CowPtr< DigitalTopology > myTopo
SmallObject neighborhood(const Point &p) const
Size degree(const Vertex &v) const
Size writeComponents(OutputObjectIterator &it) const
Object< ReverseTopology, DigitalSet > ComplementObject
CowPtr< DigitalSet > myPointSet
std::map< Vertex, Value > Type
void writeNeighbors(OutputIterator &it, const Vertex &v, const VertexPredicate &pred) const
HalfEdgeDataStructure::Size Size
DigitalTopology::ReverseTopology ReverseTopology
CowPtr< Domain > domainPointer() const
Connectedness computeConnectedness() const
DigitalSet::ConstIterator ConstIterator
bool operator!=(const Edge &other) const
boost::Object_graph_traversal_category traversal_category
the graph satisfies AdjacencyListGraph and VertexListGraph concepts.
const ForegroundAdjacency & adjacency() const
ConstIterator begin() const
DigitalSetSelector< Domain, SMALL_DS+HIGH_ITER_DS >::Type SmallSet
boost::undirected_tag directed_category
the graph is undirected.
Connectedness connectedness() const
Edge(const Vertex &v1, const Vertex &v2, const bool)
DGtal is the top-level namespace which contains all DGtal functions and types.
HyperRectDomain< Space > Domain
EdgeRange outEdges(const Vertex &v) const
BOOST_CONCEPT_ASSERT((concepts::CDigitalSet< TDigitalSet >))
bool isSimple(const Point &v) const
Object(Clone< DigitalTopology > aTopology, Clone< DigitalSet > aPointSet, Connectedness cxn=UNKNOWN)
NeighborhoodConfiguration getNeighborhoodConfigurationOccupancy(const Point ¢er, const std::unordered_map< Point, NeighborhoodConfiguration > &mapZeroNeighborhoodToMask) const
Vertex tail(const Edge &e) const
SmallObject properNeighborhood(const Point &p) const
Aim: Smart or simple pointer on T. It can be a smart pointer based on reference counts or a simple po...
boost::disallow_parallel_edge_tag edge_parallel_category
the graph does not allow parallel edges.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
std::string className() const
Edge opposite(const Edge &e) const
const Domain & domain() const
HalfEdgeDataStructure::Edge Edge
ForegroundAdjacency::Point Point
DigitalTopology::BackgroundAdjacency BackgroundAdjacency
Object(const Object &other)
TForegroundAdjacency ForegroundAdjacency
Size neighborhoodSize(const Point &p) const
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Object(Clone< DigitalTopology > aTopology, Clone< Domain > domain)
SmallObject geodesicNeighborhood(const TAdjacency &adj, const Point &p, unsigned int k) const
Aim: An object (or digital object) represents a set in some digital space associated with a digital t...
Aim: Represents a set of points within the given domain. This set of points is modifiable by the user...
const DigitalSet & pointSet() const
Object< DigitalTopology, SmallSet > SmallObject
bool operator==(const Edge &other) const
Size properNeighborhoodSize(const Point &p) const
CountedPtrOrPtr< boost::dynamic_bitset<> > myTable
void writeNeighbors(OutputIterator &it, const Vertex &v) const
bool isSimpleFromTable(const Point &v, const boost::dynamic_bitset<> &input_table, const std::unordered_map< Point, NeighborhoodConfiguration > &mapZeroNeighborhoodToMask) const
DigitalTopology::ForegroundAdjacency ForegroundAdjacency
Size bestCapacity() const