def test_values(self): """ Test setValue() and getValue(). """ gtt = OCIO.GradingToneTransform(OCIO.GRADING_LOG) vals = OCIO.GradingTone(OCIO.GRADING_LOG) vals.midtones = OCIO.GradingRGBMSW(1.1, 0.9, 1.2, 1, 0.1, 1.2) vals.scontrast = 1.1 gtt.setValue(vals) assertEqualTone(self, gtt.getValue(), vals) vals.shadows = OCIO.GradingRGBMSW(1, 1.1, 0.5, 1, 1.2, 0) with self.assertRaises(AssertionError): assertEqualTone(self, gtt.getValue(), vals) gtt.setValue(vals) assertEqualTone(self, gtt.getValue(), vals)
def test_apply_inverse(self): """ Test applying transform with inversion. """ gtt = OCIO.GradingToneTransform(OCIO.GRADING_LOG) vals = OCIO.GradingTone(OCIO.GRADING_LOG) vals.midtones = OCIO.GradingRGBMSW(1.6, 0.5, 1.5, 0.7, 0.1, 1.2) vals.scontrast = 1.4 gtt.setValue(vals) cfg = OCIO.Config().CreateRaw() proc = cfg.getProcessor(gtt) cpu = proc.getDefaultCPUProcessor() # Apply the transform and keep the result. pixel = [0.48, 0.18, 0.18] rgb1 = cpu.applyRGB(pixel) # The processing did something. self.assertAlmostEqual(0.645454, rgb1[0], delta=1e-5) self.assertAlmostEqual(0.076331, rgb1[1], delta=1e-5) self.assertAlmostEqual(0.130564, rgb1[2], delta=1e-5) # Invert. gtt.setDirection(OCIO.TRANSFORM_DIR_INVERSE) proc = cfg.getProcessor(gtt) cpu = proc.getDefaultCPUProcessor() pixel2 = cpu.applyRGB(rgb1) # Invert back to original value. self.assertAlmostEqual(pixel[0], pixel2[0], delta=1e-5) self.assertAlmostEqual(pixel[1], pixel2[1], delta=1e-5) self.assertAlmostEqual(pixel[2], pixel2[2], delta=1e-5)
def test_tone(self): """ Test the GradingTone struct creation. """ rgbmB = OCIO.GradingRGBMSW(1, 1, 1, 1, 0.4, 0.4) rgbmW = OCIO.GradingRGBMSW(1, 1, 1, 1, 0.4, 0.5) rgbmS = OCIO.GradingRGBMSW(1, 1, 1, 1, 0.5, 0) rgbmH = OCIO.GradingRGBMSW(1, 1, 1, 1, 0.3, 1) rgbmM = OCIO.GradingRGBMSW(1, 1, 1, 1, 0.4, 0.6) # Constructor. tone = OCIO.GradingTone(OCIO.GRADING_LOG) assertEqualRGBMSW(self, rgbmB, tone.blacks) assertEqualRGBMSW(self, rgbmW, tone.whites) assertEqualRGBMSW(self, rgbmS, tone.shadows) assertEqualRGBMSW(self, rgbmH, tone.highlights) assertEqualRGBMSW(self, rgbmM, tone.midtones) self.assertEqual(1, tone.scontrast) with self.assertRaises(AttributeError): OCIO.GradingTone(OCIO.TRANSFOR_DIRECTION_FORWARD) with self.assertRaises(TypeError): OCIO.GradingTone(0) newMidtones = OCIO.GradingRGBMSW(1.1, 1.2, 1.3, 1, 0.2, 1.1) tone.midtones = newMidtones assertEqualRGBM(self, newMidtones, tone.midtones)
def test_rgbmsw(self): """ Test the GradingRGBMSW struct. """ # Constructor without parameters. rgbm1 = OCIO.GradingRGBMSW() self.assertEqual(1, rgbm1.red) self.assertEqual(1, rgbm1.green) self.assertEqual(1, rgbm1.blue) self.assertEqual(1, rgbm1.master) self.assertEqual(0, rgbm1.start) self.assertEqual(1, rgbm1.width) # Constructor with parameters. rgbm2 = OCIO.GradingRGBMSW(1, 2, 3, 4, 5, 6) self.assertEqual(1, rgbm2.red) self.assertEqual(2, rgbm2.green) self.assertEqual(3, rgbm2.blue) self.assertEqual(4, rgbm2.master) self.assertEqual(5, rgbm2.start) self.assertEqual(6, rgbm2.width) rgbm2.red += 1 rgbm2.green += 1 rgbm2.blue += 1 rgbm2.master += 1 rgbm2.start += 1 rgbm2.width += 1 self.assertEqual(2, rgbm2.red) self.assertEqual(3, rgbm2.green) self.assertEqual(4, rgbm2.blue) self.assertEqual(5, rgbm2.master) self.assertEqual(6, rgbm2.start) self.assertEqual(7, rgbm2.width) self.assertNotEqual(rgbm1, rgbm2) rgbm1.red = rgbm2.red rgbm1.green = rgbm2.green rgbm1.blue = rgbm2.blue rgbm1.master = rgbm2.master rgbm1.start = rgbm2.start rgbm1.width = rgbm2.width assertEqualRGBM(self, rgbm1, rgbm2) rgbm1.red += 1 with self.assertRaises(AssertionError): assertEqualRGBMSW(self, rgbm1, rgbm2) rgbm3 = OCIO.GradingRGBMSW() rgbm2 = rgbm3 self.assertEqual(1, rgbm2.red) rgbm3.red = 2 self.assertEqual(2, rgbm2.red) rgbm2.red = 0 self.assertEqual(0, rgbm3.red) rgbm4 = OCIO.GradingRGBMSW(2, 3) self.assertEqual(1, rgbm4.red) self.assertEqual(1, rgbm4.green) self.assertEqual(1, rgbm4.blue) self.assertEqual(1, rgbm4.master) self.assertEqual(2, rgbm4.start) self.assertEqual(3, rgbm4.width) with self.assertRaises(TypeError): OCIO.GradingRGBMSW(0) with self.assertRaises(TypeError): OCIO.GradingRGBMSW(0, 0, 0)