Bug 467837 - Changing HDR colors in the HSV editor does not roundtrip correctly
Summary: Changing HDR colors in the HSV editor does not roundtrip correctly
Alias: None
Product: krita
Classification: Applications
Component: Color Selectors (show other bugs)
Version: nightly build (please specify the git hash!)
Platform: Appimage Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
Depends on:
Reported: 2023-03-27 00:48 UTC by erjiang
Modified: 2023-03-31 02:09 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:

Screen capture of buggy color dialog (507.30 KB, video/mp4)
2023-03-27 00:48 UTC, erjiang

Note You need to log in before you can comment on or make changes to this bug.
Description erjiang 2023-03-27 00:48:27 UTC
Created attachment 157613 [details]
Screen capture of buggy color dialog


Color picker dialog does not allow Value > 100%.

1. Create new document using ACEScg color profile (linear), 16-bit float
2. In the Brushes and Stuff toolbar, double-click on the foreground color swatch to select a color
3. Enter the values R: 3.5, G: 3.0, B: 1.5
4. Switch to HSV, see that value=100%. Click down arrow for value to lower to 99%, then click up to go back to 100%.


Value selector is limited to 100% maximum. Switch back to RGB, see that original RGB values are lost.


Value selector should have shown 350% and not be limited to 100% (if image format allows it).


Using krita-5.2.0-prealpha-8550960a23-x86_64.appimage
Comment 1 Halla Rempt 2023-03-30 14:02:43 UTC
Well, nothing can ever be more than 100%. Given that, I'm not sure that an accurate roundtrip between a real unbounded colorspace (floating point RGB) and HSV (which is a fake colorspace) is actually possible. Maybe for the HDR colorspaces we should disable the HSV tab or make the entry fields read-only.
Comment 2 erjiang 2023-03-31 02:09:40 UTC
> Well, nothing can ever be more than 100%.

For example, RGB(1.0, 1.0, 1.0) has value=1.0. Is RGB(2.0, 2.0, 2.0) not value=2.0? I found some demo code demonstrating HSV controls where V can be greater than 1: http://phrogz.net/tmp/hdrhsv.html

There is a straightforward use case, which is to sample the color of an emissive object, adjust the value higher, and then paint it in. For example, color picking a light, bumping up value to 500%, then painting it back in to brighten the light.

Also, I was playing around with Krita today and somehow my dual-color picker decided that RGB(2.10, 2.10, 2.10) is equivalent to value 50% and RGB(9.65, 9.65, 9.65) is value 100%. If I figure out how to reproduce I'll file another bug for that.