Summary: | Use native Color Management settings from Windows and MacOS | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Ian Douglas <ipdouglas2011> |
Component: | ColorManagement-Profiles | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | wishlist | CC: | caulier.gilles, metzpinguin, nicolas.fella |
Priority: | NOR | ||
Version First Reported In: | 7.2.0 | ||
Target Milestone: | --- | ||
Platform: | Microsoft Windows | ||
OS: | Microsoft Windows | ||
Latest Commit: | Version Fixed In: | 8.8.0 | |
Sentry Crash Report: |
Description
Ian Douglas
2021-05-03 09:47:22 UTC
At the moment we cannot read the set system color profile under Windows. I am sure that the graphics program Krita cannot do this either. With the porting to Qt6, we plan to also port to Qt's color management system (QColorSpace). However, there is currently no function in the QScreen class in the preliminary documentation of Qt6 to read the color profile from the screen. Maik Thanks for a prompt response. I am really disappointed to hear this. It is a massive drawback and critical for any image program since if the images cannot be accurately colour represented on screen then it is useless. Since almost all other editors etc and ALL commercial products can do this then how do they achieve this? I believe this to be critical for DigiKam and dearly hope someone somewhere can overcome this. cheers Ian I should add the colour profile would not be read from a screen (an output device) but from the windows system software and is simply a file so cannot see why this cannot be done? If you have an *.icc file from your monitor and it is your current profile, you have the option of adding the folder as a search path in the setup tab for profiles, then you should be able to select the monitor profile. Maik MAik, Scribus has also a CM engine, but i don't know if Windows native profile are used : https://github.com/scribusproject/scribus/tree/master/scribus/colormgmt Gilles Thanks Maik If I am able to add the windows system profiles folder and I can from that select the correct profile then this indeed should work. There is a danger here for the unsophisticated user as there will often be many profiles for all sorts of devices and even different manufacturer supplied paper profiles. A user many select the wrong one? Perhaps a default set to use the same profile as the windows system uses for the monitor would be better either defaulted (with a reset if someone gets lost?) and others choices (for raesons unknown to me)? First approch with native code under Windows: https://stackoverflow.com/questions/13533754/code-example-for-wcsgetdefaultcolorprofile In digiKam, native code for windows and MacOS need to be implemented here : https://invent.kde.org/graphics/digikam/-/blob/master/core/libs/dimg/filters/icc/iccsettings.cpp#L307 Gilles Caulier For MacOS, Applescript can be used : https://stackoverflow.com/questions/60350804/how-to-get-loaded-monitor-color-profile-with-applescript-or-command-line Note, we already use applescript with Qt code in digiKam as for ex to setup screen background image : https://invent.kde.org/graphics/digikam/-/blob/master/core/dplugins/generic/tools/wallpaper/wallpaperplugin_macos.cpp Git commit 3e2e9ee6964fd41e17583530484134b1d9ce1196 by Gilles Caulier. Committed on 12/08/2025 at 07:21. Pushed by cgilles into branch 'master'. Introduce sample of code to get screen color profile data under Windows. Not yet used and compiled. TODO later M +68 -1 core/libs/dimg/filters/icc/iccsettings_p_desktop.cpp https://invent.kde.org/graphics/digikam/-/commit/3e2e9ee6964fd41e17583530484134b1d9ce1196 Git commit 08db661fd8971e27cd8a340050c1c7f70f4a80cf by Gilles Caulier. Committed on 12/08/2025 at 15:03. Pushed by cgilles into branch 'master'. Enable the screen color profile extraction under windows. TODO: perform tests. M +58 -44 core/libs/dimg/filters/icc/iccsettings_p_desktop.cpp https://invent.kde.org/graphics/digikam/-/commit/08db661fd8971e27cd8a340050c1c7f70f4a80cf Hi, The Screen Color Profile extraction under Windows is now implemented, but need to be tested: https://invent.kde.org/graphics/digikam/-/blob/master/core/libs/dimg/filters/icc/iccsettings_p_desktop.cpp?ref_type=heads#L171 Best Gilles Caulier Git commit bfe31426c4e326070d25e42dfa4a58a2cb0fbc6e by Gilles Caulier. Committed on 13/08/2025 at 04:00. Pushed by cgilles into branch 'master'. prepare for the MacOS monitor profile detection M +7 -0 core/libs/dimg/CMakeLists.txt M +6 -0 core/libs/dimg/filters/icc/iccsettings_p.h M +1 -1 core/libs/dimg/filters/icc/iccsettings_p_X11.cpp M +6 -5 core/libs/dimg/filters/icc/iccsettings_p_desktop.cpp A +33 -0 core/libs/dimg/filters/icc/iccsettings_p_macos.mm M +1 -1 core/libs/dimg/filters/icc/iccsettings_p_windows.cpp https://invent.kde.org/graphics/digikam/-/commit/bfe31426c4e326070d25e42dfa4a58a2cb0fbc6e Git commit 3dcaec46d875edaae53765207dd490bbe4712bc2 by Gilles Caulier. Committed on 13/08/2025 at 10:27. Pushed by cgilles into branch 'master'. New code to get all active monitor color profile from the active screens under MacOS. Code is not yet activated. M +2 -0 core/app/DigikamCoreTarget.cmake M +85 -1 core/libs/dimg/filters/icc/iccsettings_p_macos.mm https://invent.kde.org/graphics/digikam/-/commit/3dcaec46d875edaae53765207dd490bbe4712bc2 Git commit 2b1d9f4b683f7c171ce4a9ec9d7644df0db8c9c6 by Gilles Caulier. Committed on 13/08/2025 at 12:25. Pushed by cgilles into branch 'master'. Enable MacOS monitor color profile extraction method. Need to compile, link, and test the results. M +39 -47 core/libs/dimg/filters/icc/iccsettings_p_macos.mm https://invent.kde.org/graphics/digikam/-/commit/2b1d9f4b683f7c171ce4a9ec9d7644df0db8c9c6 Git commit 9829d873b31893abd663b0da4843c4a1098eaa2f by Gilles Caulier. Committed on 13/08/2025 at 12:56. Pushed by cgilles into branch 'master'. Start to implmeent the Wayland method to extarct the monitor color profile using DBus and Colord service. A +142 -0 core/libs/dimg/filters/icc/iccsettings_p_Wayland.cpp [License: GPL(v2.0+)] M +1 -1 core/libs/dimg/filters/icc/iccsettings_p_X11.cpp https://invent.kde.org/graphics/digikam/-/commit/9829d873b31893abd663b0da4843c4a1098eaa2f Git commit 878d9294bac2ae2a920d95d4ae58274c8cc5182b by Gilles Caulier. Committed on 13/08/2025 at 16:13. Pushed by cgilles into branch 'master'. Enable support of Wayland monitor color profile extraction using D-Bus and Colord service. M +7 -0 core/libs/dimg/CMakeLists.txt M +7 -0 core/libs/dimg/filters/icc/iccsettings_p.h M +44 -24 core/libs/dimg/filters/icc/iccsettings_p_Wayland.cpp M +0 -4 core/libs/dimg/filters/icc/iccsettings_p_X11.cpp M +14 -1 core/libs/dimg/filters/icc/iccsettings_p_desktop.cpp https://invent.kde.org/graphics/digikam/-/commit/878d9294bac2ae2a920d95d4ae58274c8cc5182b (In reply to caulier.gilles from comment #16) > Git commit 878d9294bac2ae2a920d95d4ae58274c8cc5182b by Gilles Caulier. > Committed on 13/08/2025 at 16:13. > Pushed by cgilles into branch 'master'. > > Enable support of Wayland monitor color profile extraction using D-Bus and > Colord service. > > M +7 -0 core/libs/dimg/CMakeLists.txt > M +7 -0 core/libs/dimg/filters/icc/iccsettings_p.h > M +44 -24 core/libs/dimg/filters/icc/iccsettings_p_Wayland.cpp > M +0 -4 core/libs/dimg/filters/icc/iccsettings_p_X11.cpp > M +14 -1 core/libs/dimg/filters/icc/iccsettings_p_desktop.cpp > > https://invent.kde.org/graphics/digikam/-/commit/ > 878d9294bac2ae2a920d95d4ae58274c8cc5182b This is *not* how color management on Wayland works. You cannot reply on colord. Instead you need to use the color management protocol (https://wayland.app/protocols/color-management-v1) to describe the color space of your window |