Exemplo n.º 1
0
void
ViewerNode::setupGraph(bool createViewerProcess)
{
    // Viewers are not considered edited by default
    setSubGraphEditedByUser(false);

    ViewerNodePtr thisShared = shared_from_this();

    NodePtr internalViewerNode0 = _imp->internalViewerProcessNode[0].lock();
    assert(createViewerProcess || internalViewerNode0);
    if (createViewerProcess) {
        createViewerProcessNode();
        internalViewerNode0 = _imp->internalViewerProcessNode[0].lock();
    }


    double inputWidth = 1, inputHeight = 1;
    if (internalViewerNode0) {
        internalViewerNode0->getSize(&inputWidth, &inputHeight);
    }
    double inputX = 0, inputY = 0;
    if (internalViewerNode0) {
        internalViewerNode0->getPosition(&inputX, &inputY);

        // Offset so that we start in the middle inbetween the 2 viewer process nodes
        inputX += inputWidth + inputWidth / 2;
    }

    double startOffset = - (VIEWER_INITIAL_N_INPUTS / 2) * inputWidth - inputWidth / 2. - (VIEWER_INITIAL_N_INPUTS / 2 - 1) * inputWidth / 2;

    std::vector<NodePtr> inputNodes(VIEWER_INITIAL_N_INPUTS);
    // Create input nodes
    for (int i = 0; i < VIEWER_INITIAL_N_INPUTS; ++i) {
        QString inputName = QString::fromUtf8("Input%1").arg(i + 1);
        CreateNodeArgsPtr args(CreateNodeArgs::create(PLUGINID_NATRON_INPUT, thisShared));
        args->setProperty<bool>(kCreateNodeArgsPropAutoConnect, false);
        args->setProperty<bool>(kCreateNodeArgsPropAddUndoRedoCommand, false);
        args->setProperty<bool>(kCreateNodeArgsPropSettingsOpened, false);
        args->setProperty<std::string>(kCreateNodeArgsPropNodeInitialName, inputName.toStdString());
        args->setProperty<double>(kCreateNodeArgsPropNodeInitialPosition, inputX + startOffset, 0);
        args->setProperty<double>(kCreateNodeArgsPropNodeInitialPosition, inputY - inputHeight * 10, 1);
        //args.addParamDefaultValue<bool>(kNatronGroupInputIsOptionalParamName, true);
        inputNodes[i] = getApp()->createNode(args);
        assert(inputNodes[i]);
        startOffset += inputWidth * 1.5;
    }

}
Exemplo n.º 2
0
int main(void)
{
    int nodeNum;    // 点的个数

    printf("请输入节点的个数:");
    scanf("%d" , &nodeNum);
    printf("请输入无序图邻接矩阵[<0为不可达,对角线应该都为0]\n");
    inputNodes(martix, nodeNum);

    Node *tree = CreateNode(0, NULL, NULL, NULL, -1);
    Node *root = tree;
    able[0] = 1;
    nodeadr[0] = tree;

    printf("初始化创建过程:\n");
    initPrimTree(martix, nodeNum, able, nodeadr);
    printf("初始化完毕,先序输出中...\n");
    PreOrder(tree, Show);
    PreOrder(tree, Show2);

    return 0;
}