Exemple #1
0
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;
	}

}
Exemple #2
0
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() );
		}
	}
}
Exemple #3
0
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() );
	}
}
Exemple #4
0
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() );
        }
    }
}
Exemple #5
0
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() );
	}
}
Exemple #6
0
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() );
	}
}
Exemple #7
0
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 );
			}
		}
	}
}
Exemple #8
0
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() );
	}
}
Exemple #9
0
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() );
	}
}
Exemple #10
0
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() );
	}
}
Exemple #12
0
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() );
	}
}
Exemple #13
0
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() );
	}
}
Exemple #14
0
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() );
	}
}
Exemple #15
0
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() );
	}
}
Exemple #16
0
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() );
	}
}
Exemple #17
0
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() );
	}
}
Exemple #18
0
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() );
	}
}
Exemple #20
0
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() );
	}
}
Exemple #21
0
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() );
	}
}
Exemple #22
0
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()	);
	}
}
Exemple #23
0
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 ) );
	}

}
Exemple #24
0
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() );
		}
	}
}
Exemple #25
0
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() );
	}
}
Exemple #26
0
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() );
	}
}
Exemple #28
0
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() ) );
		}
	}
}
Exemple #29
0
void Select::affects( const Gaffer::Plug *input, AffectedPlugsContainer &outputs ) const
{
	if( input == selectPlug() )
	{
		outputs.push_back( outPlug()->channelDataPlug() );	
	}
	else FilterProcessor::affects( input, outputs );
}
Exemple #30
0
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() ) );
		}
	}
}