35#if defined(Object_RECURSES)
36#error Recursive header files inclusion detected in Object.h
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"
713#undef Object_RECURSES
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Aim: This class encapsulates its parameter class to indicate that the given parameter is required to ...
Aim: Smart or simple pointer on T. It can be a smart pointer based on reference counts or a simple po...
Aim: Copy on write shared pointer.
Domain::Point Point
Type of points in the space.
Container::size_type Size
Size type of the container;.
TDomain Domain
Domain type.
Container::const_iterator ConstIterator
ConstIterator type of the container;.
Aim: Represents a digital topology as a couple of adjacency relations.
ForegroundAdjacency::Point Point
TForegroundAdjacency ForegroundAdjacency
TBackgroundAdjacency BackgroundAdjacency
Aim: An object (or digital object) represents a set in some digital space associated with a digital t...
Size neighborhoodSize(const Point &p) const
Connectedness connectedness() const
bool isSimpleFromTable(const Point &v, const boost::dynamic_bitset<> &input_table, const std::unordered_map< Point, NeighborhoodConfiguration > &mapZeroNeighborhoodToMask) const
EdgeRange outEdges(const Vertex &v) const
SmallComplementObject geodesicNeighborhoodInComplement(const TAdjacency &adj, const Point &p, unsigned int k) const
ConstIterator begin() const
void writeNeighbors(OutputIterator &it, const Vertex &v) const
DigitalSetSelector< Domain, SMALL_DS+HIGH_ITER_DS >::Type SmallSet
std::vector< Edge > EdgeRange
ConstIterator end() const
Object< ReverseTopology, SmallSet > SmallComplementObject
const DigitalSet & pointSet() const
NeighborhoodConfiguration getNeighborhoodConfigurationOccupancy(const Point ¢er, const std::unordered_map< Point, NeighborhoodConfiguration > &mapZeroNeighborhoodToMask) const
DigitalTopology::ReverseTopology ReverseTopology
Connectedness computeConnectedness() const
Object(Clone< DigitalTopology > aTopology, Clone< DigitalSet > aPointSet, Connectedness cxn=UNKNOWN)
const ForegroundAdjacency & adjacency() const
Vertex head(const Edge &e) const
std::string className() const
SmallObject properNeighborhood(const Point &p) const
SmallObject geodesicNeighborhood(const TAdjacency &adj, const Point &p, unsigned int k) const
SmallObject neighborhood(const Point &p) const
Object< DigitalTopology, SmallSet > SmallObject
Object & operator=(const Object &other)
const Domain & domain() const
Size degree(const Vertex &v) const
Size writeComponents(OutputObjectIterator &it) const
Object< ReverseTopology, DigitalSet > ComplementObject
DigitalTopology::Point DTPoint
boost::disallow_parallel_edge_tag edge_parallel_category
the graph does not allow parallel edges.
CountedPtrOrPtr< boost::dynamic_bitset<> > myTable
Size bestCapacity() const
TDigitalTopology DigitalTopology
DigitalTopology::BackgroundAdjacency BackgroundAdjacency
Object(Clone< DigitalTopology > aTopology, Clone< Domain > domain)
CowPtr< Domain > domainPointer() const
void selfDisplay(std::ostream &out) const
void setTable(Alias< boost::dynamic_bitset<> >inputTable)
Edge opposite(const Edge &e) const
CowPtr< DigitalTopology > myTopo
DigitalSet::Domain Domain
Size properNeighborhoodSize(const Point &p) const
BOOST_CONCEPT_ASSERT((concepts::CDigitalSet< TDigitalSet >))
DigitalTopology::ForegroundAdjacency ForegroundAdjacency
boost::Object_graph_traversal_category traversal_category
the graph satisfies AdjacencyListGraph and VertexListGraph concepts.
Connectedness myConnectedness
CowPtr< DigitalSet > myPointSet
bool isSimple(const Point &v) const
void writeNeighbors(OutputIterator &it, const Vertex &v, const VertexPredicate &pred) const
DigitalSet::ConstIterator ConstIterator
Object(const Object &other)
Vertex tail(const Edge &e) const
boost::undirected_tag directed_category
the graph is undirected.
const DigitalTopology & topology() const
CountedPtrOrPtr< std::unordered_map< Point, unsigned int > > myNeighborConfigurationMap
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
uint32_t NeighborhoodConfiguration
Aim: Automatically defines an adequate digital set type according to the hints given by the user.
bool operator==(const Edge &other) const
bool operator!=(const Edge &other) const
Edge(const Vertex &v1, const Vertex &v2, const bool)
Edge(const Vertex &v1, const Vertex &v2)
bool operator<(const Edge &other) const
std::map< Vertex, Value > Type
Aim: Represents a set of points within the given domain. This set of points is modifiable by the user...