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

Method transformPattern

Engine/TrackerNodeInteract.cpp:1486–1777  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1484}
1485
1486void
1487TrackerNodeInteract::transformPattern(double time,
1488 TrackerMouseStateEnum state,
1489 const Point& delta)
1490{
1491 KnobDoublePtr searchWndTopRight, searchWndBtmLeft;
1492 KnobDoublePtr patternCorners[4];
1493 TrackerContextPtr context = getContext();
1494 KnobDoublePtr centerKnob = interactMarker->getCenterKnob();
1495 KnobDoublePtr offsetKnob = interactMarker->getOffsetKnob();
1496 bool transformPatternCorners = state != eMouseStateDraggingOuterBtmLeft &&
1497 state != eMouseStateDraggingOuterBtmRight &&
1498 state != eMouseStateDraggingOuterTopLeft &&
1499 state != eMouseStateDraggingOuterTopRight &&
1500 state != eMouseStateDraggingOuterMidLeft &&
1501 state != eMouseStateDraggingOuterMidRight &&
1502 state != eMouseStateDraggingOuterTopMid &&
1503 state != eMouseStateDraggingOuterBtmMid;
1504
1505 if (transformPatternCorners) {
1506 patternCorners[0] = interactMarker->getPatternTopLeftKnob();
1507 patternCorners[1] = interactMarker->getPatternBtmLeftKnob();
1508 patternCorners[2] = interactMarker->getPatternBtmRightKnob();
1509 patternCorners[3] = interactMarker->getPatternTopRightKnob();
1510 }
1511 searchWndTopRight = interactMarker->getSearchWindowTopRightKnob();
1512 searchWndBtmLeft = interactMarker->getSearchWindowBottomLeftKnob();
1513
1514 QPointF centerPoint;
1515 centerPoint.rx() = centerKnob->getValueAtTime(time, 0);
1516 centerPoint.ry() = centerKnob->getValueAtTime(time, 1);
1517
1518 QPointF offset;
1519 offset.rx() = offsetKnob->getValueAtTime(time, 0);
1520 offset.ry() = offsetKnob->getValueAtTime(time, 1);
1521
1522 QPointF patternPoints[4];
1523 QPointF searchPoints[4];
1524 if (transformPatternCorners) {
1525 for (int i = 0; i < 4; ++i) {
1526 patternPoints[i].rx() = patternCorners[i]->getValueAtTime(time, 0) + centerPoint.x() + offset.x();
1527 patternPoints[i].ry() = patternCorners[i]->getValueAtTime(time, 1) + centerPoint.y() + offset.y();
1528 }
1529 }
1530 searchPoints[1].rx() = searchWndBtmLeft->getValueAtTime(time, 0) + centerPoint.x() + offset.x();
1531 searchPoints[1].ry() = searchWndBtmLeft->getValueAtTime(time, 1) + centerPoint.y() + offset.y();
1532
1533 searchPoints[3].rx() = searchWndTopRight->getValueAtTime(time, 0) + centerPoint.x() + offset.x();
1534 searchPoints[3].ry() = searchWndTopRight->getValueAtTime(time, 1) + centerPoint.y() + offset.y();
1535
1536 searchPoints[0].rx() = searchPoints[1].x();
1537 searchPoints[0].ry() = searchPoints[3].y();
1538
1539 searchPoints[2].rx() = searchPoints[3].x();
1540 searchPoints[2].ry() = searchPoints[1].y();
1541
1542 if ( (state == eMouseStateDraggingInnerBtmLeft) ||
1543 ( state == eMouseStateDraggingOuterBtmLeft) ) {

Callers 1

onOverlayPenMotionMethod · 0.80

Calls 15

currentFunction · 0.85
getOffsetKnobMethod · 0.80
getPatternTopLeftKnobMethod · 0.80
getPatternBtmLeftKnobMethod · 0.80
getEffectInstanceMethod · 0.80
hasAnimationMethod · 0.80
setValuesAtTimeMethod · 0.80
setValuesMethod · 0.80

Tested by

no test coverage detected