Image-ExifTool
view release on metacpan or search on metacpan
lib/Image/ExifTool/PLUS.pm view on Meta::CPAN
},
},
CopyrightRegistrationNumber => { },
FirstPublicationDate => { %Image::ExifTool::XMP::dateTimeInfo, Groups => { 2 => 'Time'} },
CopyrightOwner => {
FlatName => '',
Struct => \%plusCopyrightOwner,
List => 'Seq',
},
CopyrightOwnerImageID => { },
ImageCreator => {
FlatName => '',
Struct => \%plusImageCreator,
List => 'Seq',
},
ImageCreatorImageID => { },
ImageSupplier => {
FlatName => '',
Struct => \%plusImageSupplier,
List => 'Seq',
},
ImageSupplierImageID => { },
LicenseeImageID => { },
LicenseeImageNotes => { Writable => 'lang-alt' },
OtherImageInfo => { Writable => 'lang-alt' },
LicenseID => { },
LicensorTransactionID => { List => 'Bag' },
LicenseeTransactionID => { List => 'Bag' },
LicenseeProjectReference=> { List => 'Bag' },
LicenseTransactionDate => { %Image::ExifTool::XMP::dateTimeInfo, Groups => { 2 => 'Time'} },
Reuse => {
%plusVocab,
PrintConv => {
'RE-REU' => 'Repeat Use',
'RE-NAP' => 'Not Applicable',
},
},
OtherLicenseDocuments => { List => 'Bag' },
OtherLicenseInfo => { Writable => 'lang-alt' },
# Note: these are Bag's of lang-alt lists -- a nested list tag!
Custom1 => { List => 'Bag', Writable => 'lang-alt' },
Custom2 => { List => 'Bag', Writable => 'lang-alt' },
Custom3 => { List => 'Bag', Writable => 'lang-alt' },
Custom4 => { List => 'Bag', Writable => 'lang-alt' },
Custom5 => { List => 'Bag', Writable => 'lang-alt' },
Custom6 => { List => 'Bag', Writable => 'lang-alt' },
Custom7 => { List => 'Bag', Writable => 'lang-alt' },
Custom8 => { List => 'Bag', Writable => 'lang-alt' },
Custom9 => { List => 'Bag', Writable => 'lang-alt' },
Custom10 => { List => 'Bag', Writable => 'lang-alt' },
DataMining => {
%plusVocab,
PrintConv => {
'DMI-UNSPECIFIED' => 'Unspecified - no prohibition defined',
'DMI-ALLOWED' => 'Allowed',
'DMI-PROHIBITED-AIMLTRAINING' => 'Prohibited for AI/ML training',
'DMI-PROHIBITED-GENAIMLTRAINING' => 'Prohibited for Generative AI/ML training',
'DMI-PROHIBITED-EXCEPTSEARCHENGINEINDEXING' => 'Prohibited except for search engine indexing',
'DMI-PROHIBITED' => 'Prohibited',
'DMI-PROHIBITED-SEECONSTRAINT' => 'Prohibited, see plus:OtherConstraints',
'DMI-PROHIBITED-SEEEMBEDDEDRIGHTSEXPR' => 'Prohibited, see iptcExt:EmbdEncRightsExpr',
'DMI-PROHIBITED-SEELINKEDRIGHTSEXPR' => 'Prohibited, see iptcExt:LinkedEncRightsExpr',
},
},
);
#------------------------------------------------------------------------------
# Validate Media Summary Code
# Inputs: 0) Media Usage Code
# Returns: true if OK, false on severe error
# - issues warning for detected format problems
# - repairs some repairable problems
sub ValidateMediaSummary($)
{
my $val = shift;
my @a = split /\|/, $val;
@a >= 4 and $a[0] eq '' or warn("Not a valid Media Summary Code\n"), return 0;
$a[1] eq 'PLUS' or warn("Unrecognized Media Usage standard\n"), return 0;
$a[2] =~ /^V(\d+)/ or warn("Unrecognized Media Usage version\n");
$a[3] =~ /^U(\d+)/ or warn("Invalid Media Usage count\n"), return 0;
my $numUsages = $1;
my ($i, $j);
unless ($numUsages == @a - 4) {
warn("Fixed incorrect number of Media Usages\n");
$numUsages = @a - 4;
$a[3] = sprintf('U%.3d', $numUsages);
}
for ($i=1; $i<=$numUsages; ++$i) {
my $usage = $a[$i + 3];
$usage =~ /^1I([A-Z])([A-Z])/ or warn("Missing Media Usage $i item count\n"), return 0;
length($usage) % 4 and warn("Incorrect Media Usage $i length\n"), return 0;
my $numItems = (ord($1)-65) * 26 + ord($2)-65 + 1;
unless (length($usage) == 4 * ($numItems + 1)) {
$numItems = length($usage) / 4 - 1;
warn("Fixed incorrect Media Usage $i item count\n");
$a[$i+3] = '1I' . chr(65 + int($numItems / 26)) . chr($numItems % 26) . substr($usage, 4);
}
for ($j=1; $j<=$numItems; ++$j) {
my $item = substr($usage, $j*4, 4);
$item =~ /^\d[A-Z]{3}$/ or warn(qq(Invalid item "$item" for Media Usage $i\n)), return 0;
}
}
$_[0] = join('|', @a) . '|' if $Image::ExifTool::evalWarning;
return 1;
}
1; # end
__END__
=head1 NAME
Image::ExifTool::PLUS - PLUS (Picture Licensing Universal System) tags
=head1 DESCRIPTION
Definitions for PLUS (Picture Licensing Universal System) tags.
=head1 AUTHOR
( run in 0.769 second using v1.01-cache-2.11-cpan-71847e10f99 )