summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Utilities/icc.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/Userland/Utilities/icc.cpp b/Userland/Utilities/icc.cpp
index 2b6b189322..57c338813f 100644
--- a/Userland/Utilities/icc.cpp
+++ b/Userland/Utilities/icc.cpp
@@ -91,9 +91,19 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
outln("");
outln("tags:");
- profile->for_each_tag([](auto tag_signature, auto tag_data) {
+ HashMap<Gfx::ICC::TagData*, Gfx::ICC::TagSignature> tag_data_to_first_signature;
+ profile->for_each_tag([&tag_data_to_first_signature](auto tag_signature, auto tag_data) {
outln("{}: {}, offset {}, size {}", tag_signature, tag_data->type(), tag_data->offset(), tag_data->size());
+ // Print tag data only the first time it's seen.
+ // (Different sigatures can refer to the same data.)
+ auto it = tag_data_to_first_signature.find(tag_data);
+ if (it != tag_data_to_first_signature.end()) {
+ outln(" (see {} above)", it->value);
+ return;
+ }
+ tag_data_to_first_signature.set(tag_data, tag_signature);
+
if (tag_data->type() == Gfx::ICC::CurveTagData::Type) {
auto& curve = static_cast<Gfx::ICC::CurveTagData&>(*tag_data);
if (curve.values().is_empty()) {