diff --git a/docs/tutorials/otio-serialized-schema-only-fields.md b/docs/tutorials/otio-serialized-schema-only-fields.md index 814b5ae1d..09a4c2b25 100644 --- a/docs/tutorials/otio-serialized-schema-only-fields.md +++ b/docs/tutorials/otio-serialized-schema-only-fields.md @@ -31,6 +31,15 @@ parameters: ## Module: opentimelineio.core +### Color.1 + +parameters: +- *a* +- *b* +- *g* +- *name* +- *r* + ### Composable.1 parameters: diff --git a/docs/tutorials/otio-serialized-schema.md b/docs/tutorials/otio-serialized-schema.md index 8627c436c..1b9dcd0b8 100644 --- a/docs/tutorials/otio-serialized-schema.md +++ b/docs/tutorials/otio-serialized-schema.md @@ -56,6 +56,27 @@ parameters: ## Module: opentimelineio.core +### Color.1 + +*full module path*: `opentimelineio.core.Color` + +*documentation*: + +``` +:class:`Color` is a definition of red, green, blue, and alpha double floating point values, allowing + conversion between different formats. To be considered interoperable, the sRGB transfer function +encoded values, ranging between zero and one, are expected to be accurate to within 1/255 of the +intended value. Round-trip conversions may not be guaranteed outside that. This Color class is meant + for use in user interface elements, like marker or clip coloring, NOT for image pixel content. +``` + +parameters: +- *a*: +- *b*: +- *g*: +- *name*: +- *r*: + ### Composable.1 *full module path*: `opentimelineio.core.Composable` diff --git a/src/opentimelineio/deserialization.cpp b/src/opentimelineio/deserialization.cpp index 0e99e8af6..952a89e4c 100644 --- a/src/opentimelineio/deserialization.cpp +++ b/src/opentimelineio/deserialization.cpp @@ -590,13 +590,13 @@ SerializableObject::Reader::_decode(_Resolver& resolver) } else if (schema_name_and_version == "Color.1") { - float r, g, b, a; + double r, g, b, a; std::string name; - return _fetch("r", &r) + return _fetch("name", &name) + && _fetch("r", &r) && _fetch("g", &g) && _fetch("b", &b) && _fetch("a", &a) - && _fetch("name", &name) ? std::any(Color(r, g, b, a, name)) : std::any(); } diff --git a/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py b/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py index ca62f79bd..3a33763d2 100644 --- a/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py +++ b/src/py-opentimelineio/opentimelineio/console/autogen_serialized_datamodel.py @@ -159,6 +159,7 @@ def _generate_model_for_module(mod, classes, modules): otio.opentime.RationalTime, otio.opentime.TimeRange, otio.opentime.TimeTransform, + otio.core.Color ) ) ] diff --git a/src/py-opentimelineio/opentimelineio/core/_core_utils.py b/src/py-opentimelineio/opentimelineio/core/_core_utils.py index d58791a67..e79965460 100644 --- a/src/py-opentimelineio/opentimelineio/core/_core_utils.py +++ b/src/py-opentimelineio/opentimelineio/core/_core_utils.py @@ -26,6 +26,7 @@ "opentime.RationalTime", "opentime.TimeRange", "opentime.TimeTransform", + "opentimelineio.core.Color", "opentimelineio.core.SerializableObject" ) diff --git a/tests/test_json_backend.py b/tests/test_json_backend.py index da61274d5..5f9c46ed0 100755 --- a/tests/test_json_backend.py +++ b/tests/test_json_backend.py @@ -47,6 +47,10 @@ def test_timetransform(self): tt = otio.opentime.TimeTransform() self.check_against_baseline(tt, "empty_timetransform") + def test_color(self): + tt = otio.core.Color() + self.check_against_baseline(tt, "empty_color") + def test_track(self): st = otio.schema.Track( name="test_track",