| 600 | } |
| 601 | |
| 602 | void |
| 603 | WriteNodePrivate::setReadNodeOriginalFrameRange() |
| 604 | { |
| 605 | NodePtr readNode = readBackNode.lock(); |
| 606 | |
| 607 | if (!readNode) { |
| 608 | return; |
| 609 | } |
| 610 | NodePtr writeNode = embeddedPlugin.lock(); |
| 611 | if (!writeNode) { |
| 612 | return; |
| 613 | } |
| 614 | double first, last; |
| 615 | writeNode->getEffectInstance()->getFrameRange_public(writeNode->getEffectInstance()->getHash(), &first, &last); |
| 616 | |
| 617 | { |
| 618 | KnobIPtr originalFrameRangeKnob = readNode->getKnobByName(kReaderParamNameOriginalFrameRange); |
| 619 | assert(originalFrameRangeKnob); |
| 620 | KnobInt* originalFrameRange = dynamic_cast<KnobInt*>( originalFrameRangeKnob.get() ); |
| 621 | if (originalFrameRange) { |
| 622 | originalFrameRange->setValues(first, last, ViewSpec::all(), eValueChangedReasonNatronInternalEdited); |
| 623 | } |
| 624 | } |
| 625 | { |
| 626 | KnobIPtr firstFrameKnob = readNode->getKnobByName(kParamFirstFrame); |
| 627 | assert(firstFrameKnob); |
| 628 | KnobInt* firstFrame = dynamic_cast<KnobInt*>( firstFrameKnob.get() ); |
| 629 | if (firstFrame) { |
| 630 | firstFrame->setValue(first); |
| 631 | } |
| 632 | } |
| 633 | { |
| 634 | KnobIPtr lastFrameKnob = readNode->getKnobByName(kParamLastFrame); |
| 635 | assert(lastFrameKnob); |
| 636 | KnobInt* lastFrame = dynamic_cast<KnobInt*>( lastFrameKnob.get() ); |
| 637 | if (lastFrame) { |
| 638 | lastFrame->setValue(last); |
| 639 | } |
| 640 | } |
| 641 | } |
| 642 | |
| 643 | void |
| 644 | WriteNodePrivate::createReadNodeAndConnectGraph(const std::string& filename) |
no test coverage detected