mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 07:27:45 +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:
parent
81cc64f29c
commit
95992a255e
1 changed files with 11 additions and 1 deletions
|
@ -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()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue