Lucas CHOLLET
bd93285811
LibGfx+LibWeb: Do some color management on images with an ICC profile
...
This patch introduces the `Gfx::ColorSpace` class, this is basically a
serializable wrapper for skia's SkColorSpace. Creation of the instances
of this class (and thus ICC profiles parsing) is performed in the
ImageDecoder process. Then the object is serialized and sent through
IPC, to finally be handed to skia for rendering.
However, to make sure that we're not making all LibGfx's users dependent
on Skia as well, we need to ensure the `Gfx::ColorSpace` object has no
dependency on objects from Skia. To that end, the only member of the
`ColorSpace` class is the opaque `ColorSpaceImpl` struct. Though, there
is on issue with that design, the code in `DisplayListPlayer.cpp` needs
access to the underlying `sk_sp<SkColorSpace>`. It is provided by a
template function, that is only specialized for this type.
Doing this work allows us to pass the following WPT tests:
- https://wpt.live/css/css-color/tagged-images-001.html
- https://wpt.live/css/css-color/tagged-images-003.html
- https://wpt.live/css/css-color/tagged-images-004.html
- https://wpt.live/css/css-color/untagged-images-001.html
Other test cases can also be found here:
- https://github.com/svgeesus/PNG-ICC-tests
Note that SkColorSpace support quite a limited amount of color spaces,
so color profiles like the ones in [1] or the v4 profiles in [2] are not
supported yet. In fact, SkColorSpace only accepts skcms_ICCProfile with
a linear conversion to XYZ D50.
[1] https://www.color.org/browsertest.xalter
[2] https://www.color.org/version4html.xalter
2024-12-05 17:16:41 +01:00
..
2024-12-05 17:07:13 +01:00
2024-11-15 14:49:20 +01:00
2024-12-01 10:42:49 +01:00
2024-11-30 11:55:11 +01:00
2024-11-30 07:07:30 +00:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-26 21:56:28 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-23 16:43:55 +01:00
2024-11-23 16:43:55 +01:00
2024-11-23 16:43:55 +01:00
2024-12-04 16:34:13 +00:00
2024-11-26 10:59:50 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-05 17:07:13 +01:00
2024-12-05 17:07:13 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-23 16:43:55 +01:00
2024-12-04 16:34:13 +00:00
2024-11-17 23:47:24 +01:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-21 20:25:26 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-22 14:33:58 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-01 10:42:49 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-23 14:41:41 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-12-03 23:35:45 +01:00
2024-11-15 10:46:24 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-20 18:01:21 -07:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-03 00:18:03 +01:00
2024-12-03 00:18:03 +01:00
2024-11-26 18:38:38 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-19 14:51:42 +01:00
2024-11-19 14:51:42 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-11-26 18:32:48 +01:00
2024-11-17 22:12:29 +01:00
2024-11-17 22:12:29 +01:00
2024-12-04 16:34:13 +00:00
2024-12-01 15:12:04 +00:00
2024-11-26 21:56:28 +00:00
2024-12-05 10:49:57 +00:00
2024-11-30 11:01:33 +01:00
2024-11-30 11:01:33 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-19 14:51:42 +01:00
2024-11-19 14:51:42 +01:00
2024-11-26 19:09:24 +01:00
2024-11-26 19:09:24 +01:00
2024-12-04 16:34:13 +00:00
2024-11-29 09:48:59 +01:00
2024-11-29 09:48:59 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-27 11:00:25 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-26 11:40:42 +00:00
2024-12-04 16:34:13 +00:00
2024-11-26 18:32:48 +01:00
2024-11-26 19:09:24 +01:00
2024-11-26 19:09:24 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 12:54:41 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-29 15:32:04 +01:00
2024-11-29 15:32:04 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-26 11:40:42 +00:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-29 13:30:57 +01:00
2024-11-29 13:30:57 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-02 10:25:27 +01:00
2024-12-02 10:25:27 +01:00
2024-12-02 10:25:27 +01:00
2024-12-02 10:25:27 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-02 10:25:27 +01:00
2024-11-29 09:48:45 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-26 19:07:53 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 18:50:08 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-05 12:13:09 +01:00
2024-12-05 12:13:09 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-12-04 16:34:13 +00:00
2024-12-04 16:34:13 +00:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-02 06:47:49 +00:00
2024-11-30 11:19:35 +01:00
2024-11-30 11:19:35 +01:00
2024-11-30 11:19:35 +01:00
2024-11-15 14:49:20 +01:00
2024-12-02 10:25:27 +01:00
2024-12-02 10:25:27 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-25 21:13:53 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-03 00:18:11 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-11 17:06:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-20 18:01:21 -07:00
2024-12-03 00:18:11 +01:00
2024-12-05 17:16:41 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-03 21:32:01 +00:00
2024-12-03 21:32:01 +00:00
2024-11-15 14:49:20 +01:00
2024-11-24 11:11:44 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-19 23:30:43 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-03 23:35:45 +01:00
2024-12-03 23:35:45 +01:00
2024-12-03 00:18:11 +01:00
2024-12-03 00:18:11 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-05 12:13:09 +01:00
2024-12-05 12:13:09 +01:00
2024-12-05 12:13:09 +01:00
2024-11-15 14:49:20 +01:00
2024-11-30 11:55:11 +01:00
2024-12-03 00:18:11 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-20 18:01:21 -07:00
2024-12-03 00:18:11 +01:00
2024-12-04 16:34:13 +00:00
2024-11-30 12:07:39 +01:00
2024-11-30 11:19:35 +01:00
2024-11-30 11:19:35 +01:00
2024-11-30 11:19:35 +01:00
2024-11-30 11:19:35 +01:00
2024-11-30 11:19:35 +01:00