| 1484 | } |
| 1485 | |
| 1486 | void |
| 1487 | TrackerNodeInteract::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) ) { |
no test coverage detected