def test_constructor_wrong_parameter_type(self): """ Test AllocationTransform constructor with a wrong parameter type. """ for invalid in (None, 1): with self.assertRaises(TypeError): allo_tr = OCIO.AllocationTransform(invalid)
def test_values(self): """ Test setValue() and getValue(). """ gct = OCIO.GradingRGBCurveTransform(OCIO.GRADING_LOG) gct.setValue(self.valDefaultLin) assertEqualRGBCurve(self, gct.getValue(), self.valDefaultLin)
def test_constructor_wrong_parameter_type(self): """ Test FileTransform constructor with a wrong parameter type. """ for invalid in (None, 1): with self.assertRaises(TypeError): file_tr = OCIO.ExponentTransform(invalid)
def test_constructor_wrong_parameter_type(self): """ Test ExposureContrastTransform constructor with a wrong parameter type. """ for invalid in (None, 1, self.TEST_ID): with self.assertRaises(TypeError): exp_tr = OCIO.ExponentWithLinearTransform(invalid)
def test_constructor_wrong_parameter_type(self): """ Test FixedFunctionTransform constructor with a wrong parameter type. """ for invalid in (None, 1): with self.assertRaises(TypeError): fixed_func_tr = OCIO.FixedFunctionTransform(invalid)
def test_constructor_with_keyword(self): """ Test ColorSpace constructor with keywords and validate its values. """ # With keywords in their proper order. cs = OCIO.ColorSpace(name='test', family='ocio family', encoding='scene-linear', equalityGroup='My_Equality', description='This is a test colourspace!', bitDepth=OCIO.BIT_DEPTH_F32, isData=False, allocation=OCIO.ALLOCATION_LG2, allocationVars=[0.0, 1.0]) self.assertEqual(cs.getName(), 'test') self.assertEqual(cs.getFamily(), 'ocio family') self.assertEqual(cs.getEncoding(), 'scene-linear') self.assertEqual(cs.getEqualityGroup(), 'My_Equality') self.assertEqual(cs.getDescription(), 'This is a test colourspace!') self.assertEqual(cs.getBitDepth(), OCIO.BIT_DEPTH_F32) self.assertFalse(cs.isData()) self.assertEqual(cs.getAllocation(), OCIO.ALLOCATION_LG2) self.assertEqual(cs.getAllocationVars(), [0.0, 1.0]) # With keyword not in their proper order. cs2 = OCIO.ColorSpace(family='ocio family', name='test', isData=False, allocationVars=[0.0, 1.0], allocation=OCIO.ALLOCATION_LG2, description='This is a test colourspace!', equalityGroup='My_Equality', encoding='scene-linear', bitDepth=OCIO.BIT_DEPTH_F32) self.assertEqual(cs2.getName(), 'test') self.assertEqual(cs2.getFamily(), 'ocio family') self.assertEqual(cs2.getEncoding(), 'scene-linear') self.assertEqual(cs2.getEqualityGroup(), 'My_Equality') self.assertEqual(cs2.getDescription(), 'This is a test colourspace!') self.assertEqual(cs2.getBitDepth(), OCIO.BIT_DEPTH_F32) self.assertFalse(cs2.isData()) self.assertEqual(cs2.getAllocation(), OCIO.ALLOCATION_LG2) self.assertEqual(cs2.getAllocationVars(), [0.0, 1.0])
def make_raw_color_space(): cs = OCIO.ColorSpace(name='raw') cs.setDescription("raw") cs.setBitDepth(OCIO.Constants.BIT_DEPTH_F32) cs.setAllocation(OCIO.Constants.ALLOCATION_UNIFORM) cs.setAllocationVars([0, 1]) return cs
def test_interface(self): OCIO.ClearAllCaches() #self.assertEqual("1.0.8", OCIO.version) #self.assertEqual(16779264, OCIO.hexversion) self.assertEqual(OCIO.Constants.LOGGING_LEVEL_INFO, OCIO.GetLoggingLevel()) OCIO.SetLoggingLevel(OCIO.Constants.LOGGING_LEVEL_NONE) self.assertEqual(OCIO.Constants.LOGGING_LEVEL_NONE, OCIO.GetLoggingLevel()) foo = OCIO.GetCurrentConfig() self.assertEqual(self.FOO, foo.serialize()) OCIO.SetLoggingLevel(OCIO.Constants.LOGGING_LEVEL_INFO) bar = OCIO.Config().CreateFromStream(foo.serialize()) OCIO.SetCurrentConfig(bar) wee = OCIO.GetCurrentConfig()
def aces_rec709_output(): """ACES Rec. 709 output""" col_space = OCIO.ColorSpace(name="Output - ACES Rec. 709", family="Output") col_space.setDescription("ACES Rec. 709 output transform") col_space.setBitDepth(OCIO.Constants.BIT_DEPTH_F32) group_xform = OCIO.GroupTransform() group_xform.push_back( OCIO.FileTransform("Log2_48_nits_Shaper_to_linear.spi1d", interpolation=OCIO.Constants.INTERP_LINEAR, direction=OCIO.Constants.TRANSFORM_DIR_INVERSE)) group_xform.push_back( OCIO.FileTransform("Log2_48_nits_Shaper.RRT.Rec.709.spi3d", interpolation=OCIO.Constants.INTERP_TETRAHEDRAL)) col_space.setTransform(group_xform, OCIO.Constants.COLORSPACE_DIR_FROM_REFERENCE) group_xform = OCIO.GroupTransform() group_xform.push_back( OCIO.FileTransform("InvRRT.Rec.709.Log2_48_nits_Shaper.spi3d", interpolation=OCIO.Constants.INTERP_TETRAHEDRAL)) group_xform.push_back( OCIO.FileTransform("Log2_48_nits_Shaper_to_linear.spi1d", interpolation=OCIO.Constants.INTERP_LINEAR, direction=OCIO.Constants.TRANSFORM_DIR_FORWARD)) col_space.setTransform(group_xform, OCIO.Constants.COLORSPACE_DIR_TO_REFERENCE) return col_space
def test_default_contructor(self): """ Test the constructor. """ for ref_type in OCIO.ReferenceSpaceType.__members__.values(): vt = OCIO.ViewTransform(ref_type) self.assertEqual(vt.getReferenceSpaceType(), ref_type) self.assertEqual(vt.getName(), '') self.assertEqual(vt.getFamily(), '') self.assertEqual(vt.getDescription(), '') self.assertEqual(len(vt.getCategories()), 0) for dir in OCIO.ViewTransformDirection.__members__.values(): self.assertEqual(vt.getTransform(dir), None) vt = OCIO.ViewTransform() self.assertEqual(vt.getReferenceSpaceType(), OCIO.REFERENCE_SPACE_SCENE) vt = OCIO.ViewTransform(referenceSpace=OCIO.REFERENCE_SPACE_DISPLAY) self.assertEqual(vt.getReferenceSpaceType(), OCIO.REFERENCE_SPACE_DISPLAY) vt = OCIO.ViewTransform(name='test') self.assertEqual(vt.getName(), 'test') vt = OCIO.ViewTransform(family='family') self.assertEqual(vt.getFamily(), 'family') vt = OCIO.ViewTransform(description='description') self.assertEqual(vt.getDescription(), 'description') vt = OCIO.ViewTransform(categories=['cat1', 'cat2']) cats = vt.getCategories() self.assertEqual(len(cats), 2) self.assertEqual(cats[0], 'cat1') self.assertEqual(cats[1], 'cat2') mat = OCIO.MatrixTransform() vt = OCIO.ViewTransform(toReference=mat) self.assertTrue( vt.getTransform(OCIO.VIEWTRANSFORM_DIR_TO_REFERENCE).equals(mat)) vt = OCIO.ViewTransform(fromReference=mat) self.assertTrue( vt.getTransform(OCIO.VIEWTRANSFORM_DIR_FROM_REFERENCE).equals(mat))
def test_family(self): """ Test get/setFamily. """ vt = OCIO.ViewTransform() self.assertEqual(vt.getFamily(), '') vt.setFamily('test family') self.assertEqual(vt.getFamily(), 'test family')
def acesproxy_colorspace(): """ACESproxy""" col_space = OCIO.ColorSpace(name="ACES - ACESproxy", family="ACES") col_space.setDescription("ACESproxy colorspace, gamma and primaries") col_space.setBitDepth(OCIO.Constants.BIT_DEPTH_F32) col_space.setAllocationVars([0, 1]) col_space.setAllocation(OCIO.Constants.ALLOCATION_UNIFORM) group_xform = OCIO.GroupTransform() group_xform.push_back( OCIO.FileTransform("ACESproxy_to_linear.spi1d", interpolation=OCIO.Constants.INTERP_LINEAR, direction=OCIO.Constants.TRANSFORM_DIR_FORWARD)) group_xform.push_back( OCIO.FileTransform("AP1_to_AP0.spimtx", direction=OCIO.Constants.TRANSFORM_DIR_FORWARD)) col_space.setTransform(group_xform, OCIO.Constants.COLORSPACE_DIR_TO_REFERENCE) return col_space
def test_constructor_positional(self): # Positional args builtin_tr = OCIO.BuiltinTransform(self.EXAMPLE_STYLE, OCIO.TRANSFORM_DIR_FORWARD) self.assertEqual(builtin_tr.getStyle(), self.EXAMPLE_STYLE) self.assertEqual(builtin_tr.getDescription(), self.EXAMPLE_DESC) self.assertEqual(builtin_tr.getDirection(), OCIO.TRANSFORM_DIR_FORWARD)
def test_constructor_with_positional(self): """ Test Look constructor without keywords and validate its values. """ exp_tr = OCIO.ExponentTransform() inv_exp_tr = OCIO.ExponentTransform() look = OCIO.Look('coollook', 'somespace', exp_tr, inv_exp_tr, 'this is a test') self.assertEqual(look.getName(), 'coollook') self.assertEqual(look.getProcessSpace(), 'somespace') self.assertIsInstance(look.getTransform(), type(exp_tr)) self.assertIsInstance(look.getInverseTransform(), type(inv_exp_tr)) self.assertEqual(look.getDescription(), 'this is a test')
def test_display_view_transform(self): """ Test the get/setDisplayViewTransform functions. """ pipeline = OCIO.LegacyViewingPipeline() self.assertEqual(pipeline.getDisplayViewTransform(), None) dvt = OCIO.DisplayViewTransform(src='test', display='display', view='view') pipeline.setDisplayViewTransform(dvt) self.assertEqual(pipeline.getDisplayViewTransform().getSrc(), 'test') pipeline.setDisplayViewTransform(None) self.assertEqual(pipeline.getDisplayViewTransform(), None) with self.assertRaises(TypeError): pipeline.setDisplayViewTransform() with self.assertRaises(TypeError): pipeline.setDisplayViewTransform(OCIO.TRANSFORM_DIR_FORWARD) with self.assertRaises(TypeError): pipeline.setDisplayViewTransform(False)
def test_interface(self): desc = OCIO.GpuShaderDesc() desc.setLanguage(OCIO.Constants.GPU_LANGUAGE_GLSL_1_3) self.assertEqual(OCIO.Constants.GPU_LANGUAGE_GLSL_1_3, desc.getLanguage()) desc.setFunctionName("foo123") self.assertEqual("foo123", desc.getFunctionName()) desc.finalize() self.assertEqual("glsl_1.3 foo123 ocio outColor $664fefaf8040c8fae4a3b56f2239872d", desc.getCacheID())
def test_interface(self): desc = OCIO.GpuShaderDesc() desc.setLanguage(OCIO.Constants.GPU_LANGUAGE_GLSL_1_3) self.assertEqual(OCIO.Constants.GPU_LANGUAGE_GLSL_1_3, desc.getLanguage()) desc.setFunctionName("foo123") self.assertEqual("foo123", desc.getFunctionName()) desc.setLut3DEdgeLen(32) self.assertEqual(32, desc.getLut3DEdgeLen()) self.assertEqual("glsl_1.3 foo123 32", desc.getCacheID())
def test_constructor_with_keyword(self): """ Test LogTransform constructor with keywords and validate its values. """ # With keywords in their proper order. log_tr = OCIO.LogTransform(base=self.TEST_BASE, direction=self.TEST_DIRECTION) self.assertEqual(log_tr.getBase(), self.TEST_BASE) self.assertEqual(log_tr.getDirection(), self.TEST_DIRECTION) # With keywords not in their proper order. log_tr2 = OCIO.LogTransform(direction=self.TEST_DIRECTION, base=self.TEST_BASE) self.assertEqual(log_tr2.getBase(), self.TEST_BASE) self.assertEqual(log_tr2.getDirection(), self.TEST_DIRECTION)
def test_constructor_keyword(self): # Keyword args in order builtin_tr1 = OCIO.BuiltinTransform( style=self.EXAMPLE_STYLE, direction=OCIO.TRANSFORM_DIR_FORWARD) self.assertEqual(builtin_tr1.getStyle(), self.EXAMPLE_STYLE) self.assertEqual(builtin_tr1.getDescription(), self.EXAMPLE_DESC) self.assertEqual(builtin_tr1.getDirection(), OCIO.TRANSFORM_DIR_FORWARD) # Keyword args out of order builtin_tr2 = OCIO.BuiltinTransform( direction=OCIO.TRANSFORM_DIR_FORWARD, style=self.EXAMPLE_STYLE) self.assertEqual(builtin_tr2.getStyle(), self.EXAMPLE_STYLE) self.assertEqual(builtin_tr2.getDescription(), self.EXAMPLE_DESC) self.assertEqual(builtin_tr2.getDirection(), OCIO.TRANSFORM_DIR_FORWARD)
def test_dynamic(self): """ Test isDynamic() and makeDynamic(). """ gct = OCIO.GradingRGBCurveTransform(OCIO.GRADING_LOG) self.assertEqual(gct.isDynamic(), False) gct.makeDynamic() self.assertEqual(gct.isDynamic(), True)
def test_name(self): """ Test get/setName. """ vt = OCIO.ViewTransform() self.assertEqual(vt.getName(), '') vt.setName('test name') self.assertEqual(vt.getName(), 'test name')
def test_description(self): """ Test get/setDescription. """ vt = OCIO.ViewTransform() self.assertEqual(vt.getDescription(), '') vt.setDescription('test description') self.assertEqual(vt.getDescription(), 'test description')
def test_aliases(self): """ Test NamedTransform aliases. """ named_tr = OCIO.NamedTransform() self.assertEqual(named_tr.getName(), '') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 0) named_tr.addAlias('alias1') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 1) self.assertEqual(aliases[0], 'alias1') named_tr.addAlias('alias2') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 2) self.assertEqual(aliases[0], 'alias1') self.assertEqual(aliases[1], 'alias2') # Alias is already there, not added. named_tr.addAlias('Alias2') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 2) self.assertEqual(aliases[0], 'alias1') self.assertEqual(aliases[1], 'alias2') # Name might remove an alias. named_tr.setName('name') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 2) named_tr.setName('alias2') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 1) self.assertEqual(aliases[0], 'alias1') # Removing an alias. named_tr.addAlias('to remove') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 2) named_tr.removeAlias('not found') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 2) named_tr.removeAlias('to REMOVE') aliases = named_tr.getAliases() self.assertEqual(len(aliases), 1) named_tr.clearAliases() aliases = named_tr.getAliases() self.assertEqual(len(aliases), 0)
def test_interface(self): lk = OCIO.Look() lk.setName("coollook") self.assertEqual("coollook", lk.getName()) lk.setProcessSpace("somespace") self.assertEqual("somespace", lk.getProcessSpace()) et = OCIO.ExponentTransform() et.setValue([0.1, 0.2, 0.3, 0.4]) lk.setTransform(et) oet = lk.getTransform() vals = oet.getValue() self.assertAlmostEqual(0.2, vals[1], delta=1e-8) iet = OCIO.ExponentTransform() iet.setValue([-0.1, -0.2, -0.3, -0.4]) lk.setInverseTransform(iet) ioet = lk.getInverseTransform() vals2 = ioet.getValue() self.assertAlmostEqual(-0.2, vals2[1], delta=1e-8)
def test_constructor_with_positional(self): """ Test LogTransform constructor without keywords and validate its values. """ log_tr = OCIO.LogTransform(self.TEST_BASE, self.TEST_DIRECTION) self.assertEqual(log_tr.getBase(), self.TEST_BASE) self.assertEqual(log_tr.getDirection(), self.TEST_DIRECTION)
def test_interface(self): rt = OCIO.RangeTransform() self.assertEqual(rt.hasMinInValue(), False) self.assertEqual(rt.hasMaxInValue(), False) self.assertEqual(rt.hasMinOutValue(), False) self.assertEqual(rt.hasMaxOutValue(), False) rt.setMinInValue(0.12301234) self.assertEqual(0.12301234, rt.getMinInValue()) self.assertEqual(rt.hasMinInValue(), True) rt.setMaxInValue(0.12401234) self.assertEqual(0.12401234, rt.getMaxInValue()) self.assertEqual(rt.hasMaxInValue(), True) rt.setMinOutValue(0.12501234) self.assertEqual(0.12501234, rt.getMinOutValue()) self.assertEqual(rt.hasMinOutValue(), True) rt.setMaxOutValue(0.12601234) self.assertEqual(0.12601234, rt.getMaxOutValue()) self.assertEqual(rt.hasMaxOutValue(), True) self.assertEqual(0.12301234, rt.getMinInValue()) self.assertEqual(0.12401234, rt.getMaxInValue()) self.assertEqual(0.12501234, rt.getMinOutValue()) self.assertEqual(0.12601234, rt.getMaxOutValue()) self.assertEqual(rt.hasMinInValue(), True) self.assertEqual(rt.hasMaxInValue(), True) self.assertEqual(rt.hasMinOutValue(), True) self.assertEqual(rt.hasMaxOutValue(), True) rt.unsetMinInValue() self.assertEqual(rt.hasMinInValue(), False) self.assertEqual(rt.hasMaxInValue(), True) self.assertEqual(rt.hasMinOutValue(), True) self.assertEqual(rt.hasMaxOutValue(), True) rt.unsetMaxInValue() self.assertEqual(rt.hasMinInValue(), False) self.assertEqual(rt.hasMaxInValue(), False) self.assertEqual(rt.hasMinOutValue(), True) self.assertEqual(rt.hasMaxOutValue(), True) rt.unsetMinOutValue() self.assertEqual(rt.hasMinInValue(), False) self.assertEqual(rt.hasMaxInValue(), False) self.assertEqual(rt.hasMinOutValue(), False) self.assertEqual(rt.hasMaxOutValue(), True) rt.unsetMaxOutValue() self.assertEqual(rt.hasMinInValue(), False) self.assertEqual(rt.hasMaxInValue(), False) self.assertEqual(rt.hasMinOutValue(), False) self.assertEqual(rt.hasMaxOutValue(), False)
def test_aliases(self): """ Test NamedTransform aliases. """ cs = OCIO.ColorSpace() self.assertEqual(cs.getName(), '') aliases = cs.getAliases() self.assertEqual(len(aliases), 0) cs.addAlias('alias1') aliases = cs.getAliases() self.assertEqual(len(aliases), 1) self.assertEqual(aliases[0], 'alias1') cs.addAlias('alias2') aliases = cs.getAliases() self.assertEqual(len(aliases), 2) self.assertEqual(aliases[0], 'alias1') self.assertEqual(aliases[1], 'alias2') # Alias is already there, not added. cs.addAlias('Alias2') aliases = cs.getAliases() self.assertEqual(len(aliases), 2) self.assertEqual(aliases[0], 'alias1') self.assertEqual(aliases[1], 'alias2') # Name might remove an alias. cs.setName('name') aliases = cs.getAliases() self.assertEqual(len(aliases), 2) cs.setName('alias2') aliases = cs.getAliases() self.assertEqual(len(aliases), 1) self.assertEqual(aliases[0], 'alias1') # Removing an alias. cs.addAlias('to remove') aliases = cs.getAliases() self.assertEqual(len(aliases), 2) cs.removeAlias('not found') aliases = cs.getAliases() self.assertEqual(len(aliases), 2) cs.removeAlias('to REMOVE') aliases = cs.getAliases() self.assertEqual(len(aliases), 1) cs.clearAliases() aliases = cs.getAliases() self.assertEqual(len(aliases), 0)
def test_style(self): """ Test setStyle() and getStyle(). """ gpt = OCIO.GradingPrimaryTransform(OCIO.GRADING_LOG) for style in OCIO.GradingStyle.__members__.values(): gpt.setStyle(style) self.assertEqual(gpt.getStyle(), style)
def test_data_bypass(self): """ Test setDataBypass() and getDataBypass(). """ ct = OCIO.ColorSpaceTransform() ct.setDataBypass(False) self.assertEqual(False, ct.getDataBypass()) ct.setDataBypass(True) self.assertEqual(True, ct.getDataBypass())
def style_to_display_colorspace(style, describe=ColorspaceDescriptionStyle. OPENCOLORIO, **kwargs): """ Creates an *OpenColorIO* display colorspace for given style. Parameters ---------- style : unicode *OpenColorIO* builtin transform style describe : int, optional Any value from the :class:`opencolorio_config_aces.ColorspaceDescriptionStyle` enum. Other Parameters ---------------- \\**kwargs : dict, optional Keywords arguments for the :func:`opencolorio_config_aces.colorspace_factory` definition. Returns ------- ColorSpace *OpenColorIO* display colorspace for given style. """ import PyOpenColorIO as ocio kwargs.setdefault('family', ACES_CONFIG_DISPLAY_FAMILY) name = beautify_display_name(style) builtin_transform = ocio.BuiltinTransform(style) description = None if describe != ColorspaceDescriptionStyle.NONE: description = [] if describe in (ColorspaceDescriptionStyle.OPENCOLORIO, ColorspaceDescriptionStyle.SHORT_UNION, ColorspaceDescriptionStyle.LONG_UNION): description.append(builtin_transform.getDescription()) description = '\n'.join(description) settings = { 'name': name, 'family': ACES_CONFIG_DISPLAY_FAMILY, 'description': description, 'from_reference': builtin_transform, 'reference_space': ocio.REFERENCE_SPACE_DISPLAY, } settings.update(kwargs) colorspace = colorspace_factory(**settings) return colorspace