22 Wt::WPainter* painter)
24 auto connection = std::make_shared<WtConnection>(connectedPort, node, portIndex);
29 connection->setGraphicsObject(std::move(cgo));
41 Wt::WPainter* painter,
44 auto connection = std::make_shared<WtConnection>(
60 connection->setGraphicsObject(std::move(cgo));
85 Wt::WPaintDevice* paintDevice = painter->device();
90 node->setGraphicsObject(std::move(ngo));
92 auto nodePtr = node.get();
93 _nodes[node->id()] = std::move(node);
110 for (
const auto& _node :
_nodes)
112 visitor(_node.second.get());
118 for (
const auto& _node :
_nodes)
120 visitor(_node.second->nodeDataModel());
126 std::set<Wt::Guid> visitedNodesSet;
130 for (
unsigned int i = 0; i < model.nPorts(
PortType::In); ++i)
142 for (
auto const& _node :
_nodes)
144 auto const& node = _node.second;
147 if (isNodeLeaf(*node, *model))
150 visitedNodesSet.insert(node->
id());
154 auto areNodeInputsVisitedBefore =
175 while (
_nodes.size() != visitedNodesSet.size())
177 for (
auto const& _node :
_nodes)
179 auto const& node = _node.second;
180 if (visitedNodesSet.find(node->
id()) != visitedNodesSet.end())
185 if (areNodeInputsVisitedBefore(*node, *model))
188 visitedNodesSet.insert(node->
id());
217 auto const& nodeEntries = nodeState.
getEntries(portType);
263 std::vector<WtNode*>
nodes;
265 std::transform(
_nodes.begin(),
267 std::back_inserter(
nodes),
268 [](std::pair<
Wt::Guid const, std::unique_ptr<WtNode>>
const& p) { return p.second.get(); });
std::function< SharedNodeData(SharedNodeData)> TypeConverter
void removeFromNodes() const
void iterateOverNodes(std::function< void(WtNode *)> const &visitor)
void iterateOverNodeDataDependentOrder(std::function< void(WtNodeDataModel *)> const &visitor)
void setRegistry(std::shared_ptr< WtDataModelRegistry > registry)
std::map< dyno::ObjectId, WtNode * > getNodeMap()
std::vector< WtNode * > allNodes() const
WtNode & createNode(std::unique_ptr< WtNodeDataModel > &&dataModel, Wt::WPainter *painter, int selectType)
void deleteConnection(WtConnection &connection)
std::shared_ptr< WtDataModelRegistry > _registry
void iterateOverNodeData(std::function< void(WtNodeDataModel *)> const &visitor)
std::map< dyno::ObjectId, WtNode * > OutNodeMap
void clearNode(WtNode &node)
std::shared_ptr< WtConnection > createConnection(PortType connectedPort, WtNode &node, PortIndex portIndex, Wt::WPainter *painter)
std::unordered_map< Wt::Guid, std::unique_ptr< WtNode > > const & nodes() const
Wt::WPointF getNodePosition(WtNode const &node) const
void removeNode(WtNode &node)
WtDataModelRegistry & registry() const
std::unordered_map< Wt::Guid, SharedConnection > _connections
std::unordered_map< Wt::Guid, std::shared_ptr< WtConnection > > const & connections() const
std::unordered_map< Wt::Guid, UniqueNode > _nodes
Wt::WPointF getPos() const
WtNodeDataModel * nodeDataModel() const
void onDataUpdated(PortIndex index)
WtNodeGraphicsObject const & nodeGraphicsObject() const
void addConnection(PortIndex portIndex, std::shared_ptr< WtConnection > connection)
WtNodeState const & nodeState() const
std::vector< ConnectionPtrSet > const & getEntries(PortType) const
ConnectionPtrSet connections(PortType portType, PortIndex portIndex) const
void setConnection(PortType portType, PortIndex portIndex, WtConnection &connection)
std::unique_ptr< T > make_unique(Args &&... args)