diff --git a/.travis.yml b/.travis.yml index 797f2b9..b38e512 100755 --- a/.travis.yml +++ b/.travis.yml @@ -7,8 +7,8 @@ env: - DEPS_DIR=${TRAVIS_BUILD_DIR}/deps # compiler settings - COMPILER_NAME=gcc - - CXX=g++-5 - - CC=gcc-5 + - CXX=g++-9 + - CC=gcc-9 # Misc - RUN_TESTS=true - COVERAGE=false @@ -23,10 +23,10 @@ matrix: addons: apt: packages: - - gcc-5 - - g++-5 # Misc - python-yaml + - gcc-5.5 + - g++-5.5 - doxygen - graphviz sources: &sources diff --git a/include/hueplusplus/ColorUnits.h b/include/hueplusplus/ColorUnits.h index 184da96..eb26991 100644 --- a/include/hueplusplus/ColorUnits.h +++ b/include/hueplusplus/ColorUnits.h @@ -141,6 +141,18 @@ struct RGB //! This is because the color luminosity is not saved. static RGB fromXY(const XYBrightness& xy, const ColorGamut& gamut); }; + +//! \brief Const function that converts Kelvin to Mired. + //! + //! \param kelvin Unsigned integer value in Kelvin + //! \return Unsigned integer value in Mired +unsigned int kelvinToMired(unsigned int kelvin); + +//! \brief Const function that converts Mired to Kelvin. +//! +//! \param mired Unsigned integer value in Mired +//! \return Unsigned integer value in Kelvin +unsigned int miredToKelvin(unsigned int mired); } // namespace hueplusplus #endif diff --git a/include/hueplusplus/Light.h b/include/hueplusplus/Light.h index 1592ceb..36d32d1 100644 --- a/include/hueplusplus/Light.h +++ b/include/hueplusplus/Light.h @@ -143,18 +143,6 @@ public: //! when not virtual bool hasColorControl() const { return colorHueStrategy != nullptr; }; - //! \brief Const function that converts Kelvin to Mired. - //! - //! \param kelvin Unsigned integer value in Kelvin - //! \return Unsigned integer value in Mired - unsigned int kelvinToMired(unsigned int kelvin) const; - - //! \brief Const function that converts Mired to Kelvin. - //! - //! \param mired Unsigned integer value in Mired - //! \return Unsigned integer value in Kelvin - unsigned int miredToKelvin(unsigned int mired) const; - //! \brief Function that sets the brightness of this light. //! //! \note The brightness will only be set if the light has a reference to a diff --git a/src/ColorUnits.cpp b/src/ColorUnits.cpp index adc3c4a..be65b21 100644 --- a/src/ColorUnits.cpp +++ b/src/ColorUnits.cpp @@ -197,4 +197,14 @@ RGB RGB::fromXY(const XYBrightness& xy, const ColorGamut& gamut) } } +unsigned int kelvinToMired(unsigned int kelvin) +{ + return int(std::round(1000000.f / kelvin)); +} + +unsigned int miredToKelvin(unsigned int mired) +{ + return int(std::round(1000000.f / mired)); +} + } // namespace hueplusplus \ No newline at end of file diff --git a/src/Light.cpp b/src/Light.cpp index 64cf296..47f3403 100644 --- a/src/Light.cpp +++ b/src/Light.cpp @@ -92,16 +92,6 @@ ColorGamut Light::getColorGamut() const } } -unsigned int Light::kelvinToMired(unsigned int kelvin) const -{ - return int(0.5f + (1000000 / kelvin)); -} - -unsigned int Light::miredToKelvin(unsigned int mired) const -{ - return int(0.5f + (1000000 / mired)); -} - bool Light::alert() { return transaction().alert().commit(); diff --git a/test/test_ColorUnits.cpp b/test/test_ColorUnits.cpp index 1af4809..6e89329 100644 --- a/test/test_ColorUnits.cpp +++ b/test/test_ColorUnits.cpp @@ -188,3 +188,23 @@ TEST(RGB, fromXY) EXPECT_LE(maxDiffB, 64); } + +TEST(ColorUnits, kelvinToMired) +{ + EXPECT_EQ(10000, kelvinToMired(100)); + EXPECT_EQ(500, kelvinToMired(2000)); + EXPECT_EQ(303, kelvinToMired(3300)); + EXPECT_EQ(250, kelvinToMired(4000)); + EXPECT_EQ(200, kelvinToMired(5000)); + EXPECT_EQ(167, kelvinToMired(6000)); +} + +TEST(ColorUnits, miredToKelvin) +{ + EXPECT_EQ(100, miredToKelvin(10000)); + EXPECT_EQ(2000, miredToKelvin(500)); + EXPECT_EQ(3300, miredToKelvin(303)); + EXPECT_EQ(4000, miredToKelvin(250)); + EXPECT_EQ(5000, miredToKelvin(200)); + EXPECT_EQ(6024, miredToKelvin(166)); // 6000 kelvin should be 166 mired, but is rounded +} \ No newline at end of file diff --git a/test/test_Light.cpp b/test/test_Light.cpp index 6518ddb..8a7c84c 100644 --- a/test/test_Light.cpp +++ b/test/test_Light.cpp @@ -362,41 +362,6 @@ TEST_F(HueLightTest, getColorType) EXPECT_EQ(ColorType::GAMUT_C_TEMPERATURE, test_light_3.getColorType()); } -TEST_F(HueLightTest, kelvinToMired) -{ - const Light ctest_light_1 = test_bridge.lights().get(1); - const Light ctest_light_2 = test_bridge.lights().get(2); - const Light ctest_light_3 = test_bridge.lights().get(3); - Light test_light_1 = test_bridge.lights().get(1); - Light test_light_2 = test_bridge.lights().get(2); - Light test_light_3 = test_bridge.lights().get(3); - - EXPECT_EQ(10000, ctest_light_1.kelvinToMired(100)); - EXPECT_EQ(500, ctest_light_2.kelvinToMired(2000)); - EXPECT_EQ(303, ctest_light_3.kelvinToMired(3300)); - EXPECT_EQ(250, test_light_1.kelvinToMired(4000)); - EXPECT_EQ(200, test_light_2.kelvinToMired(5000)); - EXPECT_EQ(166, test_light_3.kelvinToMired(6000)); -} - -TEST_F(HueLightTest, miredToKelvin) -{ - const Light ctest_light_1 = test_bridge.lights().get(1); - const Light ctest_light_2 = test_bridge.lights().get(2); - const Light ctest_light_3 = test_bridge.lights().get(3); - Light test_light_1 = test_bridge.lights().get(1); - Light test_light_2 = test_bridge.lights().get(2); - Light test_light_3 = test_bridge.lights().get(3); - - EXPECT_EQ(100, ctest_light_1.miredToKelvin(10000)); - EXPECT_EQ(2000, ctest_light_2.miredToKelvin(500)); - EXPECT_EQ(3300, ctest_light_3.miredToKelvin(303)); - EXPECT_EQ(4000, test_light_1.miredToKelvin(250)); - EXPECT_EQ(5000, test_light_2.miredToKelvin(200)); - EXPECT_EQ(6024, test_light_3.miredToKelvin(166)); // 6000 kelvin should be 166 mired, but keep in - // mind flops are not exact -} - TEST_F(HueLightTest, hasBrightnessControl) { const Light ctest_light_1 = test_bridge.lights().get(1);