mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-04-05 04:06:08 +00:00
icc: Print every TagData object only once
When several tags refer to the same TagData object, we now only print it the first time, and print "(see 'foob' above)" the following times, where `foob` is the tag identifier where we printed it the first time.
This commit is contained in:
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user