6#include <Wt/WPainter.h> 
    8#include <Wt/WFontMetrics.h> 
   10#include <Wt/WPaintDevice.h> 
  121    float diam = nodeStyle.ConnectionPointDiameter;
 
  123    Wt::WPointF p0 = t.map(Wt::WPointF(
width() + diam, -diam));
 
  125    float x = p0.x() - point.x();
 
  126    float y = point.y() - p0.y();
 
  130    if (y > 0.0f && y < h)
 
 
  146    float diam = nodeStyle.ConnectionPointDiameter;
 
  148    Wt::WPointF p0 = t.map(Wt::WPointF(
width() + diam, -diam));
 
  150    float x = p0.x() - point.x();
 
  151    float y = point.y() - p0.y();
 
  155    if (y > 0.0f && y < h)
 
 
  169    unsigned int rectSize = 7;
 
  171    return Wt::WRectF(
_width - rectSize,
 
 
  179    std::string msg = 
_dataModel->validationMessage();
 
 
  186    std::string msg = 
_dataModel->validationMessage();
 
 
  195    std::string trueName;
 
  197    size_t pos = str.find(
'<');
 
  199    if (pos != std::string::npos)
 
  201        trueName = str.substr(0, pos);
 
 
  213    double const addon = 0.0;
 
  215    return Wt::WRectF(0 - addon,
 
 
  225    double addon = 4 * nodeStyle.ConnectionPointDiameter;
 
  227    return Wt::WRectF(0 - addon,
 
 
  240        _height = step * maxNumOfEntries;
 
 
  282    totalHeight += step * index;
 
  285    totalHeight += step / 2.0;
 
  291        double x = 
_width + nodeStyle.ConnectionPointDiameter;
 
  299        double x = 0.0 - nodeStyle.ConnectionPointDiameter;
 
  301        result = Wt::WPointF(x, totalHeight);
 
  309    return t.map(result);
 
 
  321    double const tolerance = 2.0 * nodeStyle.ConnectionPointDiameter;
 
  323    unsigned int const nItems = 
_dataModel->nPorts(portType);
 
  325    for (
unsigned int i = 0; i < nItems; ++i)
 
  329        Wt::WPointF p(pp.x() - scenePoint.x(), pp.y() - scenePoint.y());
 
  331        double dotProduct = p.x() * p.x() + p.y() * p.y();
 
  333        auto    distance = std::sqrt(dotProduct);
 
  334        if (distance < tolerance)
 
 
  353    double const tolerance = 2.0 * nodeStyle.ConnectionPointDiameter;
 
  355    unsigned int const nItems = 
_dataModel->nPorts(portType);
 
  357    for (
unsigned int i = 0; i < nItems; ++i)
 
  360        Wt::WPointF p(pp.x() - scenePoint.x(), pp.y() - scenePoint.y());
 
  361        double dotProduct = p.x() * p.x() + p.y() * p.y();
 
  362        auto    distance = std::sqrt(dotProduct);
 
  363        if (distance < tolerance)
 
 
  542    int widthNum = str.size();
 
  543    return height * widthNum / 2.5;
 
 
  549    return height * num / 2.5;
 
 
  556    for (
auto i = 0ul; i < 
_dataModel->nPorts(portType); ++i)
 
  560        if (
_dataModel->portCaptionVisible(portType, i))
 
  566            name = 
_dataModel->dataType(portType, i).name;
 
 
  612    connections.at(portIndex).insert(std::make_pair(connection.
id(),
 
 
  666WtNode::WtNode(std::unique_ptr<WtNodeDataModel>&& dataModel, Wt::WPaintDevice* paintDevice)
 
 
  750    for (
auto const& c : connections)
 
  753        c.second->propagateData(nodeData);
 
 
  767        for (
auto& conn_set : 
nodeState().getEntries(type))
 
  769            for (
auto& pair : conn_set)
 
 
static const int INVALID_PORT
 
unsigned int _hotkeyOffset
 
unsigned int captionHeightSpacing() const
 
WtNodeGeometry(std::unique_ptr< WtNodeDataModel > const &dataModel, Wt::WPaintDevice *paintDevice)
 
unsigned int _entryHeight
 
void HidePortTips() const
 
PortIndex hoverHitScenePoint(PortType portType, Wt::WPointF point, Wt::WTransform const &t=Wt::WTransform()) const
 
unsigned int captionHeight() const
 
unsigned int captionWidth() const
 
unsigned int nSinks() const
 
Wt::WPointF portScenePosition(PortIndex index, PortType portType, Wt::WTransform const &t=Wt::WTransform()) const
 
unsigned int hotkeyIncline() const
 
bool checkHitHotKey1(Wt::WPointF point, Wt::WTransform const &t=Wt::WTransform()) const
 
Wt::WFontMetrics _fontMetrics
 
Wt::WRectF resizeRect() const
 
void recalculateSize() const
 
unsigned int portWidth(PortType portType) const
 
unsigned int width() const
 
unsigned int _hotkeyIncline
 
unsigned int hotkeyWidth() const
 
unsigned int height() const
 
bool getPortTipsState() const
 
std::unique_ptr< WtNodeDataModel > const  & _dataModel
 
void ShowPortTips() const
 
Wt::WRectF boundingRect() const
 
double calculateWidth(std::string) const
 
unsigned int _hotkeyWidth
 
unsigned int validationHeight() const
 
unsigned int hotkeyOffset() const
 
PortIndex checkHitScenePoint(PortType portType, Wt::WPointF point, Wt::WTransform const &t=Wt::WTransform()) const
 
unsigned int _captionHeightSpacing
 
unsigned int _inputPortWidth
 
unsigned int _outputPortWidth
 
std::string strFormat(std::string str) const
 
unsigned int nSources() const
 
unsigned int validationWidth() const
 
bool checkHitHotKey0(Wt::WPointF point, Wt::WTransform const &t=Wt::WTransform()) const
 
Wt::WRectF entryBoundingRect() const
 
std::unique_ptr< WtNodeDataModel > _nodeDataModel
 
WtNodeDataModel * nodeDataModel() const
 
std::unique_ptr< WtNodeGraphicsObject > _nodeGraphicsObject
 
void setGraphicsObject(std::unique_ptr< WtNodeGraphicsObject > &&graphics)
 
void onDataUpdated(PortIndex index)
 
WtNodeGraphicsObject const & nodeGraphicsObject() const
 
WtNodeGeometry _nodeGeometry
 
WtNode(std::unique_ptr< WtNodeDataModel > &&dataModel, Wt::WPaintDevice *paintDevice)
 
void resetReactionToConnection()
 
void propagateData(std::shared_ptr< WtNodeData > nodeData, PortIndex inPortIndex) const
Propagates incoming data to the underlying model.
 
WtNodeState const & nodeState() const
 
WtNodeGeometry & nodeGeometry()
 
void onNodeSizeUpdated()
update the graphic part if the size of the embeddedwidget changes
 
std::vector< ConnectionPtrSet > _outConnections
 
std::unordered_map< Wt::Guid, WtConnection * > ConnectionPtrSet
 
WtNodeState(std::unique_ptr< WtNodeDataModel > const &model)
 
std::vector< ConnectionPtrSet > _inConnections
 
std::vector< ConnectionPtrSet > const & getEntries(PortType) const
 
PortType reactingPortType() const
 
ReactToConnectionState reaction() const
 
NodeDataType _reactingDataType
 
ConnectionPtrSet connections(PortType portType, PortIndex portIndex) const
 
PortType _reactingPortType
 
void eraseConnection(PortType portType, PortIndex portIndex, Wt::Guid id)
 
ReactToConnectionState _reaction
 
void setConnection(PortType portType, PortIndex portIndex, WtConnection &connection)
 
void setReaction(ReactToConnectionState reaction, PortType reactingPortType=PortType::None, NodeDataType reactingDataType=NodeDataType())
 
void setResizing(bool resizing)
 
NodeDataType reactingDataType() const
 
static WtNodeStyle const & nodeStyle()