void Grade::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ChannelDataProcessor::affects( input, outputs ); // Process the children of the compound plugs. for( unsigned int i = 0; i < 4; ++i ) { if( input == blackPointPlug()->getChild(i) || input == whitePointPlug()->getChild(i) || input == liftPlug()->getChild(i) || input == gainPlug()->getChild(i) || input == multiplyPlug()->getChild(i) || input == offsetPlug()->getChild(i) || input == gammaPlug()->getChild(i) ) { outputs.push_back( outPlug()->channelDataPlug() ); return; } } // Process all other plugs. if( input == inPlug()->channelDataPlug() || input == blackClampPlug() || input == whiteClampPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); return; } }
void Random::affects( const Plug *input, AffectedPlugsContainer &outputs ) const { ComputeNode::affects( input, outputs ); if( input == seedPlug() || input == contextEntryPlug() ) { outputs.push_back( outFloatPlug() ); for( ValuePlugIterator componentIt( outColorPlug() ); componentIt != componentIt.end(); componentIt++ ) { outputs.push_back( componentIt->get() ); } } else if( input->parent<Plug>() == floatRangePlug() ) { outputs.push_back( outFloatPlug() ); } else if( input->parent<Plug>() == baseColorPlug() || input == huePlug() || input == saturationPlug() || input == valuePlug() ) { for( ValuePlugIterator componentIt( outColorPlug() ); componentIt != componentIt.end(); componentIt++ ) { outputs.push_back( componentIt->get() ); } } }
void Constant::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageNode::affects( input, outputs ); if( input->parent<Plug>() == colorPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } if( formatPlug()->displayWindowPlug()->isAncestorOf( input ) ) { outputs.push_back( outPlug()->formatPlug() ); outputs.push_back( outPlug()->dataWindowPlug() ); } if( input == formatPlug()->pixelAspectPlug() ) { outputs.push_back( outPlug()->formatPlug() ); } if( input == layerPlug() ) { outputs.push_back( outPlug()->channelNamesPlug() ); } }
void ImageReader::affects( const Plug *input, AffectedPlugsContainer &outputs ) const { ImageNode::affects( input, outputs ); if( input == intermediateMetadataPlug() ) { outputs.push_back( intermediateColorSpacePlug() ); } else if( input->parent<ImagePlug>() == intermediateImagePlug() ) { outputs.push_back( outPlug()->getChild<ValuePlug>( input->getName() ) ); } else if ( input == startFramePlug() || input == startModePlug() || input == endFramePlug() || input == endModePlug() ) { for( ValuePlugIterator it( outPlug() ); it != it.end(); ++it ) { outputs.push_back( it->get() ); } } }
void Mirror::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); const bool affectsTransform = input == inPlug()->formatPlug() || input == horizontalPlug() || input == verticalPlug() ; if( affectsTransform || input == inPlug()->dataWindowPlug() ) { outputs.push_back( outPlug()->dataWindowPlug() ); } if( affectsTransform || input == inPlug()->channelDataPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } }
void OSLObject::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { SceneElementProcessor::affects( input, outputs ); if( input == shaderPlug() ) { outputs.push_back( resampledNamesPlug() ); outputs.push_back( outPlug()->objectPlug() ); } else if (input == inPlug()->transformPlug() || input == interpolationPlug() || input == resampledInPlug()->objectPlug() ) { outputs.push_back( outPlug()->objectPlug() ); } else if( input == inPlug()->objectPlug() ) { outputs.push_back( resampledNamesPlug() ); } else if( input == outPlug()->objectPlug() ) { outputs.push_back( outPlug()->boundPlug() ); } }
void Shader::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { DependencyNode::affects( input, outputs ); if( parametersPlug()->isAncestorOf( input ) || input == enabledPlug() || input == nodeNamePlug() || input == namePlug() || input == typePlug() || input->parent<Plug>() == nodeColorPlug() ) { const Plug *out = outPlug(); if( out ) { if( !out->children().empty() ) { for( RecursivePlugIterator it( out ); it != it.end(); it++ ) { if( (*it)->children().empty() ) { outputs.push_back( it->get() ); } } } else { outputs.push_back( out ); } } } }
void Resample::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); if( input == inPlug()->dataWindowPlug() || input == matrixPlug() || input == expandDataWindowPlug() || input == filterPlug() || input->parent<V2fPlug>() == filterWidthPlug() || input == debugPlug() ) { outputs.push_back( outPlug()->dataWindowPlug() ); outputs.push_back( horizontalPassPlug()->dataWindowPlug() ); } if( input == inPlug()->dataWindowPlug() || input == matrixPlug() || input == filterPlug() || input->parent<V2fPlug>() == filterWidthPlug() || input == inPlug()->channelDataPlug() || input == boundingModePlug() || input == debugPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); outputs.push_back( horizontalPassPlug()->channelDataPlug() ); } }
void SetVisualiser::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { SceneElementProcessor::affects( input, outputs ); // Making attributes depend on outSets as much as possible (instead of // the input plugs directly) allows us to better take advantage of Gaffers // plug value caching and avoid some duplicate set processing work. if( input == setsPlug() || colorOverridesPlug()->isAncestorOf( input ) || input == inPlug()->setNamesPlug() ) { outputs.push_back( outSetsPlug() ); } else if ( input == includeInheritedPlug() || input == stripeWidthPlug() || input == outSetsPlug() || input == inPlug()->setPlug() ) { outputs.push_back( outPlug()->attributesPlug() ); } }
void Transform::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { SceneElementProcessor::affects( input, outputs ); if( input == spacePlug() || transformPlug()->isAncestorOf( input ) ) { outputs.push_back( outPlug()->transformPlug() ); outputs.push_back( outPlug()->boundPlug() ); } }
void BranchCreator::affects( const Plug *input, AffectedPlugsContainer &outputs ) const { SceneProcessor::affects( input, outputs ); if( input->parent<ScenePlug>() == inPlug() ) { outputs.push_back( outPlug()->getChild<ValuePlug>( input->getName() ) ); } else if( input == parentPlug() ) { outputs.push_back( mappingPlug() ); } else if( input == mappingPlug() ) { outputs.push_back( outPlug()->boundPlug() ); outputs.push_back( outPlug()->transformPlug() ); outputs.push_back( outPlug()->attributesPlug() ); outputs.push_back( outPlug()->objectPlug() ); outputs.push_back( outPlug()->childNamesPlug() ); // Globals plug deliberately omitted - because // it's just a pass-through connection. outputs.push_back( outPlug()->setNamesPlug() ); outputs.push_back( outPlug()->setPlug() ); } }
void AlembicSource::affects( const Plug *input, AffectedPlugsContainer &outputs ) const { SceneNode::affects( input, outputs ); if( input == fileNamePlug() || input == refreshCountPlug() ) { outputs.push_back( outPlug()->boundPlug() ); outputs.push_back( outPlug()->transformPlug() ); outputs.push_back( outPlug()->objectPlug() ); outputs.push_back( outPlug()->childNamesPlug() ); } }
void SceneReader::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { FileSource::affects( input, outputs ); if( input == tagsPlug() ) { outputs.push_back( outPlug()->childNamesPlug() ); } else if( input == setsPlug() ) { outputs.push_back( outPlug()->globalsPlug() ); } }
void Seeds::affects( const Plug *input, AffectedPlugsContainer &outputs ) const { BranchCreator::affects( input, outputs ); if( input == densityPlug() || input == pointTypePlug() ) { outputs.push_back( outPlug()->objectPlug() ); } else if( input == namePlug() ) { outputs.push_back( outPlug()->childNamesPlug() ); } }
void OSLObject::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { SceneElementProcessor::affects( input, outputs ); if( input == shaderPlug() ) { outputs.push_back( outPlug()->objectPlug() ); /// \todo Technically the objectPlug() affects the boundPlug(), /// but affects isn't currently called for output plugs - see /// corresponding todo in OSLImage. outputs.push_back( outPlug()->boundPlug() ); } }
void PointsType::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { SceneElementProcessor::affects( input, outputs ); if( input == typePlug() ) { outputs.push_back( outPlug()->objectPlug() ); } else if( input == outPlug()->objectPlug() ) { outputs.push_back( outPlug()->boundPlug() ); } }
void PathFilter::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { Filter::affects( input, outputs ); if( input == pathsPlug() ) { outputs.push_back( pathMatcherPlug() ); } else if( input == pathMatcherPlug() ) { outputs.push_back( outPlug() ); } }
void DeleteCurves::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { SceneElementProcessor::affects( input, outputs ); if( input == curvesPlug() ) { outputs.push_back( outPlug()->objectPlug() ); } else if( input == outPlug()->objectPlug() ) { outputs.push_back( outPlug()->boundPlug() ); } }
void ChannelDataProcessor::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); const ImagePlug *in = inPlug(); if ( input->parent<ImagePlug>() == in && input != in->channelDataPlug() ) { outputs.push_back( outPlug()->getChild<ValuePlug>( input->getName() ) ); } else if ( input == channelMaskPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } }
void Set::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { FilteredSceneProcessor::affects( input, outputs ); if( inPlug()->setNamesPlug() == input ) { outputs.push_back( outPlug()->setNamesPlug() ); } else if( inPlug()->setPlug() == input ) { outputs.push_back( outPlug()->setPlug() ); } else if( modePlug() == input ) { outputs.push_back( outPlug()->setNamesPlug() ); outputs.push_back( outPlug()->setPlug() ); } else if( namePlug() == input ) { outputs.push_back( outPlug()->setNamesPlug() ); outputs.push_back( outPlug()->setPlug() ); } else if( pathsPlug() == input || filterResultsPlug() == input ) { outputs.push_back( pathMatcherPlug() ); } else if( pathMatcherPlug() == input ) { outputs.push_back( outPlug()->setPlug() ); } }
void Light::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ObjectSource::affects( input, outputs ); if( parametersPlug()->isAncestorOf( input ) ) { outputs.push_back( outPlug()->attributesPlug() ); } if( input == defaultLightPlug() ) { outputs.push_back( outPlug()->setNamesPlug() ); } }
void OSLImage::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); if( input == shaderPlug() ) { outputs.push_back( shadingPlug() ); } else if( input == shadingPlug() ) { outputs.push_back( outPlug()->channelNamesPlug() ); outputs.push_back( outPlug()->channelDataPlug() ); } }
void Crop::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); if( input == areaSourcePlug() || areaPlug()->isAncestorOf( input ) || formatPlug()->isAncestorOf( input ) || input == formatCenterPlug() || input == inPlug()->dataWindowPlug() || input == inPlug()->formatPlug() ) { outputs.push_back( cropWindowPlug() ); } if( input == cropWindowPlug() || input == affectDisplayWindowPlug() || offsetPlug()->isAncestorOf( input ) || input == inPlug()->formatPlug() ) { outputs.push_back( outPlug()->formatPlug() ); } if( input == cropWindowPlug() || input == affectDisplayWindowPlug() || input == affectDataWindowPlug() || offsetPlug()->isAncestorOf( input ) || input == inPlug()->dataWindowPlug() ) { outputs.push_back( outPlug()->dataWindowPlug() ); } if( input == affectDisplayWindowPlug() || input == areaSourcePlug() || input == formatCenterPlug() || input == resetOriginPlug() || input == cropWindowPlug() ) { outputs.push_back( offsetPlug()->getChild( 0 ) ); outputs.push_back( offsetPlug()->getChild( 1 ) ); } }
void BranchCreator::affects( const Plug *input, AffectedPlugsContainer &outputs ) const { SceneProcessor::affects( input, outputs ); if( input->parent<ScenePlug>() == inPlug() ) { outputs.push_back( outPlug()->getChild<ValuePlug>( input->getName() ) ); } else if( input == parentPlug() ) { for( ValuePlugIterator it( outPlug() ); it != it.end(); it++ ) { outputs.push_back( it->get() ); } } }
void ColorProcessor::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); if( affectsColorData( input ) ) { outputs.push_back( colorDataPlug() ); } else if( input == channelsPlug() || input == colorDataPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } }
void Set::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { GlobalsProcessor::affects( input, outputs ); if( pathsPlug() == input ) { outputs.push_back( pathMatcherPlug() ); } else if( namePlug() == input || pathMatcherPlug() == input ) { outputs.push_back( outPlug()->globalsPlug() ); } }
void PrimitiveVariableProcessor::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { if( input == namesPlug() || input == invertNamesPlug() ) { outputs.push_back( outPlug()->objectPlug() ); } }
void Merge::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); if( input == operationPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } else if( const ImagePlug *inputImage = input->parent<ImagePlug>() ) { if( inputImage->parent<ArrayPlug>() == inPlugs() ) { outputs.push_back( outPlug()->getChild<ValuePlug>( input->getName() ) ); } } }
void Select::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { if( input == selectPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } else FilterProcessor::affects( input, outputs ); }
void Merge::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const { ImageProcessor::affects( input, outputs ); if( input == operationPlug() ) { outputs.push_back( outPlug()->channelDataPlug() ); } else if( const ImagePlug *p = input->parent<ImagePlug>() ) { const ImagePlugList &inputs( m_inputs.inputs() ); if( std::find( inputs.begin(), inputs.end(), p ) != inputs.end() ) { outputs.push_back( outPlug()->getChild<ValuePlug>( input->getName() ) ); } } }