本文整理汇总了C++中DeBruijnNode::getGraphicsItemNode方法的典型用法代码示例。如果您正苦于以下问题:C++ DeBruijnNode::getGraphicsItemNode方法的具体用法?C++ DeBruijnNode::getGraphicsItemNode怎么用?C++ DeBruijnNode::getGraphicsItemNode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DeBruijnNode
的用法示例。
在下文中一共展示了DeBruijnNode::getGraphicsItemNode方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setControlPointLocations
void GraphicsItemEdge::setControlPointLocations()
{
DeBruijnNode * startingNode = m_deBruijnEdge->getStartingNode();
DeBruijnNode * endingNode = m_deBruijnEdge->getEndingNode();
if (startingNode->hasGraphicsItem())
{
m_startingLocation = startingNode->getGraphicsItemNode()->getLast();
m_beforeStartingLocation = startingNode->getGraphicsItemNode()->getSecondLast();
}
else if (startingNode->getReverseComplement()->hasGraphicsItem())
{
m_startingLocation = startingNode->getReverseComplement()->getGraphicsItemNode()->getFirst();
m_beforeStartingLocation = startingNode->getReverseComplement()->getGraphicsItemNode()->getSecond();
}
if (endingNode->hasGraphicsItem())
{
m_endingLocation = endingNode->getGraphicsItemNode()->getFirst();
m_afterEndingLocation = endingNode->getGraphicsItemNode()->getSecond();
}
else if (endingNode->getReverseComplement()->hasGraphicsItem())
{
m_endingLocation = endingNode->getReverseComplement()->getGraphicsItemNode()->getLast();
m_afterEndingLocation = endingNode->getReverseComplement()->getGraphicsItemNode()->getSecondLast();
}
}
示例2: addGraphicsItemsToScene
void AssemblyGraph::addGraphicsItemsToScene(MyGraphicsScene * scene)
{
scene->clear();
double meanDrawnReadDepth = getMeanDeBruijnGraphReadDepth(true);
//First make the GraphicsItemNode objects
QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
while (i.hasNext())
{
i.next();
DeBruijnNode * node = i.value();
if (node->isDrawn())
{
if (meanDrawnReadDepth == 0)
node->setReadDepthRelativeToMeanDrawnReadDepth(1.0);
else
node->setReadDepthRelativeToMeanDrawnReadDepth(node->getReadDepth() / meanDrawnReadDepth);
GraphicsItemNode * graphicsItemNode = new GraphicsItemNode(node, m_graphAttributes);
node->setGraphicsItemNode(graphicsItemNode);
graphicsItemNode->setFlag(QGraphicsItem::ItemIsSelectable);
graphicsItemNode->setFlag(QGraphicsItem::ItemIsMovable);
}
}
resetAllNodeColours();
//Then make the GraphicsItemEdge objects and add them to the scene first
//so they are drawn underneath
for (size_t i = 0; i < m_deBruijnGraphEdges.size(); ++i)
{
if (m_deBruijnGraphEdges[i]->isDrawn())
{
GraphicsItemEdge * graphicsItemEdge = new GraphicsItemEdge(m_deBruijnGraphEdges[i]);
m_deBruijnGraphEdges[i]->setGraphicsItemEdge(graphicsItemEdge);
graphicsItemEdge->setFlag(QGraphicsItem::ItemIsSelectable);
scene->addItem(graphicsItemEdge);
}
}
//Now add the GraphicsItemNode objects to the scene so they are drawn
//on top
QMapIterator<QString, DeBruijnNode*> j(m_deBruijnGraphNodes);
while (j.hasNext())
{
j.next();
DeBruijnNode * node = j.value();
if (node->hasGraphicsItem())
scene->addItem(node->getGraphicsItemNode());
}
}
示例3: calculateAndSetPath
void GraphicsItemEdge::calculateAndSetPath()
{
setControlPointLocations();
double edgeDistance = QLineF(m_startingLocation, m_endingLocation).length();
double extensionLength = g_settings->segmentLength;
if (extensionLength > edgeDistance / 2.0)
extensionLength = edgeDistance / 2.0;
m_controlPoint1 = extendLine(m_beforeStartingLocation, m_startingLocation, extensionLength);
m_controlPoint2 = extendLine(m_afterEndingLocation, m_endingLocation, extensionLength);
//If this edge is connecting a node to itself, and that node
//is made of only one line segment, then a special path is
//required, otherwise the edge will be mostly hidden underneath
//the node.
DeBruijnNode * startingNode = m_deBruijnEdge->getStartingNode();
DeBruijnNode * endingNode = m_deBruijnEdge->getEndingNode();
if (startingNode == endingNode)
{
GraphicsItemNode * graphicsItemNode = startingNode->getGraphicsItemNode();
if (graphicsItemNode == 0)
graphicsItemNode = startingNode->getReverseComplement()->getGraphicsItemNode();
if (graphicsItemNode != 0 && graphicsItemNode->m_linePoints.size() == 2)
{
makeSpecialPathConnectingNodeToSelf();
return;
}
}
//If we are in single mode and the edge connects a node to its reverse
//complement, then we need a special path to make it visible.
if (startingNode == endingNode->getReverseComplement() &&
!g_settings->doubleMode)
{
makeSpecialPathConnectingNodeToReverseComplement();
return;
}
//Otherwise, the path is just a single cubic Bezier curve.
QPainterPath path;
path.moveTo(m_startingLocation);
path.cubicTo(m_controlPoint1, m_controlPoint2, m_endingLocation);
setPath(path);
}