def testDefaultExpressionForSupportedPlugs( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"].addChild( Gaffer.IntPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.FloatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.StringPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.BoolPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V2fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V2iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Color3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Color4fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box2fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box2iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box3fPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Box3iPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.IntVectorDataPlug( defaultValue = IECore.IntVectorData( [ 0, 1 ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.FloatVectorDataPlug( defaultValue = IECore.FloatVectorData( [ 0, 1 ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.StringVectorDataPlug( defaultValue = IECore.StringVectorData( [ "a", "b" ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V3fVectorDataPlug( defaultValue = IECore.V3fVectorData( [ IECore.V3f( 1 ) ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Color3fVectorDataPlug( defaultValue = IECore.Color3fVectorData( [ IECore.Color3f( 1 ) ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.M44fVectorDataPlug( defaultValue = IECore.M44fVectorData( [ IECore.M44f() ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V2iVectorDataPlug( defaultValue = IECore.V2iVectorData( [ IECore.V2i() ] ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["e"] = Gaffer.Expression() for plug in s["n"]["user"] : value = plug.getValue() s["e"].setExpression( s["e"].defaultExpression( plug, "python" ) ) self.assertTrue( plug.getInput().node().isSame( s["e"] ) ) self.assertEqual( plug.getValue(), value )
def testPlugTypes(self): box = Gaffer.Box("PlugTypes") box["int"] = Gaffer.IntPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) box["float"] = Gaffer.FloatPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) box["string"] = Gaffer.StringPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) box["v2i"] = Gaffer.V2iPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) box["v3i"] = Gaffer.V3iPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) box["color4f"] = Gaffer.Color4fPlug(flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) box["spline"] = Gaffer.SplinefColor3fPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) Gaffer.ExtensionAlgo.exportExtension("PlugTypesExtension", [box], self.temporaryDirectory()) sys.path.append(os.path.join(self.temporaryDirectory(), "python")) import PlugTypesExtension node = PlugTypesExtension.PlugTypes() for plug in Gaffer.Plug.Range(node): self.assertIsInstance(plug, type(box[plug.getName()])) if hasattr(plug, "getValue"): self.assertEqual(plug.getValue(), box[plug.getName()].getValue()) for plug in Gaffer.Plug.RecursiveRange(node): self.assertFalse(plug.getFlags(Gaffer.Plug.Flags.Dynamic))
def testExpectedResult(self): ramp = GafferImage.Ramp() ramp["format"].setValue(GafferImage.Format(128, 128)) ramp["transform"]["rotate"].setValue(45) ramp["transform"]["scale"]["x"].setValue(.5) ramp["startPosition"].setValue(imath.V2f(0, 64)) ramp["endPosition"].setValue(imath.V2f(128, 64)) ramp["ramp"].addChild(Gaffer.ValuePlug("p2")) ramp["ramp"]["p2"].addChild( Gaffer.FloatPlug("x", defaultValue=0.5308765172958374)) ramp["ramp"]["p2"].addChild( Gaffer.Color4fPlug("y", defaultValue=imath.Color4f( 0.530900002, 0, 0, 0.50999999))) reader = GafferImage.ImageReader() reader["fileName"].setValue( os.path.dirname(__file__) + "/images/GafferRamp.exr") self.assertImagesEqual(ramp["out"], reader["out"], ignoreMetadata=True, maxDifference=0.001)
def testColor4fDoesntAcceptColor3fInput(self): p4 = Gaffer.Color4fPlug() p3 = Gaffer.Color3fPlug(direction=Gaffer.Plug.Direction.Out) self.failIf(p4.acceptsInput(p3)) self.assertRaises(RuntimeError, p4.setInput, p3)
def testColor3fAcceptsColor4fInput(self): p4 = Gaffer.Color4fPlug(direction=Gaffer.Plug.Direction.Out) p3 = Gaffer.Color3fPlug() self.failUnless(p3.acceptsInput(p4)) p3.setInput(p4) self.failUnless(p3.getInput().isSame(p4)) self.failUnless(p3[0].getInput().isSame(p4[0])) self.failUnless(p3[1].getInput().isSame(p4[1])) self.failUnless(p3[2].getInput().isSame(p4[2])) self.assertEqual(p4[3].outputs(), ())
def testGanging(self): p = Gaffer.Color4fPlug() self.assertFalse(p.isGanged()) self.assertTrue(p.canGang()) p.gang() self.assertTrue(p.isGanged()) self.assertTrue(p[0].getInput() is None) self.assertTrue(p[1].getInput().isSame(p[0])) self.assertTrue(p[2].getInput().isSame(p[0])) self.assertTrue(p[3].getInput() is None) p.ungang() for c in p.children(): self.assertTrue(c.getInput() is None) self.assertFalse(p.isGanged()) self.assertTrue(p.canGang())
def testVectorAndColourOutputs( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["user"].addChild( Gaffer.V2fPlug( "v2f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V2iPlug( "v2i", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V3fPlug( "v3f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.V3iPlug( "v3i", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Color3fPlug( "c3f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["n"]["user"].addChild( Gaffer.Color4fPlug( "c4f", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) ) s["e"] = Gaffer.Expression() s["e"]["engine"].setValue( "python" ) s["e"]["expression"].setValue( 'import IECore;' 'parent["n"]["user"]["v2f"] = IECore.V2f( 1, 2 );' 'parent["n"]["user"]["v2i"] = IECore.V2i( 3, 4 );' 'parent["n"]["user"]["v3f"] = IECore.V3f( 4, 5, 6 );' 'parent["n"]["user"]["v3i"] = IECore.V3i( 6, 7, 8 );' 'parent["n"]["user"]["c3f"] = IECore.Color3f( 9, 10, 11 );' 'parent["n"]["user"]["c4f"] = IECore.Color4f( 12, 13, 14, 15 );' ) def assertExpectedValues( script ) : self.assertEqual( script["n"]["user"]["v2f"].getValue(), IECore.V2f( 1, 2 ) ) self.assertEqual( script["n"]["user"]["v2i"].getValue(), IECore.V2i( 3, 4 ) ) self.assertEqual( script["n"]["user"]["v3f"].getValue(), IECore.V3f( 4, 5, 6 ) ) self.assertEqual( script["n"]["user"]["v3i"].getValue(), IECore.V3i( 6, 7, 8 ) ) self.assertEqual( script["n"]["user"]["c3f"].getValue(), IECore.Color3f( 9, 10, 11 ) ) self.assertEqual( script["n"]["user"]["c4f"].getValue(), IECore.Color4f( 12, 13, 14, 15 ) ) assertExpectedValues( s ) s2 = Gaffer.ScriptNode() s2.execute( s.serialise() ) assertExpectedValues( s2 )
def __init__(self, name="ColoriseSHO"): GafferImage.ImageProcessor.__init__(self, name) self["show"] = Gaffer.IntPlug(defaultValue=0, minValue=0, maxValue=3) # Channel colorising merge = GafferImage.Merge() self["__Merge"] = merge merge["operation"].setValue(0) outputSwitch = Gaffer.Switch() self["__Switch_output"] = outputSwitch outputSwitch.setup(self["out"]) outputSwitch["index"].setInput(self["show"]) outputSwitch["in"][0].setInput(merge["out"]) for channel in GafferAstro.NarrowbandChannels: self["source%s" % channel] = Gaffer.StringPlug( defaultValue='%s.input' % channel) self["range%s" % channel] = Gaffer.V2fPlug(defaultValue=imath.V2f(0, 1)) self["map%s" % channel] = Gaffer.SplinefColor4fPlug( defaultValue=self.__mapDefaults[channel]) self["saturation%s" % channel] = Gaffer.FloatPlug(defaultValue=1.0, minValue=0.0) self["multiply%s" % channel] = Gaffer.FloatPlug(defaultValue=1.0) self["gamma%s" % channel] = Gaffer.FloatPlug(defaultValue=1.0) colorise = GafferAstro.Colorise() self["__Colorise_%s" % channel] = colorise colorise["in"].setInput(self["in"]) colorise["channel"].setInput(self["source%s" % channel]) colorise["mapEnabled"].setValue(True) colorise["range"].setInput(self["range%s" % channel]) colorise["enabled"].setInput(colorise["channel"]) # Work around issue where setInput doesn't sync the number of knots colorise["map"].setValue(self["map%s" % channel].getValue()) colorise["map"].setInput(self["map%s" % channel]) cdl = GafferImage.CDL() self["__CDL_%s" % channel] = cdl cdl["in"].setInput(colorise["out"]) cdl["saturation"].setInput(self["saturation%s" % channel]) grade = GafferImage.Grade() self["__Grade_%s" % channel] = grade grade["in"].setInput(cdl["out"]) grade["multiply"].gang() grade["multiply"]["r"].setInput(self["multiply%s" % channel]) grade["gamma"].gang() grade["gamma"]["r"].setInput(self["gamma%s" % channel]) merge["in"][len(merge["in"]) - 1].setInput(grade["out"]) outputSwitch["in"][len(outputSwitch["in"]) - 1].setInput( grade["out"]) self["saturation"] = Gaffer.FloatPlug(defaultValue=1.0, minValue=0.0) self["blackPoint"] = Gaffer.FloatPlug(defaultValue=0.0) self["whitePoint"] = Gaffer.FloatPlug(defaultValue=1.0) self["multiply"] = Gaffer.Color4fPlug( defaultValue=imath.Color4f(1, 1, 1, 1)) self["gamma"] = Gaffer.FloatPlug(defaultValue=1.0, minValue=0.0) outputCdl = GafferImage.CDL() self["__CDL_output"] = outputCdl outputCdl["in"].setInput(outputSwitch["out"]) outputCdl["saturation"].setInput(self["saturation"]) outputGrade = GafferImage.Grade() self["__Grade_output"] = outputGrade outputGrade["in"].setInput(outputCdl["out"]) outputGrade["blackPoint"].gang() outputGrade["blackPoint"]["r"].setInput(self["blackPoint"]) outputGrade["whitePoint"].gang() outputGrade["whitePoint"]["r"].setInput(self["whitePoint"]) outputGrade["multiply"].setInput(self["multiply"]) outputGrade["gamma"].gang() outputGrade["gamma"]["r"].setInput(self["gamma"]) copyChannels = GafferImage.CopyChannels() self["__CopyChannels"] = copyChannels copyChannels["in"][0].setInput(self["in"]) copyChannels["in"][1].setInput(outputGrade["out"]) copyChannels["channels"].setValue("*") self["out"].setInput(copyChannels["out"])