From 4e441e849121d4a93e1c478eaa73da41fa52a9de Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sat, 9 Oct 2021 12:28:10 +0900 Subject: [PATCH] info: improved some xmp display --- lib/ref/xmp.dart | 1 + .../viewer/info/metadata/xmp_ns/crs.dart | 28 +++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/ref/xmp.dart b/lib/ref/xmp.dart index 46538cb8d..161d3e418 100644 --- a/lib/ref/xmp.dart +++ b/lib/ref/xmp.dart @@ -26,6 +26,7 @@ class XMP { 'GPano': 'Google Panorama', 'illustrator': 'Illustrator', 'Iptc4xmpCore': 'IPTC Core', + 'Iptc4xmpExt': 'IPTC Extension', 'lr': 'Lightroom', 'MicrosoftPhoto': 'Microsoft Photo', 'mwg-rs': 'Regions', diff --git a/lib/widgets/viewer/info/metadata/xmp_ns/crs.dart b/lib/widgets/viewer/info/metadata/xmp_ns/crs.dart index d58fe386f..09884366d 100644 --- a/lib/widgets/viewer/info/metadata/xmp_ns/crs.dart +++ b/lib/widgets/viewer/info/metadata/xmp_ns/crs.dart @@ -6,9 +6,13 @@ class XmpCrsNamespace extends XmpNamespace { static const ns = 'crs'; static final cgbcPattern = RegExp(ns + r':CircularGradientBasedCorrections\[(\d+)\]/(.*)'); + static final gbcPattern = RegExp(ns + r':GradientBasedCorrections\[(\d+)\]/(.*)'); + static final pbcPattern = RegExp(ns + r':PaintBasedCorrections\[(\d+)\]/(.*)'); static final lookPattern = RegExp(ns + r':Look/(.*)'); final cgbc = >{}; + final gbc = >{}; + final pbc = >{}; final look = {}; XmpCrsNamespace(Map rawProps) : super(ns, rawProps); @@ -16,21 +20,33 @@ class XmpCrsNamespace extends XmpNamespace { @override bool extractData(XmpProp prop) { final hasStructs = extractStruct(prop, lookPattern, look); - final hasIndexedStructs = extractIndexedStruct(prop, cgbcPattern, cgbc); + var hasIndexedStructs = extractIndexedStruct(prop, cgbcPattern, cgbc); + hasIndexedStructs |= extractIndexedStruct(prop, gbcPattern, gbc); + hasIndexedStructs |= extractIndexedStruct(prop, pbcPattern, pbc); return hasStructs || hasIndexedStructs; } @override List buildFromExtractedData() => [ - if (look.isNotEmpty) - XmpStructCard( - title: 'Look', - struct: look, - ), if (cgbc.isNotEmpty) XmpStructArrayCard( title: 'Circular Gradient Based Corrections', structByIndex: cgbc, ), + if (gbc.isNotEmpty) + XmpStructArrayCard( + title: 'Gradient Based Corrections', + structByIndex: gbc, + ), + if (look.isNotEmpty) + XmpStructCard( + title: 'Look', + struct: look, + ), + if (pbc.isNotEmpty) + XmpStructArrayCard( + title: 'Paint Based Corrections', + structByIndex: pbc, + ), ]; }