Ejemplo n.º 1
0
    def testOverwrite(self):

        r = GafferImage.ImageReader()
        r["fileName"].setValue(self.checkerFile)
        inMetadata = r["out"]["metadata"].getValue()

        a = GafferImage.ImageMetadata()
        a["metadata"].addMember("compression",
                                IECore.StringData("extraFancyCompressor"))

        m = GafferImage.CopyImageMetadata()
        m["in"].setInput(r["out"])
        m["copyFrom"].setInput(a["out"])

        # check that the image is passed through

        m["names"].setValue("")
        metadata = m["out"]["metadata"].getValue()
        self.assertEqual(metadata["compression"], IECore.StringData("zips"))
        self.assertEqual(m["out"]["metadata"].getValue(), inMetadata)
        self.assertEqual(m["out"].image(), r["out"].image())

        # check that we can overwrite certain metadata

        m["names"].setValue("compression")
        metadata = m["out"]["metadata"].getValue()
        self.assertTrue("compression" in metadata.keys())
        self.assertEqual(metadata["compression"],
                         IECore.StringData("extraFancyCompressor"))
Ejemplo n.º 2
0
    def testDirtyPropogation(self):

        c = GafferImage.Constant()
        r = GafferImage.ImageReader()
        r["fileName"].setValue(self.checkerFile)
        inMetadata = r["out"]["metadata"].getValue()

        m = GafferImage.CopyImageMetadata()
        m["in"].setInput(c["out"])
        m["copyFrom"].setInput(r["out"])

        cs = GafferTest.CapturingSlot(m.plugDirtiedSignal())

        m["copyFrom"].setInput(c["out"])
        self.assertTrue(m["out"]["metadata"] in set(e[0] for e in cs))

        del cs[:]

        m["names"].setValue("test")
        self.assertTrue(m["out"]["metadata"] in set(e[0] for e in cs))

        del cs[:]

        m["invertNames"].setValue(True)
        self.assertTrue(m["out"]["metadata"] in set(e[0] for e in cs))
Ejemplo n.º 3
0
    def testPassThrough(self):

        c = GafferImage.Constant()
        i = GafferImage.ImageReader()
        i["fileName"].setValue(self.checkerFile)

        m = GafferImage.CopyImageMetadata()
        m["in"].setInput(i["out"])
        m["names"].setValue("*")

        self.assertEqual(i["out"]["format"].hash(), m["out"]["format"].hash())
        self.assertEqual(i["out"]["dataWindow"].hash(),
                         m["out"]["dataWindow"].hash())
        self.assertEqual(i["out"]["channelNames"].hash(),
                         m["out"]["channelNames"].hash())

        self.assertEqual(i["out"]["format"].getValue(),
                         m["out"]["format"].getValue())
        self.assertEqual(i["out"]["dataWindow"].getValue(),
                         m["out"]["dataWindow"].getValue())
        self.assertEqual(i["out"]["channelNames"].getValue(),
                         m["out"]["channelNames"].getValue())

        context = Gaffer.Context()
        context["image:tileOrigin"] = IECore.V2i(0)
        with context:
            for c in ["G", "B", "A"]:
                context["image:channelName"] = c
                self.assertEqual(i["out"]["channelData"].hash(),
                                 m["out"]["channelData"].hash())
                self.assertEqual(i["out"]["channelData"].getValue(),
                                 m["out"]["channelData"].getValue())
Ejemplo n.º 4
0
    def test(self):

        r = GafferImage.ImageReader()
        r["fileName"].setValue(self.checkerFile)
        inMetadata = r["out"]["metadata"].getValue()

        d = GafferImage.DeleteImageMetadata()
        d["in"].setInput(r["out"])
        d["names"].setValue("*")

        m = GafferImage.CopyImageMetadata()
        m["in"].setInput(d["out"])
        m["copyFrom"].setInput(r["out"])
        m["names"].setValue("")

        # check that the image is passed through

        metadata = m["out"]["metadata"].getValue()
        self.assertEqual(m["out"]["metadata"].getValue(),
                         IECore.CompoundData())
        self.assertEqual(m["out"].image(), d["out"].image())

        # check that we can copy specific metadata

        m["names"].setValue("screen* compression")
        metadata = m["out"]["metadata"].getValue()
        expected = set(
            ["screenWindowWidth", "screenWindowCenter", "compression"])
        self.assertEqual(set(metadata.keys()), expected)
        for key in metadata.keys():
            self.assertEqual(metadata[key], inMetadata[key])

        # check that we can invert the selection

        m["invertNames"].setValue(True)
        metadata = m["out"]["metadata"].getValue()
        expected = set(inMetadata.keys()) - set(
            ["screenWindowWidth", "screenWindowCenter", "compression"])
        self.assertEqual(set(metadata.keys()), expected)
        for key in metadata.keys():
            self.assertEqual(metadata[key], inMetadata[key])