MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / initLine

Method initLine

Gui/Edge.cpp:428–639  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

426}
427
428void
429Edge::initLine()
430{
431 NodeGuiPtr source = _imp->source.lock();
432 NodeGuiPtr dest = _imp->dest.lock();
433
434 if (!source && !dest) {
435 return;
436 }
437
438 double sc = scale();
439 QRectF sourceBBOX = source ? mapFromItem( source.get(), source->boundingRect() ).boundingRect() : QRectF(0, 0, 1, 1);
440 QRectF destBBOX = dest ? mapFromItem( dest.get(), dest->boundingRect() ).boundingRect() : QRectF(0, 0, 1, 1);
441 QSize dstNodeSize;
442 QSize srcNodeSize;
443 if (dest) {
444 dstNodeSize = QSize( destBBOX.width(), destBBOX.height() );
445 }
446 if (source) {
447 srcNodeSize = QSize( sourceBBOX.width(), sourceBBOX.height() );
448 }
449
450 QPointF dst;
451
452 if (dest) {
453 dst = destBBOX.center();
454 } else if (source && !dest) {
455 dst = QPointF( sourceBBOX.x(), sourceBBOX.y() ) + QPointF(srcNodeSize.width() / 2., srcNodeSize.height() + 10);
456 }
457
458 std::vector<QLineF> dstEdges;
459 std::vector<QLineF> srcEdges;
460 if (dest) {
461 makeEdges(destBBOX, dstEdges);
462 }
463 if (source) {
464 makeEdges(sourceBBOX, srcEdges);
465 }
466
467
468 QPointF srcpt;
469
470 if (source && dest) {
471 /// This is a connected edge, either input or output
472 srcpt = sourceBBOX.center();
473 setLine( dst.x(), dst.y(), srcpt.x(), srcpt.y() );
474 } else if (!source && dest) {
475 /// The edge is an input edge which is unconnected
476 srcpt = QPointF( dst.x() + (std::cos(_imp->angle) * 100000 * sc),
477 dst.y() - (std::sin(_imp->angle) * 100000 * sc) );
478 setLine( dst.x(), dst.y(), srcpt.x(), srcpt.y() );
479 } else if (source && !dest) {
480 /// The edge is an output edge which is unconnected
481 srcpt = QPointF( sourceBBOX.x(), sourceBBOX.y() ) + QPointF(srcNodeSize.width() / 2., srcNodeSize.height() / 2.);
482 setLine( dst.x(), dst.y(), srcpt.x(), srcpt.y() );
483 }
484
485 bool foundDstIntersection = false;

Callers 4

checkForHintsMethod · 0.80
refreshEdgesMethod · 0.80
initializeInputsMethod · 0.80

Calls 15

QRectFClass · 0.85
makeEdgesFunction · 0.85
maxFunction · 0.85
centerMethod · 0.80
p2Method · 0.80
lengthMethod · 0.80
hideMethod · 0.80
showMethod · 0.80
getCurrentSettingsMethod · 0.80
QPointFClass · 0.70
cosFunction · 0.50

Tested by

no test coverage detected