当前位置: 首页>>代码示例>>C++>>正文


C++ AbstractNode::boundingRect方法代码示例

本文整理汇总了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);
            }
        }
    }

}
开发者ID:Oyuret,项目名称:layers,代码行数:78,代码来源:balancegraph.cpp


注:本文中的AbstractNode::boundingRect方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。