本文整理汇总了C++中AbstractNode::boundingRect方法的典型用法代码示例。如果您正苦于以下问题:C++ AbstractNode::boundingRect方法的具体用法?C++ AbstractNode::boundingRect怎么用?C++ AbstractNode::boundingRect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AbstractNode
的用法示例。
在下文中一共展示了AbstractNode::boundingRect方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: newProcessRegion
void BalanceGraph::newProcessRegion(Region *region, Graph &graph)
{
// if we do not need to move the region
if(region->getDforce() == 0) {
return;
}
double minMovement = region->getDforce();
if(minMovement < 0) {
minMovement = (-1)*minMovement;
}
for(Segment* s : region->segments) {
for(AbstractNode* node : s->nodes) {
int layer = node->getLayer();
int positionInLayer = node->getPositionInLayer();
// attempting to move to the left
if(region->getDforce() < 0) {
// If we are the leftmost node
if(positionInLayer == 0) {
continue;
}
AbstractNode* leftNode = graph.getLayers().at(layer).at(positionInLayer-1);
// if leftNode is in the same region
if(nodeToSegment.value(leftNode)->region == s->region) {
continue;
}
double availableMovement = node->x() - (leftNode->x() + leftNode->boundingRect().width() + 10);
if(availableMovement < minMovement) {
minMovement = availableMovement;
}
}
// Attempting to move to the right
if(region->getDforce() > 0) {
// if we are the rightmost in layer
if(positionInLayer == graph.getLayers().at(layer).size()-1) {
continue;
}
AbstractNode* rightNode = graph.getLayers().at(layer).at(positionInLayer+1);
// if rightNode is in the same region
if(nodeToSegment.value(rightNode)->region == s->region) {
continue;
}
double availableMovement = rightNode->x() - (node->x() + node->boundingRect().width() + 10);
if(availableMovement < minMovement) {
minMovement = availableMovement;
}
}
}
} // Calculate the maximal movement
// move the whole region
for(Segment* s : region->segments) {
for(AbstractNode* n : s->nodes) {
// movement to the left
if(region->getDforce() < 0) {
n->moveBy(-minMovement,0);
} else {
n->moveBy(minMovement,0);
}
}
}
}