1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-10-31 11:52:44 +00:00
serenity/Userland/Libraries/LibGfx/ICC
Nico Weber 701d56f7ad LibGfx/ICC: Implement LutBToATagData::evaluate() when there is no CLUT
This is enough to make these work:

    for f in VideoHD VideoNTSC VideoPAL; do
        Build/lagom/bin/icc --debug-roundtrip \
            ~/Downloads/Adobe\ ICC\ Profiles\ \(end-user\)/RGB/$f.icc
    done

It's also possible to convert images to those color spaces:

    Build/lagom/bin/image -o image-pal.png \
        --convert-to-color-profile path/to/RGB/VideoPAL.icc \
        image-srgb.png

(If there's no png file with an embedded sRGB profile at hand, do first:

    Build/lagom/bin/icc --reencode-to serenity-sRGB.icc -n sRGB
    Build/lagom/bin/image -o image-srgb.png \
        --assign-color-profile serenity-sRGB.icc image-no-color-space.png

)

In color-managed viewers, images-srgb.png and image-pal.png should
look identical.

But if you either explicitly assign the sRGB profile to the pal
image, or strip the embedded color space, they'll look different
(since image viewers then assume the image in the VideoPAL space
is in sRGB):

    Build/lagom/bin/image -o image-pal-strip.png --strip-color-profile \
        image-pal.png

    Build/lagom/bin/image -o image-not-actually-srgb.png \
        --assign-color-profile serenity-sRGB.icc image-pal.png
2024-01-07 15:42:35 +01:00
..
BinaryFormat.h ICC: Rename XYZ and XYZNumber fields to uppercase 2023-04-29 06:49:36 +02:00
BinaryWriter.cpp LibGfx: Drop tags of unknown type instead of writing invalid icc files 2023-02-24 19:42:00 +01:00
BinaryWriter.h LibGfx: Add start of an ICC profile writer 2023-02-17 20:05:50 -07:00
DistinctFourCC.h LibGfx/ICC: Move enums to dedicated Enums.{cpp,h} 2023-12-04 08:02:36 +00:00
Enums.cpp LibGfx/ICC: Move enums to dedicated Enums.{cpp,h} 2023-12-04 08:02:36 +00:00
Enums.h LibGfx/ICC: Move enums to dedicated Enums.{cpp,h} 2023-12-04 08:02:36 +00:00
Profile.cpp LibGfx/ICC: Plumb mBA conversion from profile to tag data 2024-01-07 15:42:35 +01:00
Profile.h LibGfx/ICC: Implement conversion between different connection spaces 2023-12-04 08:02:36 +00:00
Tags.cpp LibGfx: Split ICC/Profile.{h,cpp} into several files 2023-01-28 00:27:07 +00:00
Tags.h LibGfx: Add v2 "ncol" tag, expand comment 2023-02-14 19:28:13 +01:00
TagTypes.cpp LibGfx/ICC: Ensure Macintosh ScriptCode length is within expected range 2023-11-12 07:58:39 +01:00
TagTypes.h LibGfx/ICC: Implement LutBToATagData::evaluate() when there is no CLUT 2024-01-07 15:42:35 +01:00
WellKnownProfiles.cpp ICC: Add comment with a link to WellKnownProfiles.cpp 2023-04-29 06:49:36 +02:00
WellKnownProfiles.h LibGfx: Forward-declare TagData in WellKnownProfiles 2023-07-20 06:56:41 +01:00