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; } }
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; }