Ignore:
Timestamp:
2011-06-01T12:33:42+12:00 (13 years ago)
Author:
sjm84
Message:

Updating the ExifTool perl modules

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/cpan/Image/ExifTool/WritePhotoshop.pl

    r16842 r24107  
    5555    my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $start);
    5656    my $dirEnd = $start + $dirLen;
    57     my $verbose = $exifTool->Options('Verbose');
    58     my $out = $exifTool->Options('TextOut');
    5957    my $newData = '';
    6058
     
    104102            $tagInfo = $$newTags{$tagID};
    105103            delete $$newTags{$tagID};
    106             my $newValueHash = $exifTool->GetNewValueHash($tagInfo);
     104            my $nvHash = $exifTool->GetNewValueHash($tagInfo);
    107105            # check to see if we are overwriting this tag
    108106            $value = substr($$dataPt, $pos, $size);
    109             if (Image::ExifTool::IsOverwriting($newValueHash, $value)) {
    110                 $verbose > 1 and print $out "    - Photoshop:$$tagInfo{Name} = '$value'\n";
    111                 $value = Image::ExifTool::GetNewValues($newValueHash);
     107            my $isOverwriting = Image::ExifTool::IsOverwriting($nvHash, $value);
     108            # handle special 'new' and 'old' values for IPTCDigest
     109            if (not $isOverwriting and $tagInfo eq $iptcDigestInfo) {
     110                if (grep /^new$/, @{$$nvHash{DelValue}}) {
     111                    $isOverwriting = 1 if $$exifTool{NewIPTCDigest} and
     112                                          $$exifTool{NewIPTCDigest} eq $value;
     113                }
     114                if (grep /^old$/, @{$$nvHash{DelValue}}) {
     115                    $isOverwriting = 1 if $$exifTool{OldIPTCDigest} and
     116                                          $$exifTool{OldIPTCDigest} eq $value;
     117                }
     118            }
     119            if ($isOverwriting) {
     120                $exifTool->VerboseValue("- Photoshop:$$tagInfo{Name}", $value);
     121                # handle IPTCDigest specially because we want to write it last
     122                # so the new IPTC digest will be known
     123                if ($tagInfo eq $iptcDigestInfo) {
     124                    $$newTags{$tagID} = $tagInfo;   # add later
     125                    $value = undef;
     126                } else {
     127                    $value = Image::ExifTool::GetNewValues($nvHash);
     128                }
    112129                ++$exifTool->{CHANGED};
    113130                next unless defined $value;     # next if tag is being deleted
    114131                # set resource name if necessary
    115132                SetResourceName($tagInfo, $name, \$value);
    116                 $verbose > 1 and print $out "    + Photoshop:$$tagInfo{Name} = '$value'\n";
     133                $exifTool->VerboseValue("+ Photoshop:$$tagInfo{Name}", $value);
    117134            }
    118135        } else {
     
    168185        if ($$newTags{$tagID}) {
    169186            $tagInfo = $$newTags{$tagID};
    170             my $newValueHash = $exifTool->GetNewValueHash($tagInfo);
    171             $value = Image::ExifTool::GetNewValues($newValueHash);
     187            my $nvHash = $exifTool->GetNewValueHash($tagInfo);
     188            $value = Image::ExifTool::GetNewValues($nvHash);
     189            # handle new IPTCDigest value specially
     190            if ($tagInfo eq $iptcDigestInfo and defined $value) {
     191                if ($value eq 'new') {
     192                    $value = $$exifTool{NewIPTCDigest};
     193                } elsif ($value eq 'old') {
     194                    $value = $$exifTool{OldIPTCDigest};
     195                }
     196                # (we already know we want to create this tag)
     197            } else {
     198                # don't add this tag unless specified
     199                next unless Image::ExifTool::IsCreating($nvHash);
     200            }
    172201            next unless defined $value;     # next if tag is being deleted
    173             # don't add this tag unless specified
    174             next unless Image::ExifTool::IsCreating($newValueHash);
    175             $verbose > 1 and print $out "    + Photoshop:$$tagInfo{Name} = '$value'\n";
     202            $exifTool->VerboseValue("+ Photoshop:$$tagInfo{Name}", $value);
    176203            ++$exifTool->{CHANGED};
    177204        } else {
     
    227254=head1 AUTHOR
    228255
    229 Copyright 2003-2007, Phil Harvey (phil at owl.phy.queensu.ca)
     256Copyright 2003-2011, Phil Harvey (phil at owl.phy.queensu.ca)
    230257
    231258This library is free software; you can redistribute it and/or modify it
Note: See TracChangeset for help on using the changeset viewer.