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