virtual void setup( const OFX::RenderArguments& args ) { // destination view // TUTTLE_COUT_INFOS; // TUTTLE_COUT_VAR( "dst - fetchImage " << time ); _dst.reset( _clipDst->fetchImage( args.time ) ); if( !_dst.get() ) BOOST_THROW_EXCEPTION( exception::ImageNotReady() << exception::dev() + "Error on clip " + quotes(_clipDst->name()) ); if( _dst->getRowDistanceBytes() == 0 ) BOOST_THROW_EXCEPTION( exception::WrongRowBytes() << exception::dev() + "Error on clip " + quotes(_clipDst->name()) ); // _dstPixelRod = _dst->getRegionOfDefinition(); // bug in nuke, returns bounds _dstPixelRod = _clipDst->getPixelRod( args.time, args.renderScale ); _dstPixelRodSize.x = ( this->_dstPixelRod.x2 - this->_dstPixelRod.x1 ); _dstPixelRodSize.y = ( this->_dstPixelRod.y2 - this->_dstPixelRod.y1 ); }
virtual void setup(const OFX::RenderArguments& args) { ImageProcessor::setup(args); // source view _src.reset(_clipSrc->fetchImage(args.time)); if(!_src.get()) BOOST_THROW_EXCEPTION(exception::ImageNotReady() << exception::dev() + "Error on clip " + quotes(_clipSrc->name())); if(_src->getRowDistanceBytes() == 0) BOOST_THROW_EXCEPTION(exception::WrongRowBytes() << exception::dev() + "Error on clip " + quotes(_clipSrc->name())); if(OFX::getImageEffectHostDescription()->hostName == "uk.co.thefoundry.nuke") { // bug in nuke, getRegionOfDefinition() on OFX::Image returns bounds _srcPixelRod = _clipSrc->getPixelRod(args.time, args.renderScale); } else { _srcPixelRod = _src->getRegionOfDefinition(); } }
virtual void setup( const OFX::RenderArguments& args ) { // destination view _dst.reset( _clipDst->fetchImage( args.time ) ); if( !_dst.get() ) BOOST_THROW_EXCEPTION( exception::ImageNotReady() ); if( _dst->getRowBytes() == 0 ) BOOST_THROW_EXCEPTION( exception::WrongRowBytes() ); // _dstPixelRod = _dst->getRegionOfDefinition(); // bug in nuke, returns bounds _dstPixelRod = _clipDst->getPixelRod( args.time, args.renderScale ); _dstPixelRodSize.x = ( this->_dstPixelRod.x2 - this->_dstPixelRod.x1 ); _dstPixelRodSize.y = ( this->_dstPixelRod.y2 - this->_dstPixelRod.y1 ); _dstView = getView( _dst.get(), _dstPixelRod ); #ifndef TUTTLE_PRODUCTION // init dst buffer with red to highlight uninitialized pixels const OfxRectI dstBounds = this->translateRoWToOutputClipCoordinates( _dst->getBounds() ); View dstToFill = boost::gil::subimage_view( _dstView, dstBounds.x1, dstBounds.y1, dstBounds.x2 - dstBounds.x1, dstBounds.y2 - dstBounds.y1 ); const boost::gil::rgba32f_pixel_t errorColor( 1.0, 0.0, 0.0, 1.0 ); fill_pixels( dstToFill, errorColor ); #endif }