diff options
author | Nico Weber <thakis@chromium.org> | 2023-01-23 11:00:22 -0500 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2023-01-23 18:09:23 +0000 |
commit | 97568427349b5c7c8632912352e55dd19b579198 (patch) | |
tree | 8dc2b88ad80e7626ff40127929ae006645774575 /Userland/Utilities | |
parent | 9c5820326d62f52b408d8f4e271d8360108686f2 (diff) | |
download | serenity-97568427349b5c7c8632912352e55dd19b579198.zip |
LibGfx+icc: Add ICCProfile support for s15Fixed16ArrayType and print it
This is the type of the chromaticAdaptationTag, which is a required tag
in v4 profiles for all non-DeviceLink profiles.
Diffstat (limited to 'Userland/Utilities')
-rw-r--r-- | Userland/Utilities/icc.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Userland/Utilities/icc.cpp b/Userland/Utilities/icc.cpp index 7f38fd672c..a92ec51d4e 100644 --- a/Userland/Utilities/icc.cpp +++ b/Userland/Utilities/icc.cpp @@ -102,6 +102,25 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) record.iso_3166_1_country_code >> 8, record.iso_3166_1_country_code & 0xff, record.text); } + } else if (tag_data->type() == Gfx::ICC::S15Fixed16ArrayTagData::Type) { + // This tag can contain arbitrarily many fixed-point numbers, but in practice it's + // exclusively used for the 'chad' tag, where it always contains 9 values that + // represent a 3x3 matrix. So print the values in groups of 3. + auto& fixed_array = static_cast<Gfx::ICC::S15Fixed16ArrayTagData&>(*tag_data); + out(" ["); + int i = 0; + for (auto value : fixed_array.values()) { + if (i > 0) { + out(","); + if (i % 3 == 0) { + outln(); + out(" "); + } + } + out(" {}", value); + i++; + } + outln(" ]"); } else if (tag_data->type() == Gfx::ICC::TextDescriptionTagData::Type) { auto& text_description = static_cast<Gfx::ICC::TextDescriptionTagData&>(*tag_data); outln(" ascii: \"{}\"", text_description.ascii_description()); |