info: XMP formatting
This commit is contained in:
parent
b2a9a33015
commit
8a9a4639ea
2 changed files with 26 additions and 0 deletions
|
@ -32,6 +32,8 @@ class XmpNamespace extends Equatable {
|
||||||
switch (namespace) {
|
switch (namespace) {
|
||||||
case XmpBasicNamespace.ns:
|
case XmpBasicNamespace.ns:
|
||||||
return XmpBasicNamespace(rawProps);
|
return XmpBasicNamespace(rawProps);
|
||||||
|
case XmpContainer.ns:
|
||||||
|
return XmpContainer(rawProps);
|
||||||
case XmpCrsNamespace.ns:
|
case XmpCrsNamespace.ns:
|
||||||
return XmpCrsNamespace(rawProps);
|
return XmpCrsNamespace(rawProps);
|
||||||
case XmpDarktableNamespace.ns:
|
case XmpDarktableNamespace.ns:
|
||||||
|
|
|
@ -2,7 +2,9 @@ import 'package:aves/widgets/common/extensions/build_context.dart';
|
||||||
import 'package:aves/widgets/viewer/embedded/notifications.dart';
|
import 'package:aves/widgets/viewer/embedded/notifications.dart';
|
||||||
import 'package:aves/widgets/viewer/info/common.dart';
|
import 'package:aves/widgets/viewer/info/common.dart';
|
||||||
import 'package:aves/widgets/viewer/info/metadata/xmp_namespaces.dart';
|
import 'package:aves/widgets/viewer/info/metadata/xmp_namespaces.dart';
|
||||||
|
import 'package:aves/widgets/viewer/info/metadata/xmp_structs.dart';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
|
|
||||||
abstract class XmpGoogleNamespace extends XmpNamespace {
|
abstract class XmpGoogleNamespace extends XmpNamespace {
|
||||||
|
@ -61,3 +63,25 @@ class XmpGImageNamespace extends XmpGoogleNamespace {
|
||||||
@override
|
@override
|
||||||
List<Tuple2<String, String>> get dataProps => const [Tuple2('$ns:Data', '$ns:Mime')];
|
List<Tuple2<String, String>> get dataProps => const [Tuple2('$ns:Data', '$ns:Mime')];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class XmpContainer extends XmpNamespace {
|
||||||
|
static const ns = 'Container';
|
||||||
|
|
||||||
|
static final directoryPattern = RegExp('$ns:Directory\\[(\\d+)\\]/$ns:Item/(.*)');
|
||||||
|
|
||||||
|
final directories = <int, Map<String, String>>{};
|
||||||
|
|
||||||
|
XmpContainer(Map<String, String> rawProps) : super(ns, rawProps);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool extractData(XmpProp prop) => extractIndexedStruct(prop, directoryPattern, directories);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Widget> buildFromExtractedData() => [
|
||||||
|
if (directories.isNotEmpty)
|
||||||
|
XmpStructArrayCard(
|
||||||
|
title: 'Directory Item',
|
||||||
|
structByIndex: directories,
|
||||||
|
),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue