From b0c553f554dbd5f3312cf65f21a7ddfe2976abb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Achard?= Date: Mon, 20 Mar 2023 17:12:36 +0000 Subject: [PATCH 1/2] Fix GradingPrimary bypass, support comparison in Python MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Achard --- include/OpenColorIO/OpenColorTransforms.h | 14 ++++ .../ops/gradingprimary/GradingPrimary.cpp | 7 +- .../ops/gradingprimary/GradingPrimary.h | 5 -- .../ops/gradingrgbcurve/GradingBSplineCurve.h | 6 -- .../ops/gradingrgbcurve/GradingRGBCurve.h | 2 - src/OpenColorIO/ops/gradingtone/GradingTone.h | 5 -- src/bindings/python/PyGradingData.cpp | 64 +++++++++++++++++++ .../gradingprimary/GradingPrimary_tests.cpp | 38 +++++++++++ tests/python/GradingDataTest.py | 50 ++++++++++++++- tests/python/GradingPrimaryTransformTest.py | 8 +-- 10 files changed, 173 insertions(+), 26 deletions(-) diff --git a/include/OpenColorIO/OpenColorTransforms.h b/include/OpenColorIO/OpenColorTransforms.h index 9d70664c52..d4587149ec 100644 --- a/include/OpenColorIO/OpenColorTransforms.h +++ b/include/OpenColorIO/OpenColorTransforms.h @@ -453,6 +453,8 @@ struct OCIOEXPORT GradingRGBM double m_master{ 0. }; }; +extern OCIOEXPORT bool operator==(const GradingRGBM & lhs, const GradingRGBM & rhs); +extern OCIOEXPORT bool operator!=(const GradingRGBM & lhs, const GradingRGBM & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingRGBM &); /// Grading primary values. @@ -488,6 +490,8 @@ struct OCIOEXPORT GradingPrimary static double NoClampWhite(); }; +extern OCIOEXPORT bool operator==(const GradingPrimary & lhs, const GradingPrimary & rhs); +extern OCIOEXPORT bool operator!=(const GradingPrimary & lhs, const GradingPrimary & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingPrimary &); /// 2D control point used by \ref GradingBSplineCurve. @@ -499,6 +503,8 @@ struct OCIOEXPORT GradingControlPoint float m_y{ 0.f }; }; +extern OCIOEXPORT bool operator==(const GradingControlPoint & lhs, const GradingControlPoint & rhs); +extern OCIOEXPORT bool operator!=(const GradingControlPoint & lhs, const GradingControlPoint & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingControlPoint &); /// A BSpline curve defined with \ref GradingControlPoint. @@ -530,6 +536,8 @@ class OCIOEXPORT GradingBSplineCurve GradingBSplineCurve() = default; }; +extern OCIOEXPORT bool operator==(const GradingBSplineCurve & lhs, const GradingBSplineCurve & rhs); +extern OCIOEXPORT bool operator!=(const GradingBSplineCurve & lhs, const GradingBSplineCurve & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingBSplineCurve &); /** @@ -559,6 +567,8 @@ class OCIOEXPORT GradingRGBCurve GradingRGBCurve() = default; }; +extern OCIOEXPORT bool operator==(const GradingRGBCurve & lhs, const GradingRGBCurve & rhs); +extern OCIOEXPORT bool operator!=(const GradingRGBCurve & lhs, const GradingRGBCurve & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingRGBCurve &); /** @@ -602,6 +612,8 @@ struct OCIOEXPORT GradingRGBMSW double m_width { 1. }; // Or pivot for shadows and highlights. }; +extern OCIOEXPORT bool operator==(const GradingRGBMSW & lhs, const GradingRGBMSW & rhs); +extern OCIOEXPORT bool operator!=(const GradingRGBMSW & lhs, const GradingRGBMSW & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingRGBMSW &); /// Grading tone values. @@ -641,6 +653,8 @@ struct OCIOEXPORT GradingTone double m_scontrast{ 1.0 }; }; +extern OCIOEXPORT bool operator==(const GradingTone & lhs, const GradingTone & rhs); +extern OCIOEXPORT bool operator!=(const GradingTone & lhs, const GradingTone & rhs); extern OCIOEXPORT std::ostream & operator<<(std::ostream &, const GradingTone &); /** diff --git a/src/OpenColorIO/ops/gradingprimary/GradingPrimary.cpp b/src/OpenColorIO/ops/gradingprimary/GradingPrimary.cpp index 8f70916b22..788640b7f7 100644 --- a/src/OpenColorIO/ops/gradingprimary/GradingPrimary.cpp +++ b/src/OpenColorIO/ops/gradingprimary/GradingPrimary.cpp @@ -105,7 +105,8 @@ void GradingPrimaryPreRender::update(GradingStyle style, TransformDirection dir, const GradingPrimary & v) noexcept { - m_localBypass = v.m_clampBlack == GradingPrimary::NoClampBlack() && + m_localBypass = v.m_saturation == 1. && + v.m_clampBlack == GradingPrimary::NoClampBlack() && v.m_clampWhite == GradingPrimary::NoClampWhite(); switch (style) @@ -189,7 +190,7 @@ void GradingPrimaryPreRender::update(GradingStyle style, break; } } - m_isPowerIdentity = m_contrast[0] == 1.0f || m_contrast[1] == 1.0f || + m_isPowerIdentity = m_contrast[0] == 1.0f && m_contrast[1] == 1.0f && m_contrast[2] == 1.0f; m_pivot = 0.18 * std::pow(2., v.m_pivot); m_localBypass = m_localBypass && m_isPowerIdentity && @@ -249,7 +250,7 @@ void GradingPrimaryPreRender::update(GradingStyle style, break; } } - m_isPowerIdentity = m_gamma[0] == 1.0f || m_gamma[1] == 1.0f || m_gamma[2] == 1.0f; + m_isPowerIdentity = m_gamma[0] == 1.0f && m_gamma[1] == 1.0f && m_gamma[2] == 1.0f; m_localBypass = m_localBypass && m_isPowerIdentity && m_slope[0] == 1.f && m_slope[1] == 1.f && m_slope[2] == 1.f && m_offset[0] == 0.f && m_offset[1] == 0.f && m_offset[2] == 0.f; diff --git a/src/OpenColorIO/ops/gradingprimary/GradingPrimary.h b/src/OpenColorIO/ops/gradingprimary/GradingPrimary.h index 9a47be5a53..405b84d1da 100644 --- a/src/OpenColorIO/ops/gradingprimary/GradingPrimary.h +++ b/src/OpenColorIO/ops/gradingprimary/GradingPrimary.h @@ -62,11 +62,6 @@ struct GradingPrimaryPreRender bool m_localBypass{ false }; }; -bool operator==(const GradingRGBM & lhs, const GradingRGBM & rhs); -bool operator!=(const GradingRGBM & lhs, const GradingRGBM & rhs); -bool operator==(const GradingPrimary & lhs, const GradingPrimary & rhs); -bool operator!=(const GradingPrimary & lhs, const GradingPrimary & rhs); - } // namespace OCIO_NAMESPACE #endif diff --git a/src/OpenColorIO/ops/gradingrgbcurve/GradingBSplineCurve.h b/src/OpenColorIO/ops/gradingrgbcurve/GradingBSplineCurve.h index 2c4fe4aba7..9944564051 100644 --- a/src/OpenColorIO/ops/gradingrgbcurve/GradingBSplineCurve.h +++ b/src/OpenColorIO/ops/gradingrgbcurve/GradingBSplineCurve.h @@ -126,12 +126,6 @@ class GradingBSplineCurveImpl : public GradingBSplineCurve bool IsGradingCurveIdentity(const ConstGradingBSplineCurveRcPtr & curve); -bool operator==(const GradingControlPoint & lhs, const GradingControlPoint & rhs); -bool operator!=(const GradingControlPoint & lhs, const GradingControlPoint & rhs); -bool operator==(const GradingBSplineCurve & lhs, const GradingBSplineCurve & rhs); -bool operator!=(const GradingBSplineCurve & lhs, const GradingBSplineCurve & rhs); - - } // namespace OCIO_NAMESPACE #endif // INCLUDED_OCIO_GRADINGBSPLINECURVE_H diff --git a/src/OpenColorIO/ops/gradingrgbcurve/GradingRGBCurve.h b/src/OpenColorIO/ops/gradingrgbcurve/GradingRGBCurve.h index 67b6ea5a12..3a7c76dfee 100644 --- a/src/OpenColorIO/ops/gradingrgbcurve/GradingRGBCurve.h +++ b/src/OpenColorIO/ops/gradingrgbcurve/GradingRGBCurve.h @@ -43,8 +43,6 @@ class GradingRGBCurveImpl : public GradingRGBCurve typedef OCIO_SHARED_PTR ConstGradingRGBCurveImplRcPtr; typedef OCIO_SHARED_PTR GradingRGBCurveImplRcPtr; -bool operator==(const GradingRGBCurve & lhs, const GradingRGBCurve & rhs); -bool operator!=(const GradingRGBCurve & lhs, const GradingRGBCurve & rhs); } #endif //INCLUDED_OCIO_GRADINGRGBCURVE_H diff --git a/src/OpenColorIO/ops/gradingtone/GradingTone.h b/src/OpenColorIO/ops/gradingtone/GradingTone.h index 2be77fa9e9..b14f71869b 100644 --- a/src/OpenColorIO/ops/gradingtone/GradingTone.h +++ b/src/OpenColorIO/ops/gradingtone/GradingTone.h @@ -12,11 +12,6 @@ namespace OCIO_NAMESPACE { -bool operator==(const GradingRGBMSW & lhs, const GradingRGBMSW & rhs); -bool operator!=(const GradingRGBMSW & lhs, const GradingRGBMSW & rhs); -bool operator==(const GradingTone & lhs, const GradingTone & rhs); -bool operator!=(const GradingTone & lhs, const GradingTone & rhs); - enum RGBMChannel { R = 0, diff --git a/src/bindings/python/PyGradingData.cpp b/src/bindings/python/PyGradingData.cpp index ae68c6e0e1..815da41140 100644 --- a/src/bindings/python/PyGradingData.cpp +++ b/src/bindings/python/PyGradingData.cpp @@ -2,6 +2,7 @@ // Copyright Contributors to the OpenColorIO Project. #include + #include "PyOpenColorIO.h" #include "PyUtils.h" @@ -74,6 +75,15 @@ void bindPyGradingData(py::module & m) "red"_a, "green"_a, "blue"_a, "master"_a, DOC(GradingRGBM, GradingRGBM, 2)) + .def("__eq__", [](const GradingRGBM &self, const GradingRGBM &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingRGBM &self, const GradingRGBM &other) + { + return self != other; + }, py::is_operator()) + .def_readwrite("red", &GradingRGBM::m_red, DOC(GradingRGBM, m_red)) .def_readwrite("green", &GradingRGBM::m_green, @@ -89,6 +99,15 @@ void bindPyGradingData(py::module & m) .def(py::init(), DOC(GradingPrimary, GradingPrimary)) + .def("__eq__", [](const GradingPrimary &self, const GradingPrimary &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingPrimary &self, const GradingPrimary &other) + { + return self != other; + }, py::is_operator()) + .def("validate", &GradingPrimary::validate, DOC(GradingPrimary, validate)) @@ -142,6 +161,15 @@ void bindPyGradingData(py::module & m) "start"_a, "width"_a, DOC(GradingRGBMSW, GradingRGBMSW, 3)) + .def("__eq__", [](const GradingRGBMSW &self, const GradingRGBMSW &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingRGBMSW &self, const GradingRGBMSW &other) + { + return self != other; + }, py::is_operator()) + .def_readwrite("red", &GradingRGBMSW::m_red, DOC(GradingRGBMSW, m_red)) .def_readwrite("green", &GradingRGBMSW::m_green, @@ -164,6 +192,15 @@ void bindPyGradingData(py::module & m) .def("validate", &GradingTone::validate, DOC(GradingTone, validate)) + .def("__eq__", [](const GradingTone &self, const GradingTone &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingTone &self, const GradingTone &other) + { + return self != other; + }, py::is_operator()) + .def_readwrite("blacks", &GradingTone::m_blacks, DOC(GradingTone, m_blacks)) .def_readwrite("whites", &GradingTone::m_whites, @@ -187,6 +224,15 @@ void bindPyGradingData(py::module & m) "y"_a = DEFAULT_CONTROL_POINT.m_y, DOC(GradingControlPoint, GradingControlPoint, 2)) + .def("__eq__", [](const GradingControlPoint &self, const GradingControlPoint &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingControlPoint &self, const GradingControlPoint &other) + { + return self != other; + }, py::is_operator()) + .def_readwrite("x", &GradingControlPoint::m_x, DOC(GradingControlPoint, m_x)) .def_readwrite("y", &GradingControlPoint::m_y, @@ -224,6 +270,15 @@ void bindPyGradingData(py::module & m) }), DOC(GradingBSplineCurve, Create, 2)) + .def("__eq__", [](const GradingBSplineCurve &self, const GradingBSplineCurve &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingBSplineCurve &self, const GradingBSplineCurve &other) + { + return self != other; + }, py::is_operator()) + .def("validate", &GradingBSplineCurve::validate, DOC(GradingBSplineCurve, validate)) .def("setNumControlPoints", &GradingBSplineCurve::setNumControlPoints, "size"_a, @@ -281,6 +336,15 @@ void bindPyGradingData(py::module & m) "master"_a = DEFAULT_RGB_CURVE->getCurve(RGB_MASTER), DOC(GradingRGBCurve, GradingRGBCurve, 2)) + .def("__eq__", [](const GradingRGBCurve &self, const GradingRGBCurve &other) + { + return self == other; + }, py::is_operator()) + .def("__ne__", [](const GradingRGBCurve &self, const GradingRGBCurve &other) + { + return self != other; + }, py::is_operator()) + .def_property("red", [](const GradingRGBCurveRcPtr & rgbCurve) { diff --git a/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp b/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp index a9d0f3e641..f8728c23db 100644 --- a/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp +++ b/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp @@ -88,8 +88,16 @@ OCIO_ADD_TEST(GradingPrimary, precompute) OCIO_CHECK_ASSERT(comp.getContrast() == OCIO::Float3({ 1.f, 1.f, 1.f })); OCIO_CHECK_ASSERT(comp.getGamma() == OCIO::Float3({ 1.f, 1.f, 1.f })); OCIO_CHECK_CLOSE(comp.getPivot(), 0.4f, 1.e-6f); + OCIO_CHECK_ASSERT(comp.getLocalBypass()); OCIO_CHECK_ASSERT(comp.isGammaIdentity()); + gp.m_saturation = 0.5; + comp.update(OCIO::GRADING_LOG, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(!comp.getLocalBypass()); + gp.m_saturation = 1.; + comp.update(OCIO::GRADING_LOG, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(comp.getLocalBypass()); + gp.m_brightness.m_green = 0.1 * 1023. / 6.25; comp.update(OCIO::GRADING_LOG, OCIO::TRANSFORM_DIR_FORWARD, gp); OCIO_CHECK_ASSERT(comp.getBrightness() == OCIO::Float3({ 0.f, 0.1f, 0.f })); @@ -113,4 +121,34 @@ OCIO_ADD_TEST(GradingPrimary, precompute) OCIO_CHECK_ASSERT(comp.getBrightness() == OCIO::Float3({ -0.1f, 0.f, 0.f })); OCIO_CHECK_ASSERT(comp.getContrast() == OCIO::Float3({ 1.f, 0.8f, 1.f })); OCIO_CHECK_ASSERT(comp.getGamma() == OCIO::Float3({ 1.f, 1.f, 0.8f })); + + // Test isGammaIdentity() / isContrastIdentity() + gp = OCIO::GradingPrimary{ OCIO::GRADING_LOG }; + + gp.m_gamma.m_red = 0.8; + comp.update(OCIO::GRADING_LOG, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(!comp.isGammaIdentity()); + OCIO_CHECK_ASSERT(!comp.getLocalBypass()); + gp.m_gamma.m_red = 1.0; + comp.update(OCIO::GRADING_LOG, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(comp.isGammaIdentity()); + OCIO_CHECK_ASSERT(comp.getLocalBypass()); + + gp.m_contrast.m_red = 0.8; + comp.update(OCIO::GRADING_LIN, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(!comp.isContrastIdentity()); + OCIO_CHECK_ASSERT(!comp.getLocalBypass()); + gp.m_contrast.m_red = 1.0; + comp.update(OCIO::GRADING_LIN, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(comp.isContrastIdentity()); + OCIO_CHECK_ASSERT(comp.getLocalBypass()); + + gp.m_gamma.m_red = 0.8; + comp.update(OCIO::GRADING_VIDEO, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(!comp.isGammaIdentity()); + OCIO_CHECK_ASSERT(!comp.getLocalBypass()); + gp.m_gamma.m_red = 1.0; + comp.update(OCIO::GRADING_VIDEO, OCIO::TRANSFORM_DIR_FORWARD, gp); + OCIO_CHECK_ASSERT(comp.isGammaIdentity()); + OCIO_CHECK_ASSERT(comp.getLocalBypass()); } diff --git a/tests/python/GradingDataTest.py b/tests/python/GradingDataTest.py index 7c376425c6..b015e53702 100644 --- a/tests/python/GradingDataTest.py +++ b/tests/python/GradingDataTest.py @@ -74,6 +74,13 @@ def test_rgbm(self): with self.assertRaises(TypeError): OCIO.GradingRGBM(master=.3, red=.4) + # Check comparison operators + rgbm1 = OCIO.GradingRGBM() + rgbm2 = OCIO.GradingRGBM() + self.assertEqual(rgbm1, rgbm2) + rgbm1.red = 2 + self.assertNotEqual(rgbm1, rgbm2) + def test_primary(self): """ Test the GradingPrimary struct. @@ -121,6 +128,13 @@ def test_primary(self): primaryLog.gamma = newGamma assertEqualRGBM(self, newGamma, primaryLog.gamma) + # Check comparison operators + primaryLog1 = OCIO.GradingPrimary(OCIO.GRADING_LOG) + primaryLog2 = OCIO.GradingPrimary(OCIO.GRADING_LOG) + self.assertEqual(primaryLog1, primaryLog2) + primaryLog1.saturation = 0.5 + self.assertNotEqual(primaryLog1, primaryLog2) + def test_bspline(self): """ Test the GradingBSplineCurve: creation, control point modification, validation. @@ -188,6 +202,19 @@ def test_bspline(self): cpts5[2] = OCIO.GradingControlPoint(y=0.6, x=0.4) assertEqualBSpline(self, bs, bs5) + # Check comparison operators + cpts1 = OCIO.GradingControlPoint(1, 1) + cpts2 = OCIO.GradingControlPoint(1, 1) + self.assertEqual(cpts1, cpts2) + cpts1.x = 0.5 + self.assertNotEqual(cpts1, cpts2) + + bs1 = OCIO.GradingBSplineCurve([0, 0, 0.1, 0.5, 0.4, 0.6, 0.6, 0.7, 1, 1]) + bs2 = OCIO.GradingBSplineCurve([0, 0, 0.1, 0.5, 0.4, 0.6, 0.6, 0.7, 1, 1]) + self.assertEqual(bs1, bs2) + bs1.getControlPoints()[2] = OCIO.GradingControlPoint(0.1, 0.4) + self.assertNotEqual(cpts1, cpts2) + def test_rgbcurve(self): """ Test the GradingRGBCurve, creation, default value, modification. @@ -222,6 +249,13 @@ def test_rgbcurve(self): rgbVideo = OCIO.GradingRGBCurve(OCIO.GRADING_LOG) assertEqualRGBCurve(self, rgbLog, rgbVideo) + # Check comparison operators + rgbc1 = OCIO.GradingRGBCurve(OCIO.GRADING_LIN) + rgbc2 = OCIO.GradingRGBCurve(OCIO.GRADING_LIN) + self.assertEqual(rgbc1, rgbc2) + rgbc1.red.getControlPoints()[1] = OCIO.GradingControlPoint(0.4, 0.4) + self.assertNotEqual(rgbc1, rgbc2) + def test_rgbmsw(self): """ Test the GradingRGBMSW struct. @@ -315,6 +349,13 @@ def test_rgbmsw(self): with self.assertRaises(TypeError): OCIO.GradingRGBMSW(green=3, start=4) + # Check comparison operators + rgbm1 = OCIO.GradingRGBMSW(1, 2, 3, 4, 5, 6) + rgbm2 = OCIO.GradingRGBMSW(1, 2, 3, 4, 5, 6) + self.assertEqual(rgbm1, rgbm2) + rgbm1.red = 2 + self.assertNotEqual(rgbm1, rgbm2) + def test_tone(self): """ Test the GradingTone struct creation. @@ -342,4 +383,11 @@ def test_tone(self): newMidtones = OCIO.GradingRGBMSW(1.1, 1.2, 1.3, 1, 0.2, 1.1) tone.midtones = newMidtones - assertEqualRGBM(self, newMidtones, tone.midtones) \ No newline at end of file + assertEqualRGBM(self, newMidtones, tone.midtones) + + # Check comparison operators + tone1 = OCIO.GradingTone(OCIO.GRADING_LOG) + tone2 = OCIO.GradingTone(OCIO.GRADING_LOG) + self.assertEqual(tone1, tone2) + tone1.midtones = newMidtones + self.assertNotEqual(tone1, tone2) \ No newline at end of file diff --git a/tests/python/GradingPrimaryTransformTest.py b/tests/python/GradingPrimaryTransformTest.py index 074e750987..a4c80a1c90 100644 --- a/tests/python/GradingPrimaryTransformTest.py +++ b/tests/python/GradingPrimaryTransformTest.py @@ -122,8 +122,8 @@ def test_apply_dynamic(self): gpt1.makeDynamic() gpt2 = OCIO.GradingPrimaryTransform(OCIO.GRADING_LOG) val2 = OCIO.GradingPrimary(OCIO.GRADING_LOG) - val2.gamma = OCIO.GradingRGBM(1.2, 1.4, 1.1, 1.0); - val2.saturation = 1.5; + val2.gamma = OCIO.GradingRGBM(1.2, 1.4, 1.1, 1.0) + val2.saturation = 1.5 gpt2.setValue(val2) group = OCIO.GroupTransform() @@ -159,8 +159,8 @@ def test_apply_inverse(self): gpt = OCIO.GradingPrimaryTransform(OCIO.GRADING_LOG) val = OCIO.GradingPrimary(OCIO.GRADING_LOG) - val.gamma = OCIO.GradingRGBM(1.2, 1.4, 1.1, 0.7); - val.saturation = 1.5; + val.gamma = OCIO.GradingRGBM(1.2, 1.4, 1.1, 0.7) + val.saturation = 1.5 gpt.setValue(val) cfg = OCIO.Config().CreateRaw() From 630e3929b060809f151c500a82ec005ef2dfb719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Achard?= Date: Wed, 22 Mar 2023 21:00:45 +0000 Subject: [PATCH 2/2] Improve test description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Achard --- tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp b/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp index f8728c23db..9349a46d58 100644 --- a/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp +++ b/tests/cpu/ops/gradingprimary/GradingPrimary_tests.cpp @@ -122,9 +122,9 @@ OCIO_ADD_TEST(GradingPrimary, precompute) OCIO_CHECK_ASSERT(comp.getContrast() == OCIO::Float3({ 1.f, 0.8f, 1.f })); OCIO_CHECK_ASSERT(comp.getGamma() == OCIO::Float3({ 1.f, 1.f, 0.8f })); - // Test isGammaIdentity() / isContrastIdentity() gp = OCIO::GradingPrimary{ OCIO::GRADING_LOG }; + // Test identity checks for GRADING_LOG gp.m_gamma.m_red = 0.8; comp.update(OCIO::GRADING_LOG, OCIO::TRANSFORM_DIR_FORWARD, gp); OCIO_CHECK_ASSERT(!comp.isGammaIdentity()); @@ -134,6 +134,7 @@ OCIO_ADD_TEST(GradingPrimary, precompute) OCIO_CHECK_ASSERT(comp.isGammaIdentity()); OCIO_CHECK_ASSERT(comp.getLocalBypass()); + // Test identity checks for GRADING_LIN gp.m_contrast.m_red = 0.8; comp.update(OCIO::GRADING_LIN, OCIO::TRANSFORM_DIR_FORWARD, gp); OCIO_CHECK_ASSERT(!comp.isContrastIdentity()); @@ -143,6 +144,7 @@ OCIO_ADD_TEST(GradingPrimary, precompute) OCIO_CHECK_ASSERT(comp.isContrastIdentity()); OCIO_CHECK_ASSERT(comp.getLocalBypass()); + // Test identity checks for GRADING_VIDEO gp.m_gamma.m_red = 0.8; comp.update(OCIO::GRADING_VIDEO, OCIO::TRANSFORM_DIR_FORWARD, gp); OCIO_CHECK_ASSERT(!comp.isGammaIdentity());