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