Example #1
0
bool _DeepCompare(const std::shared_ptr<touchmind::model::node::NodeModel> &node1,
                  const std::shared_ptr<touchmind::model::node::NodeModel> &node2) {
  if (node1->GetActualChildrenCount() != node2->GetActualChildrenCount()) {
    return false;
  }
  for (size_t i = 0; i < node1->GetActualChildrenCount(); ++i) {
    auto node1Child = node1->GetChild(i);
    auto node2Child = node2->GetChild(i);
    if (!node1Child->Compare(node2Child)) {
      return false;
    }
    _DeepCompare(node1Child, node2Child);
  }
  return true;
}
Example #2
0
void touchmind::print::XPSPrint::_PrintChildrenPaths(const std::shared_ptr<touchmind::model::node::NodeModel> &node)
{
    PATH_DIRECTION linkDirection;
    touchmind::NODE_SIDE nodePosition = node->GetAncestorPosition();
    switch (nodePosition) {
    case touchmind::NODE_SIDE_RIGHT:
        linkDirection = PATH_DIRECTION_RIGHT;
        break;
    case touchmind::NODE_SIDE_LEFT:
        linkDirection = PATH_DIRECTION_LEFT;
        break;
    case touchmind::NODE_SIDE_UNDEFINED:
        linkDirection = PATH_DIRECTION_AUTO;
        break;
    default:
        linkDirection = PATH_DIRECTION_AUTO;
    }

    for (size_t i = 0; i < node->GetActualChildrenCount(); ++i) {
        std::shared_ptr<touchmind::model::node::NodeModel> child = node->GetChild(i);
        touchmind::model::CurvePoints curvePoints;
        view::GeometryBuilder::CalculatePath(
            node,
            child,
            linkDirection,
            touchmind::NODE_JUSTIFICATION_TOP,
            m_pConfiguration->GetLevelSeparation(),
            curvePoints);
        _PrintPath(child, curvePoints);
    }
}
Example #3
0
void touchmind::model::node::NodeModel::_Dump(std::wostream &out, int indent,
                                              const std::shared_ptr<touchmind::model::node::NodeModel> &node) {
  _Indent(out, indent);
  node->Dump(out);
  out << std::endl;
  for (size_t i = 0; i < node->GetActualChildrenCount(); ++i) {
    auto child = node->GetChild(i);
    _Dump(out, indent + 1, child);
  }
}
Example #4
0
void _DeepCopy(std::shared_ptr<touchmind::model::node::NodeModel> srcParent,
               std::shared_ptr<touchmind::model::node::NodeModel> destParent) {
  for (size_t i = 0; i < srcParent->GetActualChildrenCount(); ++i) {
    auto srcChild = srcParent->GetChild(i);
    auto destChild = touchmind::model::node::NodeModel::Create(*srcChild.get());
    destChild->RemoveAllChildren();
    destParent->AddChild(destChild);
    _DeepCopy(srcChild, destChild);
  }
}
Example #5
0
std::shared_ptr<touchmind::model::node::NodeModel>
touchmind::model::node::NodeModel::_FindByNodeId(const std::shared_ptr<touchmind::model::node::NodeModel> &node,
                                                 touchmind::NODE_ID nodeId) {
  if (nodeId == node->GetId()) {
    return node;
  }
  for (size_t i = 0; i < node->GetActualChildrenCount(); ++i) {
    auto child = node->GetChild(i);
    auto result = _FindByNodeId(child, nodeId);
    if (result != nullptr) {
      return result;
    }
  }
  return nullptr;
}
void touchmind::view::node::NodeViewManager::DrawNodePaths(touchmind::Context *pContext,
                                                           ID2D1RenderTarget *pRenderTarget,
                                                           std::shared_ptr<model::node::NodeModel> node) {
  PATH_DIRECTION pathDirection;
  touchmind::NODE_SIDE nodePosition = node->GetAncestorPosition();
  switch (nodePosition) {
  case touchmind::NODE_SIDE_RIGHT:
    pathDirection = PATH_DIRECTION_RIGHT;
    break;
  case touchmind::NODE_SIDE_LEFT:
    pathDirection = PATH_DIRECTION_LEFT;
    break;
  case touchmind::NODE_SIDE_UNDEFINED:
    pathDirection = PATH_DIRECTION_AUTO;
    break;
  default:
    pathDirection = PATH_DIRECTION_AUTO;
  }

  for (size_t i = 0; i < node->GetActualChildrenCount(); ++i) {
    std::shared_ptr<touchmind::model::node::NodeModel> child = node->GetChild(i);
    DrawPath(pContext, pRenderTarget, child);
  }
}