Nico Weber
8ab6e0d3a5
ICC: Mark Profile::to_pcs() and to_lab() const
2023-04-30 05:57:20 +02:00
Nico Weber
adec1abf81
LibGfx: Move CIELAB to its own file
2023-04-30 05:57:20 +02:00
Nico Weber
f3dbfb85d9
ICC: Add Profile::to_lab()
...
This can be used to convert a profile-dependent color to the L*a*b*
color space.
(I'd like to use this to implement the DeltaE (CIE 2000) algorithm,
which is a metric for how similar two colors are perceived.
(And I'd like to use that to evaluate color conversion roundtrip
quality, once I've implemented full conversions.)
2023-04-30 00:46:11 +02:00
Nico Weber
af453b246a
ICC: Add method to convert a color to the profile connection space
...
Only implemented for matrix profiles so far.
This API won't be fast enough to color manage images, but let's
get something working before getting something fast.
2023-04-29 06:49:36 +02:00
Nico Weber
e76d2238bb
ICC: Make number_of_components_in_color_space() external
...
...and make its return type unsigned.
2023-04-29 06:49:36 +02:00
Nico Weber
8f415e7b21
LibGfx: Introduce ICC::Profile::create
...
This can be used to programmatically create ICC::Profile objects.
2023-03-04 21:38:47 +00:00
Nico Weber
8179327068
LibGfx: Add fallible ICC::Profile::try_for_each_tag
...
Similar to 13b18a1
or d0f3f3d
.
2023-02-19 23:46:36 +01:00
Nico Weber
1457e36b79
LibGfx: Write ICC tag table
...
All offsets and sizes are set to 0 for now, so this still doesn't
produce a valid icc file. It gets closer, though.
2023-02-19 00:01:44 +01:00
Nico Weber
e8a2c17f8f
LibGfx: Add an accessor for the raw ICC Version minor_and_bugfix byte
...
This is makes it easier to write this value back out.
2023-02-17 20:05:50 -07:00
Nico Weber
78d849bce2
LibGfx: Make ICCHeader use RenderingIntent enum
...
No behavior change.
2023-02-17 20:05:50 -07:00
Nico Weber
9ba3c8e36d
LibGfx: Move ICC::Profile towards "Fallible Constructors" pattern
...
Not quite there yet due to check_required_tags() / check_tag_types(),
but getting closer :^)
2023-02-15 10:15:24 +01:00
Nico Weber
db614b47dd
LibGfx: Move ICC::Profile::read_header() out of class
...
This one is slightly more involved: To make it nice, extract
all the Profile fields that belong to the header into a separate
struct.
2023-02-15 10:15:24 +01:00
Nico Weber
272e5321e3
LibGfx: Move ICC::Profile::read_tag_table() out of class
2023-02-15 10:15:24 +01:00
Nico Weber
006dff6878
LibGfx: Move ICC::Profile::read_tag() out of class
2023-02-15 10:15:24 +01:00
Nico Weber
b5deccf859
LibGfx: Split ICC/Profile.{h,cpp} into several files
...
s15Fixed16Number and XYZNumber are somewhat awkwardly duplicated
in both Profile.cpp and TagTypes.cpp. Other than that, this is a
pure code move.
No behavior change.
2023-01-28 00:27:07 +00:00
Nico Weber
6d51d8ad32
LibGfx: Bump copyright year in ICC/Profile.{h,cpp}
2023-01-28 00:27:07 +00:00
Nico Weber
721b280849
LibGfx: Move ICCProfile.{h,cpp} to ICC/Profile.{h,cpp}
2023-01-28 00:27:07 +00:00