aves/lib/convert/metadata/fields.dart
2024-03-24 00:57:25 +01:00

160 lines
5.6 KiB
Dart

import 'package:aves_model/aves_model.dart';
extension ExtraMetadataSyntheticFieldConvert on MetadataSyntheticField {
String? get toPlatform => name;
}
extension ExtraMetadataFieldConvert on MetadataField {
MetadataType get type {
switch (this) {
case MetadataField.exifDate:
case MetadataField.exifDateOriginal:
case MetadataField.exifDateDigitized:
case MetadataField.exifGpsAltitude:
case MetadataField.exifGpsAltitudeRef:
case MetadataField.exifGpsAreaInformation:
case MetadataField.exifGpsDatestamp:
case MetadataField.exifGpsDestBearing:
case MetadataField.exifGpsDestBearingRef:
case MetadataField.exifGpsDestDistance:
case MetadataField.exifGpsDestDistanceRef:
case MetadataField.exifGpsDestLatitude:
case MetadataField.exifGpsDestLatitudeRef:
case MetadataField.exifGpsDestLongitude:
case MetadataField.exifGpsDestLongitudeRef:
case MetadataField.exifGpsDifferential:
case MetadataField.exifGpsDOP:
case MetadataField.exifGpsHPositioningError:
case MetadataField.exifGpsImgDirection:
case MetadataField.exifGpsImgDirectionRef:
case MetadataField.exifGpsLatitude:
case MetadataField.exifGpsLatitudeRef:
case MetadataField.exifGpsLongitude:
case MetadataField.exifGpsLongitudeRef:
case MetadataField.exifGpsMapDatum:
case MetadataField.exifGpsMeasureMode:
case MetadataField.exifGpsProcessingMethod:
case MetadataField.exifGpsSatellites:
case MetadataField.exifGpsSpeed:
case MetadataField.exifGpsSpeedRef:
case MetadataField.exifGpsStatus:
case MetadataField.exifGpsTimestamp:
case MetadataField.exifGpsTrack:
case MetadataField.exifGpsTrackRef:
case MetadataField.exifGpsVersionId:
case MetadataField.exifImageDescription:
case MetadataField.exifMake:
case MetadataField.exifModel:
case MetadataField.exifUserComment:
return MetadataType.exif;
case MetadataField.mp4GpsCoordinates:
case MetadataField.mp4RotationDegrees:
case MetadataField.mp4Xmp:
return MetadataType.mp4;
case MetadataField.xmpXmpCreateDate:
return MetadataType.xmp;
}
}
String? get toPlatform {
if (type == MetadataType.exif) {
return _toExifInterfaceTag();
} else {
switch (this) {
case MetadataField.mp4GpsCoordinates:
return 'gpsCoordinates';
case MetadataField.mp4RotationDegrees:
return 'rotationDegrees';
case MetadataField.mp4Xmp:
return 'xmp';
default:
return null;
}
}
}
String? _toExifInterfaceTag() {
switch (this) {
case MetadataField.exifDate:
return 'DateTime';
case MetadataField.exifDateOriginal:
return 'DateTimeOriginal';
case MetadataField.exifDateDigitized:
return 'DateTimeDigitized';
case MetadataField.exifGpsAltitude:
return 'GPSAltitude';
case MetadataField.exifGpsAltitudeRef:
return 'GPSAltitudeRef';
case MetadataField.exifGpsAreaInformation:
return 'GPSAreaInformation';
case MetadataField.exifGpsDatestamp:
return 'GPSDateStamp';
case MetadataField.exifGpsDestBearing:
return 'GPSDestBearing';
case MetadataField.exifGpsDestBearingRef:
return 'GPSDestBearingRef';
case MetadataField.exifGpsDestDistance:
return 'GPSDestDistance';
case MetadataField.exifGpsDestDistanceRef:
return 'GPSDestDistanceRef';
case MetadataField.exifGpsDestLatitude:
return 'GPSDestLatitude';
case MetadataField.exifGpsDestLatitudeRef:
return 'GPSDestLatitudeRef';
case MetadataField.exifGpsDestLongitude:
return 'GPSDestLongitude';
case MetadataField.exifGpsDestLongitudeRef:
return 'GPSDestLongitudeRef';
case MetadataField.exifGpsDifferential:
return 'GPSDifferential';
case MetadataField.exifGpsDOP:
return 'GPSDOP';
case MetadataField.exifGpsHPositioningError:
return 'GPSHPositioningError';
case MetadataField.exifGpsImgDirection:
return 'GPSImgDirection';
case MetadataField.exifGpsImgDirectionRef:
return 'GPSImgDirectionRef';
case MetadataField.exifGpsLatitude:
return 'GPSLatitude';
case MetadataField.exifGpsLatitudeRef:
return 'GPSLatitudeRef';
case MetadataField.exifGpsLongitude:
return 'GPSLongitude';
case MetadataField.exifGpsLongitudeRef:
return 'GPSLongitudeRef';
case MetadataField.exifGpsMapDatum:
return 'GPSMapDatum';
case MetadataField.exifGpsMeasureMode:
return 'GPSMeasureMode';
case MetadataField.exifGpsProcessingMethod:
return 'GPSProcessingMethod';
case MetadataField.exifGpsSatellites:
return 'GPSSatellites';
case MetadataField.exifGpsSpeed:
return 'GPSSpeed';
case MetadataField.exifGpsSpeedRef:
return 'GPSSpeedRef';
case MetadataField.exifGpsStatus:
return 'GPSStatus';
case MetadataField.exifGpsTimestamp:
return 'GPSTimeStamp';
case MetadataField.exifGpsTrack:
return 'GPSTrack';
case MetadataField.exifGpsTrackRef:
return 'GPSTrackRef';
case MetadataField.exifGpsVersionId:
return 'GPSVersionID';
case MetadataField.exifImageDescription:
return 'ImageDescription';
case MetadataField.exifMake:
return 'Make';
case MetadataField.exifModel:
return 'Model';
case MetadataField.exifUserComment:
return 'UserComment';
default:
return null;
}
}
}