diff --git a/src/protocols/ColorManagement.cpp b/src/protocols/ColorManagement.cpp index aee3b9f0..7309cf71 100644 --- a/src/protocols/ColorManagement.cpp +++ b/src/protocols/ColorManagement.cpp @@ -8,6 +8,8 @@ using namespace NColorManagement; +const auto PRIMARIES_SCALE = 1000000.0f; + CColorManager::CColorManager(SP resource) : m_resource(resource) { if UNLIKELY (!good()) return; @@ -610,10 +612,10 @@ CColorManagementParametricCreator::CColorManagementParametricCreator(SPsetSetLuminances([this](CWpImageDescriptionCreatorParamsV1* r, uint32_t min_lum, uint32_t max_lum, uint32_t reference_lum) { @@ -641,10 +643,10 @@ CColorManagementParametricCreator::CColorManagementParametricCreator(SPerror(WP_COLOR_MANAGER_V1_ERROR_UNSUPPORTED_FEATURE, "Mastering primaries are not supported"); return; } - m_settings.masteringPrimaries = SPCPRimaries{.red = {.x = r_x / 1000000.0f, .y = r_y / 1000000.0f}, - .green = {.x = g_x / 1000000.0f, .y = g_y / 1000000.0f}, - .blue = {.x = b_x / 1000000.0f, .y = b_y / 1000000.0f}, - .white = {.x = w_x / 1000000.0f, .y = w_y / 1000000.0f}}; + m_settings.masteringPrimaries = SPCPRimaries{.red = {.x = r_x / PRIMARIES_SCALE, .y = r_y / PRIMARIES_SCALE}, + .green = {.x = g_x / PRIMARIES_SCALE, .y = g_y / PRIMARIES_SCALE}, + .blue = {.x = b_x / PRIMARIES_SCALE, .y = b_y / PRIMARIES_SCALE}, + .white = {.x = w_x / PRIMARIES_SCALE, .y = w_y / PRIMARIES_SCALE}}; m_valuesSet |= PC_MASTERING_PRIMARIES; // FIXME: @@ -744,7 +746,7 @@ CColorManagementImageDescriptionInfo::CColorManagementImageDescriptionInfo(SPclient(); - const auto toProto = [](float value) { return sc(std::round(value * 10000)); }; + const auto toProto = [](float value) { return sc(std::round(value * PRIMARIES_SCALE)); }; if (m_settings.icc.fd >= 0) m_resource->sendIccFile(m_settings.icc.fd, m_settings.icc.length);