def testExpressions(self): s = Gaffer.ScriptNode() s["n1"] = Gaffer.Node() s["n2"] = Gaffer.Node() s["n1"]["user"]["f"] = GafferImage.FormatPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n2"]["user"]["f"] = GafferImage.FormatPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["e"] = Gaffer.Expression() s["e"].setExpression( inspect.cleandoc(""" f = parent["n1"]["user"]["f"] b = f.getDisplayWindow() b.min -= IECore.V2i( 10 ) b.max += IECore.V2i( 20 ) f.setPixelAspect( 0.5 ) f.setDisplayWindow( b ) parent["n2"]["user"]["f"] = f """)) s["n1"]["user"]["f"].setValue( GafferImage.Format( IECore.Box2i(IECore.V2i(20, 30), IECore.V2i(100, 110)), 1)) self.assertEqual( s["n2"]["user"]["f"].getValue(), GafferImage.Format( IECore.Box2i(IECore.V2i(10, 20), IECore.V2i(120, 130)), 0.5))
def testSerialiseWithPartialExpressionConnection(self): s = Gaffer.ScriptNode() s["r"] = GafferImage.ImageReader() s["r"]["fileName"].setValue("thisFileDoesNotExist") s["n"] = Gaffer.Node() s["n"]["user"]["f"] = GafferImage.FormatPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n"]["user"]["f"]["displayWindow"].setValue( imath.Box2i(imath.V2i(10, 11), imath.V2i(20, 21))) # This expression will throw because the ImageReader is referencing # an invalid file. s["e"] = Gaffer.Expression() s["e"].setExpression( """parent["n"]["user"]["f"]["pixelAspect"] = parent["r"]["out"]["format"].getPixelAspectRatio()""" ) # Despite that, we should still be able to serialise the script # without triggering expression evaluation. This is particularly # useful when dispatching a script where the ImageReader is # set up to read an image which won't exist until one of the tasks # has been executed. s2 = Gaffer.ScriptNode() s2.execute(s.serialise()) self.assertEqual(s2["n"]["user"]["f"]["displayWindow"].getValue(), s["n"]["user"]["f"]["displayWindow"].getValue())
def testDefaultFormat(self): text = GafferImage.Text() with Gaffer.Context() as c: GafferImage.FormatPlug().setDefaultFormat( c, GafferImage.Format(100, 200, 2)) self.assertEqual(text["out"]["format"].getValue(), GafferImage.Format(100, 200, 2))
def testChildren(self): p = GafferImage.FormatPlug() self.assertEqual(p.keys(), ["displayWindow", "pixelAspect"]) self.assertTrue(isinstance(p["displayWindow"], Gaffer.Box2iPlug)) self.assertTrue(isinstance(p["pixelAspect"], Gaffer.FloatPlug)) self.assertRaises(RuntimeError, p.addChild, Gaffer.IntPlug())
def testConstructor(self): p = GafferImage.FormatPlug() self.assertEqual(p.getName(), "FormatPlug") self.assertEqual(p.direction(), Gaffer.Plug.Direction.In) self.assertEqual(p.defaultValue(), GafferImage.Format()) self.assertEqual(p.getValue(), GafferImage.Format()) self.assertEqual(p.getFlags(), Gaffer.Plug.Flags.Default) p = GafferImage.FormatPlug( "p", Gaffer.Plug.Direction.Out, GafferImage.Format(100, 200, 2), Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) self.assertEqual(p.getName(), "p") self.assertEqual(p.direction(), Gaffer.Plug.Direction.Out) self.assertEqual(p.defaultValue(), GafferImage.Format(100, 200, 2)) self.assertEqual(p.getValue(), GafferImage.Format(100, 200, 2)) self.assertEqual(p.getFlags(), Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic)
def testValue( self ) : p = GafferImage.FormatPlug() v = GafferImage.Format( imath.Box2i( imath.V2i( 11, 12 ), imath.V2i( 100, 200 ) ), 2 ) p.setValue( v ) self.assertEqual( p.getValue(), v ) self.assertEqual( p["displayWindow"].getValue(), v.getDisplayWindow() ) self.assertEqual( p["pixelAspect"].getValue(), v.getPixelAspect() )
def testDefaultFormat( self ) : a = GafferImage.Constant() a["format"].setValue( GafferImage.Format( 100, 200 ) ) m = GafferImage.Merge() m["in"][1].setInput( a["out"] ) with Gaffer.Context() as c : GafferImage.FormatPlug().setDefaultFormat( c, GafferImage.Format( 1000, 2000 ) ) self.assertEqual( m["out"]["format"].getValue(), GafferImage.Format( 1000, 2000 ) )
def testSerialisation( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["f"] = GafferImage.FormatPlug( "testPlug", defaultValue = GafferImage.Format( 10, 5, .5 ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) se = s.serialise() s2 = Gaffer.ScriptNode() s2.execute( se ) self.failUnless( s2["n"]["f"].isInstanceOf( GafferImage.FormatPlug.staticTypeId() ) )
def testInputPlug( self ) : n = Gaffer.Node() f = GafferImage.FormatPlug("f", direction = Gaffer.Plug.Direction.In, flags = Gaffer.Plug.Flags.Default ) n.addChild( f ) s = Gaffer.ScriptNode() s.addChild( n ) with s.context() : f1 = n["f"].getValue() # The default value of any input plug should be it's real value regardless of whether it is empty or not. self.assertEqual( f1, GafferImage.Format() )
def testOffsetSerialize( self ) : format = GafferImage.Format( IECore.Box2i( IECore.V2i( -5, -11 ), IECore.V2i( 13, 19 ) ), .5 ) s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["f"] = GafferImage.FormatPlug( "testPlug", defaultValue = format, flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) se = s.serialise() s2 = Gaffer.ScriptNode() s2.execute( se ) self.assertEqual( s2["n"]["f"].getValue(), format )
def testReadOnlySerialisation( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["p"] = GafferImage.FormatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) s["n"]["p"].setValue( GafferImage.Format( IECore.Box2i( IECore.V2i( 0 ), IECore.V2i( 10 ) ), 2.0 ) ) s["n"]["p"].setFlags( Gaffer.Plug.Flags.ReadOnly, True ) s2 = Gaffer.ScriptNode() s2.execute( s.serialise() ) self.assertEqual( s2["n"]["p"].getValue(), GafferImage.Format( IECore.Box2i( IECore.V2i( 0 ), IECore.V2i( 10 ) ), 2.0 ) ) self.assertTrue( s2["n"]["p"].getFlags( Gaffer.Plug.Flags.ReadOnly ) )
def testDefaultExpression( self ) : s = Gaffer.ScriptNode() s["n"] = Gaffer.Node() s["n"]["f"] = GafferImage.FormatPlug( flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) f = GafferImage.Format( 100, 200, 1 ) s["n"]["f"].setValue( f ) s["e"] = Gaffer.Expression() s["e"].setExpression( s["e"].defaultExpression( s["n"]["f"], "python" ) ) self.assertTrue( s["n"]["f"].getInput().node().isSame( s["e"] ) ) self.assertEqual( s["n"]["f"].getValue(), f )
def testExpressions(self): s = Gaffer.ScriptNode() s["n1"] = Gaffer.Node() s["n2"] = Gaffer.Node() s["n1"]["user"]["f"] = GafferImage.FormatPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["n2"]["user"]["f"] = GafferImage.FormatPlug( flags=Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic) s["e"] = Gaffer.Expression() s["e"]["engine"].setValue("python") s["e"]["expression"].setValue( 'f = parent["n1"]["user"]["f"]; b = f.getDisplayWindow(); b.min -= IECore.V2i( 10 ); b.max += IECore.V2i( 20 ); f.setPixelAspect( 0.5 ); f.setDisplayWindow( b ); parent["n2"]["user"]["f"] = f' ) s["n1"]["user"]["f"].setValue( GafferImage.Format( IECore.Box2i(IECore.V2i(20, 30), IECore.V2i(100, 110)), 1)) self.assertEqual( s["n2"]["user"]["f"].getValue(), GafferImage.Format( IECore.Box2i(IECore.V2i(10, 20), IECore.V2i(120, 130)), 0.5))
def testDefaultValue(self): f1 = GafferImage.Format(2000, 1000, 2.0) f2 = GafferImage.Format(64, 128, 1.0) p = GafferImage.FormatPlug(defaultValue=f1) self.assertEqual(p.getValue(), f1) self.assertEqual(p.defaultValue(), f1) self.assertTrue(p.isSetToDefault()) p.setValue(f2) self.assertEqual(p.getValue(), f2) self.assertEqual(p.defaultValue(), f1) self.assertFalse(p.isSetToDefault()) p.resetDefault() self.assertEqual(p.getValue(), f2) self.assertEqual(p.defaultValue(), f2) self.assertTrue(p.isSetToDefault())