exiftool_vendored 10.65.0 → 11.41.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (205) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +818 -19
  3. data/bin/MANIFEST +38 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +48 -44
  7. data/bin/arg_files/exif2xmp.args +4 -1
  8. data/bin/arg_files/gps2xmp.args +4 -1
  9. data/bin/arg_files/iptcCore.args +8 -0
  10. data/bin/arg_files/xmp2exif.args +4 -1
  11. data/bin/arg_files/xmp2gps.args +4 -1
  12. data/bin/config_files/dji.config +131 -0
  13. data/bin/config_files/example.config +6 -2
  14. data/bin/config_files/gps2utm.config +256 -256
  15. data/bin/config_files/nksc.config +146 -0
  16. data/bin/config_files/picasa_faces.config +382 -382
  17. data/bin/exiftool +688 -408
  18. data/bin/fmt_files/gpx.fmt +10 -6
  19. data/bin/fmt_files/gpx_wpt.fmt +10 -6
  20. data/bin/fmt_files/kml.fmt +8 -5
  21. data/bin/lib/File/RandomAccess.pm +48 -8
  22. data/bin/lib/File/RandomAccess.pod +21 -2
  23. data/bin/lib/Image/ExifTool.pm +645 -256
  24. data/bin/lib/Image/ExifTool.pod +219 -164
  25. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  26. data/bin/lib/Image/ExifTool/AFCP.pm +3 -8
  27. data/bin/lib/Image/ExifTool/AIFF.pm +12 -4
  28. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  29. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  30. data/bin/lib/Image/ExifTool/ASF.pm +19 -6
  31. data/bin/lib/Image/ExifTool/Apple.pm +13 -5
  32. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  33. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  34. data/bin/lib/Image/ExifTool/BPG.pm +17 -15
  35. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  36. data/bin/lib/Image/ExifTool/BigTIFF.pm +30 -15
  37. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +103 -52
  38. data/bin/lib/Image/ExifTool/Canon.pm +684 -112
  39. data/bin/lib/Image/ExifTool/CanonCustom.pm +119 -9
  40. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  41. data/bin/lib/Image/ExifTool/CanonVRD.pm +13 -26
  42. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  43. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  44. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  45. data/bin/lib/Image/ExifTool/DICOM.pm +12 -5
  46. data/bin/lib/Image/ExifTool/DJI.pm +51 -3
  47. data/bin/lib/Image/ExifTool/DNG.pm +15 -8
  48. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  49. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  50. data/bin/lib/Image/ExifTool/DarwinCore.pm +63 -23
  51. data/bin/lib/Image/ExifTool/DjVu.pm +4 -2
  52. data/bin/lib/Image/ExifTool/EXE.pm +30 -6
  53. data/bin/lib/Image/ExifTool/Exif.pm +351 -109
  54. data/bin/lib/Image/ExifTool/FITS.pm +148 -0
  55. data/bin/lib/Image/ExifTool/FLAC.pm +2 -2
  56. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  57. data/bin/lib/Image/ExifTool/FLIR.pm +109 -13
  58. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  59. data/bin/lib/Image/ExifTool/Flash.pm +3 -3
  60. data/bin/lib/Image/ExifTool/FlashPix.pm +433 -9
  61. data/bin/lib/Image/ExifTool/Font.pm +2 -2
  62. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  63. data/bin/lib/Image/ExifTool/FujiFilm.pm +336 -16
  64. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  65. data/bin/lib/Image/ExifTool/GIF.pm +5 -7
  66. data/bin/lib/Image/ExifTool/GIMP.pm +39 -3
  67. data/bin/lib/Image/ExifTool/GPS.pm +48 -22
  68. data/bin/lib/Image/ExifTool/GeoTiff.pm +23 -23
  69. data/bin/lib/Image/ExifTool/Geotag.pm +80 -45
  70. data/bin/lib/Image/ExifTool/GoPro.pm +709 -0
  71. data/bin/lib/Image/ExifTool/H264.pm +40 -18
  72. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  73. data/bin/lib/Image/ExifTool/HTML.pm +19 -12
  74. data/bin/lib/Image/ExifTool/HtmlDump.pm +37 -26
  75. data/bin/lib/Image/ExifTool/ICC_Profile.pm +297 -23
  76. data/bin/lib/Image/ExifTool/ID3.pm +12 -7
  77. data/bin/lib/Image/ExifTool/IPTC.pm +48 -19
  78. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  79. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Import.pm +13 -9
  81. data/bin/lib/Image/ExifTool/InDesign.pm +3 -5
  82. data/bin/lib/Image/ExifTool/JPEG.pm +22 -11
  83. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  84. data/bin/lib/Image/ExifTool/JSON.pm +3 -3
  85. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Jpeg2000.pm +2 -2
  87. data/bin/lib/Image/ExifTool/Kodak.pm +1233 -58
  88. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  89. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/de.pm +33 -24
  92. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +64 -2
  93. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +64 -2
  94. data/bin/lib/Image/ExifTool/Lang/es.pm +8 -4
  95. data/bin/lib/Image/ExifTool/Lang/fi.pm +46 -4
  96. data/bin/lib/Image/ExifTool/Lang/fr.pm +5 -3
  97. data/bin/lib/Image/ExifTool/Lang/it.pm +6 -3
  98. data/bin/lib/Image/ExifTool/Lang/ja.pm +15 -3
  99. data/bin/lib/Image/ExifTool/Lang/ko.pm +5 -2
  100. data/bin/lib/Image/ExifTool/Lang/nl.pm +6 -3
  101. data/bin/lib/Image/ExifTool/Lang/pl.pm +2 -2
  102. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  103. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  104. data/bin/lib/Image/ExifTool/Lang/tr.pm +4 -2
  105. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  106. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  107. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  108. data/bin/lib/Image/ExifTool/Lytro.pm +4 -8
  109. data/bin/lib/Image/ExifTool/M2TS.pm +10 -9
  110. data/bin/lib/Image/ExifTool/MIE.pm +12 -8
  111. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  112. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MPEG.pm +2 -3
  117. data/bin/lib/Image/ExifTool/MPF.pm +6 -6
  118. data/bin/lib/Image/ExifTool/MWG.pm +4 -4
  119. data/bin/lib/Image/ExifTool/MXF.pm +2 -2
  120. data/bin/lib/Image/ExifTool/MacOS.pm +184 -34
  121. data/bin/lib/Image/ExifTool/MakerNotes.pm +101 -18
  122. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
  124. data/bin/lib/Image/ExifTool/Minolta.pm +89 -62
  125. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  126. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  127. data/bin/lib/Image/ExifTool/Nikon.pm +1511 -380
  128. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  129. data/bin/lib/Image/ExifTool/NikonCustom.pm +2758 -2935
  130. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  131. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Olympus.pm +47 -8
  134. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  135. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PCX.pm +138 -0
  137. data/bin/lib/Image/ExifTool/PDF.pm +58 -42
  138. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PLIST.pm +12 -5
  141. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PNG.pm +108 -10
  143. data/bin/lib/Image/ExifTool/PPM.pm +3 -3
  144. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  145. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Panasonic.pm +299 -31
  147. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +201 -19
  148. data/bin/lib/Image/ExifTool/Pentax.pm +164 -143
  149. data/bin/lib/Image/ExifTool/PhaseOne.pm +12 -5
  150. data/bin/lib/Image/ExifTool/PhotoCD.pm +9 -10
  151. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Photoshop.pm +230 -60
  153. data/bin/lib/Image/ExifTool/PostScript.pm +29 -4
  154. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
  156. data/bin/lib/Image/ExifTool/QuickTime.pm +1539 -279
  157. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1857 -0
  158. data/bin/lib/Image/ExifTool/README +84 -46
  159. data/bin/lib/Image/ExifTool/RIFF.pm +116 -23
  160. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  161. data/bin/lib/Image/ExifTool/RTF.pm +6 -4
  162. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Rawzor.pm +3 -2
  164. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Reconyx.pm +261 -7
  166. data/bin/lib/Image/ExifTool/Red.pm +325 -0
  167. data/bin/lib/Image/ExifTool/Ricoh.pm +3 -7
  168. data/bin/lib/Image/ExifTool/Samsung.pm +95 -25
  169. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Shift.pl +26 -12
  172. data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -2
  173. data/bin/lib/Image/ExifTool/Sigma.pm +36 -30
  174. data/bin/lib/Image/ExifTool/SigmaRaw.pm +3 -8
  175. data/bin/lib/Image/ExifTool/Sony.pm +531 -177
  176. data/bin/lib/Image/ExifTool/SonyIDC.pm +63 -3
  177. data/bin/lib/Image/ExifTool/Stim.pm +2 -2
  178. data/bin/lib/Image/ExifTool/TagInfoXML.pm +23 -23
  179. data/bin/lib/Image/ExifTool/TagLookup.pm +6352 -5062
  180. data/bin/lib/Image/ExifTool/TagNames.pod +3024 -565
  181. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  182. data/bin/lib/Image/ExifTool/Torrent.pm +2 -2
  183. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  184. data/bin/lib/Image/ExifTool/VCard.pm +47 -9
  185. data/bin/lib/Image/ExifTool/Validate.pm +391 -99
  186. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  187. data/bin/lib/Image/ExifTool/WTV.pm +319 -0
  188. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  189. data/bin/lib/Image/ExifTool/WriteExif.pl +91 -18
  190. data/bin/lib/Image/ExifTool/WriteIPTC.pl +6 -6
  191. data/bin/lib/Image/ExifTool/WritePDF.pl +13 -12
  192. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  193. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  194. data/bin/lib/Image/ExifTool/WritePostScript.pl +2 -2
  195. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +764 -121
  196. data/bin/lib/Image/ExifTool/WriteXMP.pl +176 -67
  197. data/bin/lib/Image/ExifTool/Writer.pl +490 -246
  198. data/bin/lib/Image/ExifTool/XMP.pm +216 -76
  199. data/bin/lib/Image/ExifTool/XMP2.pl +54 -10
  200. data/bin/lib/Image/ExifTool/XMPStruct.pl +14 -11
  201. data/bin/lib/Image/ExifTool/ZIP.pm +60 -15
  202. data/bin/lib/Image/ExifTool/iWork.pm +12 -5
  203. data/bin/perl-Image-ExifTool.spec +46 -44
  204. data/lib/exiftool_vendored/version.rb +1 -1
  205. metadata +14 -4
@@ -25,7 +25,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
25
25
  use Image::ExifTool::Exif;
26
26
  use Image::ExifTool::GPS;
27
27
 
28
- $VERSION = '1.14';
28
+ $VERSION = '1.17';
29
29
 
30
30
  sub ProcessSEI($$);
31
31
 
@@ -433,24 +433,24 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
433
433
  1.1 => {
434
434
  Name => 'ExposureProgram',
435
435
  Mask => 0xf0,
436
- ValueConv => '$val == 0xf0 ? undef : $val',
436
+ ValueConv => '$val == 15 ? undef : $val',
437
437
  PrintConv => {
438
- 0x00 => 'Program AE',
439
- 0x10 => 'Gain', #?
440
- 0x20 => 'Shutter speed priority AE',
441
- 0x30 => 'Aperture-priority AE',
442
- 0x40 => 'Manual',
438
+ 0 => 'Program AE',
439
+ 1 => 'Gain', #?
440
+ 2 => 'Shutter speed priority AE',
441
+ 3 => 'Aperture-priority AE',
442
+ 4 => 'Manual',
443
443
  },
444
444
  },
445
445
  2.1 => {
446
446
  Name => 'WhiteBalance',
447
447
  Mask => 0xe0,
448
- ValueConv => '$val == 0xe0 ? undef : $val',
448
+ ValueConv => '$val == 7 ? undef : $val',
449
449
  PrintConv => {
450
- 0x00 => 'Auto',
451
- 0x20 => 'Hold',
452
- 0x40 => '1-Push',
453
- 0x60 => 'Daylight',
450
+ 0 => 'Auto',
451
+ 1 => 'Hold',
452
+ 2 => '1-Push',
453
+ 3 => 'Daylight',
454
454
  },
455
455
  },
456
456
  3 => {
@@ -710,7 +710,8 @@ sub DecodeScalingMatrices($)
710
710
 
711
711
  #------------------------------------------------------------------------------
712
712
  # Parse H.264 sequence parameter set RBSP (ref 1)
713
- # Inputs) 0) ExifTool ref, 1) tag table ref, 2) data ref
713
+ # Inputs: 0) ExifTool ref, 1) tag table ref, 2) data ref
714
+ # Notes: All this just to get the image size!
714
715
  sub ParseSeqParamSet($$$)
715
716
  {
716
717
  my ($et, $tagTablePtr, $dataPt) = @_;
@@ -832,7 +833,9 @@ sub ParseSeqParamSet($$$)
832
833
 
833
834
  #------------------------------------------------------------------------------
834
835
  # Parse H.264 picture timing SEI message (payload type 1) (ref 1)
835
- # Inputs) 0) ExifTool ref, 1) data ref
836
+ # Inputs: 0) ExifTool ref, 1) data ref
837
+ # Notes: this routine is for test purposes only, and not called unless the
838
+ # $parsePictureTiming flag is set
836
839
  sub ParsePictureTiming($$)
837
840
  {
838
841
  my ($et, $dataPt) = @_;
@@ -889,6 +892,26 @@ sub ParsePictureTiming($$)
889
892
  # Process H.264 Supplementary Enhancement Information (ref 1/PH)
890
893
  # Inputs: 0) Exiftool ref, 1) dirInfo ref, 2) tag table ref
891
894
  # Returns: 1 if we processed payload type 5
895
+ # Payload types:
896
+ # 0 - buffer period
897
+ # 1 - pic timing
898
+ # 2 - pan scan rect
899
+ # 3 - filler payload
900
+ # 4 - user data registered itu t t35
901
+ # 5 - user data unregistered
902
+ # 6 - recovery point
903
+ # 7 - dec ref pic marking repetition
904
+ # 8 - spare pic
905
+ # 9 - sene info
906
+ # 10 - sub seq info
907
+ # 11 - sub seq layer characteristics
908
+ # 12 - sub seq characteristics
909
+ # 13 - full frame freeze
910
+ # 14 - full frame freeze release
911
+ # 15 - full frame snapshot
912
+ # 16 - progressive refinement segment start
913
+ # 17 - progressive refinement segment end
914
+ # 18 - motion constrained slice group set
892
915
  sub ProcessSEI($$)
893
916
  {
894
917
  my ($et, $dirInfo) = @_;
@@ -915,6 +938,7 @@ sub ProcessSEI($$)
915
938
  last unless $t == 255;
916
939
  }
917
940
  return 0 if $pos + $size > $end;
941
+ $et->VPrint(1," (SEI type $type)\n");
918
942
  if ($type == 1) { # picture timing information
919
943
  if ($parsePictureTiming) {
920
944
  my $buff = substr($$dataPt, $pos, $size);
@@ -1031,9 +1055,7 @@ sub ParseH264Video($$)
1031
1055
  $buff .= substr($$dataPt, $pos, $end - $pos);
1032
1056
  if ($verbose > 1) {
1033
1057
  printf $out " NAL Unit Type: 0x%x (%d bytes)\n",$nal_unit_type, length $buff;
1034
- my %parms = ( Out => $out );
1035
- $parms{MaxLen} = 96 if $verbose < 4;
1036
- HexDump(\$buff, undef, %parms) if $verbose > 2;
1058
+ $et->VerboseDump(\$buff);
1037
1059
  }
1038
1060
  pos($$dataPt) = $pos = $nextPos;
1039
1061
 
@@ -1086,7 +1108,7 @@ information from H.264 video streams.
1086
1108
 
1087
1109
  =head1 AUTHOR
1088
1110
 
1089
- Copyright 2003-2017, Phil Harvey (phil at owl.phy.queensu.ca)
1111
+ Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
1090
1112
 
1091
1113
  This library is free software; you can redistribute it and/or modify it
1092
1114
  under the same terms as Perl itself.
@@ -250,7 +250,7 @@ Hewlett-Packard maker notes.
250
250
 
251
251
  =head1 AUTHOR
252
252
 
253
- Copyright 2003-2017, Phil Harvey (phil at owl.phy.queensu.ca)
253
+ Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
254
254
 
255
255
  This library is free software; you can redistribute it and/or modify it
256
256
  under the same terms as Perl itself.
@@ -20,7 +20,7 @@ use Image::ExifTool::PostScript;
20
20
  use Image::ExifTool::XMP qw(EscapeXML UnescapeXML);
21
21
  require Exporter;
22
22
 
23
- $VERSION = '1.15';
23
+ $VERSION = '1.16';
24
24
  @ISA = qw(Exporter);
25
25
  @EXPORT_OK = qw(EscapeHTML UnescapeHTML);
26
26
 
@@ -363,11 +363,11 @@ sub EscapeChar($)
363
363
 
364
364
  #------------------------------------------------------------------------------
365
365
  # Escape any special characters for HTML
366
- # Inputs: 0) UTF-8 string to be escaped
366
+ # Inputs: 0) string to be escaped, 1) optional string encoding (default 'UTF8')
367
367
  # Returns: escaped string
368
- sub EscapeHTML($)
368
+ sub EscapeHTML($;$)
369
369
  {
370
- my $str = shift;
370
+ my ($str, $enc) = @_;
371
371
  # escape XML characters
372
372
  $str = EscapeXML($str);
373
373
  # escape other special characters if they exist
@@ -382,19 +382,26 @@ sub EscapeHTML($)
382
382
  }
383
383
  # suppress warnings
384
384
  local $SIG{'__WARN__'} = sub { 1 };
385
- # escape any non-ascii characters for HTML
386
- $str =~ s/([\xc2-\xf7][\x80-\xbf]+)/EscapeChar($1)/sge;
385
+ if ($enc and $enc ne 'UTF8') {
386
+ $str = Image::ExifTool::Decode(undef, $str, $enc, undef, 'UTF8');
387
+ $str =~ s/([\xc2-\xf7][\x80-\xbf]+)/EscapeChar($1)/sge;
388
+ $str = Image::ExifTool::Decode(undef, $str, 'UTF8', undef, $enc);
389
+ } else {
390
+ # escape any non-ascii characters for HTML
391
+ $str =~ s/([\xc2-\xf7][\x80-\xbf]+)/EscapeChar($1)/sge;
392
+ }
387
393
  }
388
394
  return $str;
389
395
  }
390
396
 
391
397
  #------------------------------------------------------------------------------
392
398
  # Unescape all HTML character references
393
- # Inputs: 0) string to be unescaped
399
+ # Inputs: 0) string to be unescaped, 1) optional string encoding (default 'UTF8')
394
400
  # Returns: unescaped string
395
- sub UnescapeHTML($)
401
+ sub UnescapeHTML($;$)
396
402
  {
397
- return UnescapeXML(shift, \%entityNum);
403
+ my ($str, $enc) = @_;
404
+ return UnescapeXML($str, \%entityNum, $enc);
398
405
  }
399
406
 
400
407
  #------------------------------------------------------------------------------
@@ -502,7 +509,7 @@ sub ProcessHTML($$)
502
509
  $name =~ s/\s(.)/\U$1/g; # capitalize all words in tag name
503
510
  $name =~ tr/-_a-zA-Z0-9//dc; # remove illegal characters (also hex code wide chars)
504
511
  AddTagToTable($table, $tag, { Name => $name });
505
- $et->VPrint(0, " [adding $tag '$name']\n");
512
+ $et->VPrint(0, " [adding $tag '${name}']\n");
506
513
  }
507
514
  $val = $et->Decode($val, $$et{HTMLCharset}) if $$et{HTMLCharset};
508
515
  $et->HandleTag($table, $tag, UnescapeXML($val));
@@ -518,7 +525,7 @@ sub ProcessHTML($$)
518
525
  my $info = { Name => $name, Groups => { 0 => 'HTML' } };
519
526
  $info->{Groups}->{1} = ($grp eq 'http-equiv' ? 'HTTP-equiv' : "HTML-$grp") if $grp;
520
527
  AddTagToTable($table, $tag, $info);
521
- $et->VPrint(0, " [adding $tag '$tagName']\n");
528
+ $et->VPrint(0, " [adding $tag '${tagName}']\n");
522
529
  }
523
530
  # recode if necessary
524
531
  $val = $et->Decode($val, $$et{HTMLCharset}) if $$et{HTMLCharset};
@@ -548,7 +555,7 @@ meta information from HTML documents.
548
555
 
549
556
  =head1 AUTHOR
550
557
 
551
- Copyright 2003-2017, Phil Harvey (phil at owl.phy.queensu.ca)
558
+ Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
552
559
 
553
560
  This library is free software; you can redistribute it and/or modify it
554
561
  under the same terms as Perl itself.
@@ -13,9 +13,9 @@ use vars qw($VERSION);
13
13
  use Image::ExifTool; # only for FinishTiffDump()
14
14
  use Image::ExifTool::HTML qw(EscapeHTML);
15
15
 
16
- $VERSION = '1.34';
16
+ $VERSION = '1.37';
17
17
 
18
- sub DumpTable($$$;$$$$$);
18
+ sub DumpTable($$$;$$$$$$);
19
19
  sub Open($$$;@);
20
20
  sub Write($@);
21
21
 
@@ -32,6 +32,7 @@ _END_PART_1_
32
32
  # Note: Don't change font-weight style because it can affect line height
33
33
  my $htmlHeader2 = <<_END_PART_2_;
34
34
  </title>
35
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
35
36
  <style type="text/css">
36
37
  <!--
37
38
  /* character style ID's */
@@ -111,7 +112,6 @@ function GetElementsByClass(classname, tagname) {
111
112
  }
112
113
  }
113
114
  }
114
- delete list;
115
115
  return found;
116
116
  }
117
117
 
@@ -171,7 +171,9 @@ function high(e,on) {
171
171
  // un-highlight current objects
172
172
  if (hlist) {
173
173
  for (var i=0; i<hlist.length; ++i) {
174
- hlist[i].style.background = 'transparent';
174
+ for (var j=0; j<hlist[i].length; ++j) {
175
+ hlist[i][j].style.background = 'transparent';
176
+ }
175
177
  }
176
178
  hlist = null;
177
179
  }
@@ -190,20 +192,25 @@ function high(e,on) {
190
192
  }
191
193
  }
192
194
  // highlight anchor elements with the same name
193
- hlist = document.getElementsByName(targ.name);
195
+ hlist = new Array;
196
+ hlist.push(document.getElementsByName(targ.name));
197
+ // is this an IFD pointer?
198
+ var pos = targ.className.indexOf('Offset_');
199
+ if (pos > 0) {
200
+ // add elements from this IFD to our highlight list
201
+ hlist.push(document.getElementsByClassName(targ.className.substr(pos+7)));
202
+ }
194
203
  // use class name to highlight span elements if necessary
195
204
  for (var i=0; i<mspan.length; ++i) {
196
205
  if (mspan[i] != targ.name) continue;
197
- var slist = GetElementsByClass(targ.name, 'span');
198
- // add elements from hlist collection to our array
199
- for (var j=0; j<hlist.length; ++j) {
200
- slist[slist.length] = hlist[j];
201
- }
202
- hlist = slist;
206
+ // add these span elements to our highlight list
207
+ hlist.push(GetElementsByClass(targ.name, 'span'));
203
208
  break;
204
209
  }
205
- for (var j=0; j<hlist.length; ++j) {
206
- hlist[j].style.background = '#ffcc99';
210
+ for (var i=0; i<hlist.length; ++i) {
211
+ for (var j=0; j<hlist[i].length; ++j) {
212
+ hlist[i][j].style.background = '#ffcc99';
213
+ }
207
214
  }
208
215
  }
209
216
  }
@@ -236,7 +243,7 @@ sub new
236
243
  # Add information to dump
237
244
  # Inputs: 0) HTML dump hash ref, 1) absolute offset in file, 2) data size,
238
245
  # 3) comment string, 4) tool tip (or SAME to use previous tip),
239
- # 5) bit flags (see below)
246
+ # 5) bit flags (see below), 6) IFD name
240
247
  # Bits: 0x01 - print at start of line
241
248
  # 0x02 - print red address
242
249
  # 0x04 - maker notes data ('M'-class span)
@@ -244,9 +251,9 @@ sub new
244
251
  # 0x10 - allow double references
245
252
  # 0x100 - (reserved)
246
253
  # Notes: Block will be shown in 'unused' color if comment string begins with '['
247
- sub Add($$$$;$)
254
+ sub Add($$$$;$$)
248
255
  {
249
- my ($self, $start, $size, $msg, $tip, $flag) = @_;
256
+ my ($self, $start, $size, $msg, $tip, $flag, $ifd) = @_;
250
257
  my $block = $$self{Block};
251
258
  $$block{$start} or $$block{$start} = [ ];
252
259
  my $htip;
@@ -263,7 +270,7 @@ sub Add($$$$;$)
263
270
  $htip .= "<br>($size bytes)" unless $htip =~ /<br>Size:/;
264
271
  ++$self->{TipNum};
265
272
  }
266
- push @{$$block{$start}}, [ $size, $msg, $htip, $flag, $self->{TipNum} ];
273
+ push @{$$block{$start}}, [ $size, $msg, $htip, $flag, $self->{TipNum}, $ifd ];
267
274
  }
268
275
 
269
276
  #------------------------------------------------------------------------------
@@ -351,7 +358,7 @@ sub Print($$;$$$$$)
351
358
  }
352
359
  my $parms;
353
360
  foreach $parms (@$parmList) {
354
- my ($len, $msg, $tip, $flag, $tipNum) = @$parms;
361
+ my ($len, $msg, $tip, $flag, $tipNum, $ifd) = @$parms;
355
362
  next unless $len > 0;
356
363
  $flag = 0 unless defined $flag;
357
364
  # generate same name for all blocks indexed by this tooltip
@@ -367,8 +374,10 @@ sub Print($$;$$$$$)
367
374
  ++$index;
368
375
  }
369
376
  if ($flag & 0x14) {
377
+ my $class = $flag & 0x04 ? "$name M" : $name;
378
+ $class .= " $ifd" if $ifd;
370
379
  my %bkg = (
371
- Class => $flag & 0x04 ? "$name M" : $name,
380
+ Class => $class,
372
381
  Start => $start - $dataPos,
373
382
  End => $start - $dataPos + $len,
374
383
  );
@@ -428,7 +437,7 @@ sub Print($$;$$$$$)
428
437
  $flag |= 0x100 unless $flag & 0x01 or $nextFlag & 0x01;
429
438
  }
430
439
  $self->DumpTable($start-$dataPos, \$buff, $msg, $name,
431
- $flag, $len, $pos-$dataPos);
440
+ $flag, $len, $pos-$dataPos, $ifd);
432
441
  undef $buff;
433
442
  $pos = $end if $pos < $end;
434
443
  }
@@ -558,10 +567,10 @@ sub Open($$$;@)
558
567
  # Dump a block of data in HTML table form
559
568
  # Inputs: 0) HtmlDump object ref, 1) data position, 2) block pointer,
560
569
  # 3) message, 4) object name, 5) flag, 6) full block length (actual
561
- # data may be shorter), 7) data end position
562
- sub DumpTable($$$;$$$$$)
570
+ # data may be shorter), 7) data end position, 8) IFD name
571
+ sub DumpTable($$$;$$$$$$)
563
572
  {
564
- my ($self, $pos, $blockPt, $msg, $name, $flag, $len, $endPos) = @_;
573
+ my ($self, $pos, $blockPt, $msg, $name, $flag, $len, $endPos, $ifd) = @_;
565
574
  $len = length $$blockPt unless defined $len;
566
575
  $endPos = 0 unless $endPos;
567
576
  my ($f0, $dblRef, $id);
@@ -588,7 +597,8 @@ sub DumpTable($$$;$$$$$)
588
597
  }
589
598
  ++$id unless $dblRef;
590
599
  }
591
- $name = "<a name=$name class=$id>";
600
+ my $class = $ifd ? "'$id $ifd'" : $id;
601
+ $name = "<a name=$name class=$class>";
592
602
  $msg and $msg = "$name$msg</a>";
593
603
  } else {
594
604
  $name = '';
@@ -653,7 +663,8 @@ sub DumpTable($$$;$$$$$)
653
663
  if ($dblRef and $p >= $endPos) {
654
664
  $dblRef = 0;
655
665
  ++$id;
656
- $name =~ s/class=\w\b/class=$id/;
666
+ my $class = $ifd ? "'$id $ifd'" : $id;
667
+ $name =~ s/class=\w\b/class=$class/;
657
668
  $f0 = '';
658
669
  $self->Open('fgd', $f0, 0);
659
670
  }
@@ -885,7 +896,7 @@ page.
885
896
 
886
897
  =head1 AUTHOR
887
898
 
888
- Copyright 2003-2017, Phil Harvey (phil at owl.phy.queensu.ca)
899
+ Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
889
900
 
890
901
  This library is free software; you can redistribute it and/or modify it
891
902
  under the same terms as Perl itself.
@@ -10,6 +10,7 @@
10
10
  # 3) http://developer.apple.com/documentation/GraphicsImaging/Reference/ColorSync_Manager/ColorSync_Manager.pdf
11
11
  # 4) http://www.color.org/privatetag2007-01.pdf
12
12
  # 5) http://www.color.org/icc_specs2.xalter (approved revisions, 2010-07-16)
13
+ # 6) Eef Vreeland private communication
13
14
  #
14
15
  # Notes: The ICC profile information is different: the format of each
15
16
  # tag is embedded in the information instead of in the directory
@@ -23,7 +24,7 @@ use strict;
23
24
  use vars qw($VERSION);
24
25
  use Image::ExifTool qw(:DataAccess :Utils);
25
26
 
26
- $VERSION = '1.31';
27
+ $VERSION = '1.35';
27
28
 
28
29
  sub ProcessICC($$);
29
30
  sub ProcessICC_Profile($$$);
@@ -52,6 +53,283 @@ my %profileClass = (
52
53
  nmcl => 'NamedColor Profile',
53
54
  nkpf => 'Nikon Input Device Profile (NON-STANDARD!)', # (written by Nikon utilities)
54
55
  );
56
+ my %manuSig = ( #6
57
+ 'NONE' => 'none',
58
+ 'none' => 'none', #PH
59
+ '' => '', #PH
60
+ '4d2p' => 'Erdt Systems GmbH & Co KG',
61
+ 'AAMA' => 'Aamazing Technologies, Inc.',
62
+ 'ACER' => 'Acer Peripherals',
63
+ 'ACLT' => 'Acolyte Color Research',
64
+ 'ACTI' => 'Actix Sytems, Inc.',
65
+ 'ADAR' => 'Adara Technology, Inc.',
66
+ 'ADBE' => 'Adobe Systems Inc.',
67
+ 'ADI ' => 'ADI Systems, Inc.',
68
+ 'AGFA' => 'Agfa Graphics N.V.',
69
+ 'ALMD' => 'Alps Electric USA, Inc.',
70
+ 'ALPS' => 'Alps Electric USA, Inc.',
71
+ 'ALWN' => 'Alwan Color Expertise',
72
+ 'AMTI' => 'Amiable Technologies, Inc.',
73
+ 'AOC ' => 'AOC International (U.S.A), Ltd.',
74
+ 'APAG' => 'Apago',
75
+ 'APPL' => 'Apple Computer Inc.',
76
+ 'appl' => 'Apple Computer Inc.',
77
+ 'AST ' => 'AST',
78
+ 'AT&T' => 'AT&T Computer Systems',
79
+ 'BAEL' => 'BARBIERI electronic',
80
+ 'berg' => 'bergdesign incorporated',
81
+ 'bICC' => 'basICColor GmbH',
82
+ 'BRCO' => 'Barco NV',
83
+ 'BRKP' => 'Breakpoint Pty Limited',
84
+ 'BROT' => 'Brother Industries, LTD',
85
+ 'BULL' => 'Bull',
86
+ 'BUS ' => 'Bus Computer Systems',
87
+ 'C-IT' => 'C-Itoh',
88
+ 'CAMR' => 'Intel Corporation',
89
+ 'CANO' => 'Canon, Inc. (Canon Development Americas, Inc.)',
90
+ 'CARR' => 'Carroll Touch',
91
+ 'CASI' => 'Casio Computer Co., Ltd.',
92
+ 'CBUS' => 'Colorbus PL',
93
+ 'CEL ' => 'Crossfield',
94
+ 'CELx' => 'Crossfield',
95
+ 'ceyd' => 'Integrated Color Solutions, Inc.',
96
+ 'CGS ' => 'CGS Publishing Technologies International GmbH',
97
+ 'CHM ' => 'Rochester Robotics',
98
+ 'CIGL' => 'Colour Imaging Group, London',
99
+ 'CITI' => 'Citizen',
100
+ 'CL00' => 'Candela, Ltd.',
101
+ 'CLIQ' => 'Color IQ',
102
+ 'clsp' => 'MacDermid ColorSpan, Inc.',
103
+ 'CMCO' => 'Chromaco, Inc.',
104
+ 'CMiX' => 'CHROMiX',
105
+ 'COLO' => 'Colorgraphic Communications Corporation',
106
+ 'COMP' => 'COMPAQ Computer Corporation',
107
+ 'COMp' => 'Compeq USA/Focus Technology',
108
+ 'CONR' => 'Conrac Display Products',
109
+ 'CORD' => 'Cordata Technologies, Inc.',
110
+ 'CPQ ' => 'Compaq Computer Corporation',
111
+ 'CPRO' => 'ColorPro',
112
+ 'CRN ' => 'Cornerstone',
113
+ 'CTX ' => 'CTX International, Inc.',
114
+ 'CVIS' => 'ColorVision',
115
+ 'CWC ' => 'Fujitsu Laboratories, Ltd.',
116
+ 'DARI' => 'Darius Technology, Ltd.',
117
+ 'DATA' => 'Dataproducts',
118
+ 'DCP ' => 'Dry Creek Photo',
119
+ 'DCRC' => 'Digital Contents Resource Center, Chung-Ang University',
120
+ 'DELL' => 'Dell Computer Corporation',
121
+ 'DIC ' => 'Dainippon Ink and Chemicals',
122
+ 'DICO' => 'Diconix',
123
+ 'DIGI' => 'Digital',
124
+ 'DL&C' => 'Digital Light & Color',
125
+ 'DPLG' => 'Doppelganger, LLC',
126
+ 'DS ' => 'Dainippon Screen',
127
+ 'ds ' => 'Dainippon Screen',
128
+ 'DSOL' => 'DOOSOL',
129
+ 'DUPN' => 'DuPont',
130
+ 'dupn' => 'DuPont',
131
+ 'Eizo' => 'EIZO NANAO CORPORATION',
132
+ 'EPSO' => 'Epson',
133
+ 'ESKO' => 'Esko-Graphics',
134
+ 'ETRI' => 'Electronics and Telecommunications Research Institute',
135
+ 'EVER' => 'Everex Systems, Inc.',
136
+ 'EXAC' => 'ExactCODE GmbH',
137
+ 'FALC' => 'Falco Data Products, Inc.',
138
+ 'FF ' => 'Fuji Photo Film Co.,LTD',
139
+ 'FFEI' => 'FujiFilm Electronic Imaging, Ltd.',
140
+ 'ffei' => 'FujiFilm Electronic Imaging, Ltd.',
141
+ 'flux' => 'FluxData Corporation',
142
+ 'FNRD' => 'fnord software',
143
+ 'FORA' => 'Fora, Inc.',
144
+ 'FORE' => 'Forefront Technology Corporation',
145
+ 'FP ' => 'Fujitsu',
146
+ 'FPA ' => 'WayTech Development, Inc.',
147
+ 'FUJI' => 'Fujitsu',
148
+ 'FX ' => 'Fuji Xerox Co., Ltd.',
149
+ 'GCC ' => 'GCC Technologies, Inc.',
150
+ 'GGSL' => 'Global Graphics Software Limited',
151
+ 'GMB ' => 'Gretagmacbeth',
152
+ 'GMG ' => 'GMG GmbH & Co. KG',
153
+ 'GOLD' => 'GoldStar Technology, Inc.',
154
+ 'GOOG' => 'Google', #PH
155
+ 'GPRT' => 'Giantprint Pty Ltd',
156
+ 'GTMB' => 'Gretagmacbeth',
157
+ 'GVC ' => 'WayTech Development, Inc.',
158
+ 'GW2K' => 'Sony Corporation',
159
+ 'HCI ' => 'HCI',
160
+ 'HDM ' => 'Heidelberger Druckmaschinen AG',
161
+ 'HERM' => 'Hermes',
162
+ 'HITA' => 'Hitachi America, Ltd.',
163
+ 'HiTi' => 'HiTi Digital, Inc.',
164
+ 'HP ' => 'Hewlett-Packard',
165
+ 'HTC ' => 'Hitachi, Ltd.',
166
+ 'IBM ' => 'IBM Corporation',
167
+ 'IDNT' => 'Scitex Corporation, Ltd.',
168
+ 'Idnt' => 'Scitex Corporation, Ltd.',
169
+ 'IEC ' => 'Hewlett-Packard',
170
+ 'IIYA' => 'Iiyama North America, Inc.',
171
+ 'IKEG' => 'Ikegami Electronics, Inc.',
172
+ 'IMAG' => 'Image Systems Corporation',
173
+ 'IMI ' => 'Ingram Micro, Inc.',
174
+ 'Inca' => 'Inca Digital Printers Ltd.',
175
+ 'INTC' => 'Intel Corporation',
176
+ 'INTL' => 'N/A (INTL)',
177
+ 'INTR' => 'Intra Electronics USA, Inc.',
178
+ 'IOCO' => 'Iocomm International Technology Corporation',
179
+ 'IPS ' => 'InfoPrint Solutions Company',
180
+ 'IRIS' => 'Scitex Corporation, Ltd.',
181
+ 'Iris' => 'Scitex Corporation, Ltd.',
182
+ 'iris' => 'Scitex Corporation, Ltd.',
183
+ 'ISL ' => 'Ichikawa Soft Laboratory',
184
+ 'ITNL' => 'N/A (ITNL)',
185
+ 'IVM ' => 'IVM',
186
+ 'IWAT' => 'Iwatsu Electric Co., Ltd.',
187
+ 'JPEG' => 'Joint Photographic Experts Group', #PH
188
+ 'JSFT' => 'Jetsoft Development',
189
+ 'JVC ' => 'JVC Information Products Co.',
190
+ 'KART' => 'Scitex Corporation, Ltd.',
191
+ 'Kart' => 'Scitex Corporation, Ltd.',
192
+ 'kart' => 'Scitex Corporation, Ltd.',
193
+ 'KFC ' => 'KFC Computek Components Corporation',
194
+ 'KLH ' => 'KLH Computers',
195
+ 'KMHD' => 'Konica Minolta Holdings, Inc.',
196
+ 'KNCA' => 'Konica Corporation',
197
+ 'KODA' => 'Kodak',
198
+ 'KYOC' => 'Kyocera',
199
+ 'LCAG' => 'Leica Camera AG',
200
+ 'LCCD' => 'Leeds Colour',
201
+ 'lcms' => 'Little CMS', #NealKrawetz
202
+ 'LDAK' => 'Left Dakota',
203
+ 'LEAD' => 'Leading Technology, Inc.',
204
+ 'Leaf' => 'Leaf', #PH
205
+ 'LEXM' => 'Lexmark International, Inc.',
206
+ 'LINK' => 'Link Computer, Inc.',
207
+ 'LINO' => 'Linotronic',
208
+ 'Lino' => 'Linotronic', #PH (NC)
209
+ 'lino' => 'Linotronic', #PH (NC)
210
+ 'LITE' => 'Lite-On, Inc.',
211
+ 'MAGC' => 'Mag Computronic (USA) Inc.',
212
+ 'MAGI' => 'MAG Innovision, Inc.',
213
+ 'MANN' => 'Mannesmann',
214
+ 'MICN' => 'Micron Technology, Inc.',
215
+ 'MICR' => 'Microtek',
216
+ 'MICV' => 'Microvitec, Inc.',
217
+ 'MINO' => 'Minolta',
218
+ 'MITS' => 'Mitsubishi Electronics America, Inc.',
219
+ 'MITs' => 'Mitsuba Corporation',
220
+ 'Mits' => 'Mitsubishi Electric Corporation Kyoto Works',
221
+ 'MNLT' => 'Minolta',
222
+ 'MODG' => 'Modgraph, Inc.',
223
+ 'MONI' => 'Monitronix, Inc.',
224
+ 'MONS' => 'Monaco Systems Inc.',
225
+ 'MORS' => 'Morse Technology, Inc.',
226
+ 'MOTI' => 'Motive Systems',
227
+ 'MSFT' => 'Microsoft Corporation',
228
+ 'MUTO' => 'MUTOH INDUSTRIES LTD.',
229
+ 'NANA' => 'NANAO USA Corporation',
230
+ 'NEC ' => 'NEC Corporation',
231
+ 'NEXP' => 'NexPress Solutions LLC',
232
+ 'NISS' => 'Nissei Sangyo America, Ltd.',
233
+ 'NKON' => 'Nikon Corporation',
234
+ 'ob4d' => 'Erdt Systems GmbH & Co KG',
235
+ 'obic' => 'Medigraph GmbH',
236
+ 'OCE ' => 'Oce Technologies B.V.',
237
+ 'OCEC' => 'OceColor',
238
+ 'OKI ' => 'Oki',
239
+ 'OKID' => 'Okidata',
240
+ 'OKIP' => 'Okidata',
241
+ 'OLIV' => 'Olivetti',
242
+ 'OLYM' => 'OLYMPUS OPTICAL CO., LTD',
243
+ 'ONYX' => 'Onyx Graphics',
244
+ 'OPTI' => 'Optiquest',
245
+ 'PACK' => 'Packard Bell',
246
+ 'PANA' => 'Matsushita Electric Industrial Co., Ltd.',
247
+ 'PANT' => 'Pantone, Inc.',
248
+ 'PBN ' => 'Packard Bell',
249
+ 'PFU ' => 'PFU Limited',
250
+ 'PHIL' => 'Philips Consumer Electronics Co.',
251
+ 'PNTX' => 'HOYA Corporation PENTAX Imaging Systems Division',
252
+ 'POne' => 'Phase One A/S',
253
+ 'PREM' => 'Premier Computer Innovations',
254
+ 'PRIN' => 'Princeton Graphic Systems',
255
+ 'PRIP' => 'Princeton Publishing Labs',
256
+ 'QLUX' => 'Hong Kong',
257
+ 'QMS ' => 'QMS, Inc.',
258
+ 'QPCD' => 'QPcard AB',
259
+ 'QUAD' => 'QuadLaser',
260
+ 'quby' => 'Qubyx Sarl',
261
+ 'QUME' => 'Qume Corporation',
262
+ 'RADI' => 'Radius, Inc.',
263
+ 'RDDx' => 'Integrated Color Solutions, Inc.',
264
+ 'RDG ' => 'Roland DG Corporation',
265
+ 'REDM' => 'REDMS Group, Inc.',
266
+ 'RELI' => 'Relisys',
267
+ 'RGMS' => 'Rolf Gierling Multitools',
268
+ 'RICO' => 'Ricoh Corporation',
269
+ 'RNLD' => 'Edmund Ronald',
270
+ 'ROYA' => 'Royal',
271
+ 'RPC ' => 'Ricoh Printing Systems,Ltd.',
272
+ 'RTL ' => 'Royal Information Electronics Co., Ltd.',
273
+ 'SAMP' => 'Sampo Corporation of America',
274
+ 'SAMS' => 'Samsung, Inc.',
275
+ 'SANT' => 'Jaime Santana Pomares',
276
+ 'SCIT' => 'Scitex Corporation, Ltd.',
277
+ 'Scit' => 'Scitex Corporation, Ltd.',
278
+ 'scit' => 'Scitex Corporation, Ltd.',
279
+ 'SCRN' => 'Dainippon Screen',
280
+ 'scrn' => 'Dainippon Screen',
281
+ 'SDP ' => 'Scitex Corporation, Ltd.',
282
+ 'Sdp ' => 'Scitex Corporation, Ltd.',
283
+ 'sdp ' => 'Scitex Corporation, Ltd.',
284
+ 'SEC ' => 'SAMSUNG ELECTRONICS CO.,LTD',
285
+ 'SEIK' => 'Seiko Instruments U.S.A., Inc.',
286
+ 'SEIk' => 'Seikosha',
287
+ 'SGUY' => 'ScanGuy.com',
288
+ 'SHAR' => 'Sharp Laboratories',
289
+ 'SICC' => 'International Color Consortium',
290
+ 'siwi' => 'SIWI GRAFIKA CORPORATION',
291
+ 'SONY' => 'SONY Corporation',
292
+ 'Sony' => 'Sony Corporation',
293
+ 'SPCL' => 'SpectraCal',
294
+ 'STAR' => 'Star',
295
+ 'STC ' => 'Sampo Technology Corporation',
296
+ 'TALO' => 'Talon Technology Corporation',
297
+ 'TAND' => 'Tandy',
298
+ 'TATU' => 'Tatung Co. of America, Inc.',
299
+ 'TAXA' => 'TAXAN America, Inc.',
300
+ 'TDS ' => 'Tokyo Denshi Sekei K.K.',
301
+ 'TECO' => 'TECO Information Systems, Inc.',
302
+ 'TEGR' => 'Tegra',
303
+ 'TEKT' => 'Tektronix, Inc.',
304
+ 'TI ' => 'Texas Instruments',
305
+ 'TMKR' => 'TypeMaker Ltd.',
306
+ 'TOSB' => 'TOSHIBA corp.',
307
+ 'TOSH' => 'Toshiba, Inc.',
308
+ 'TOTK' => 'TOTOKU ELECTRIC Co., LTD',
309
+ 'TRIU' => 'Triumph',
310
+ 'TSBT' => 'TOSHIBA TEC CORPORATION',
311
+ 'TTX ' => 'TTX Computer Products, Inc.',
312
+ 'TVM ' => 'TVM Professional Monitor Corporation',
313
+ 'TW ' => 'TW Casper Corporation',
314
+ 'ULSX' => 'Ulead Systems',
315
+ 'UNIS' => 'Unisys',
316
+ 'UTZF' => 'Utz Fehlau & Sohn',
317
+ 'VARI' => 'Varityper',
318
+ 'VIEW' => 'Viewsonic',
319
+ 'VISL' => 'Visual communication',
320
+ 'VIVO' => 'Vivo Mobile Communication Co., Ltd',
321
+ 'WANG' => 'Wang',
322
+ 'WLBR' => 'Wilbur Imaging',
323
+ 'WTG2' => 'Ware To Go',
324
+ 'WYSE' => 'WYSE Technology',
325
+ 'XERX' => 'Xerox Corporation',
326
+ 'XRIT' => 'X-Rite',
327
+ 'yxym' => 'YxyMaster GmbH',
328
+ 'Z123' => "Lavanya's test Company",
329
+ 'Zebr' => 'Zebra Technologies Inc',
330
+ 'ZRAN' => 'Zoran Corporation',
331
+ # also seen: " ",ACMS,KCMS,UCCM,etc2,SCTX
332
+ );
55
333
 
56
334
  # ICC_Profile tag table
57
335
  %Image::ExifTool::ICC_Profile::Main = (
@@ -85,7 +363,7 @@ my %profileClass = (
85
363
  },
86
364
  targ => {
87
365
  Name => 'CharTarget',
88
- ValueConv => 'length $val > 128 ? \$val : $val',
366
+ ValueConv => '$val=~s/\0.*//; length $val > 128 ? \$val : $val',
89
367
  },
90
368
  chad => 'ChromaticAdaptation',
91
369
  chrm => {
@@ -256,6 +534,11 @@ my %profileClass = (
256
534
  # Microsoft custom tags (ref http://msdn2.microsoft.com/en-us/library/ms536870.aspx)
257
535
  MS00 => 'WCSProfiles',
258
536
 
537
+ psd3 => { #6
538
+ Name => 'PostScript2CRD3',
539
+ Binary => 1, # (NC)
540
+ },
541
+
259
542
  # the following entry represents the ICC profile header, and doesn't
260
543
  # exist as a tag in the directory. It is only in this table to provide
261
544
  # a link so ExifTool can locate the header tags
@@ -274,7 +557,8 @@ my %profileClass = (
274
557
  4 => {
275
558
  Name => 'ProfileCMMType',
276
559
  Format => 'string[4]',
277
- # seen: " ",ACMS,ADBE,APPLE,KCMS,Lino,NKON,UCCM,appl,etc2,lino,none
560
+ SeparateTable => 'ManuSig',
561
+ PrintConv => \%manuSig,
278
562
  },
279
563
  8 => {
280
564
  Name => 'ProfileVersion',
@@ -327,24 +611,13 @@ my %profileClass = (
327
611
  48 => {
328
612
  Name => 'DeviceManufacturer',
329
613
  Format => 'string[4]',
330
- # KODA = Kodak
331
- # ADBE = Adobe ...?
332
- # appl = Apple
333
- # HP = HP
334
- # CANO = Canon
335
- # ISL = ?
336
- # JPEG = JPEG
337
- # Leaf = Leaf
338
- # MNLT = ?
339
- # MSFT = Microsoft
340
- # POne = ?
341
- # etc2 = ?
342
- # lcms = ?
614
+ SeparateTable => 'ManuSig',
615
+ PrintConv => \%manuSig,
343
616
  },
344
617
  52 => {
345
618
  Name => 'DeviceModel',
346
619
  Format => 'string[4]',
347
- # ROMM = Refrence Output Medium Metric
620
+ # ROMM = Reference Output Medium Metric
348
621
  },
349
622
  56 => {
350
623
  Name => 'DeviceAttributes',
@@ -374,7 +647,8 @@ my %profileClass = (
374
647
  80 => {
375
648
  Name => 'ProfileCreator',
376
649
  Format => 'string[4]',
377
- # KODA = Kodak
650
+ SeparateTable => 'ManuSig',
651
+ PrintConv => \%manuSig,
378
652
  },
379
653
  84 => {
380
654
  Name => 'ProfileID',
@@ -530,7 +804,7 @@ my %profileClass = (
530
804
  );
531
805
 
532
806
  #------------------------------------------------------------------------------
533
- # print ICC Profile ID in hex
807
+ # Print ICC Profile ID in hex
534
808
  # Inputs: 1) string of numbers
535
809
  # Returns: string of hex digits
536
810
  sub HexID($)
@@ -545,7 +819,7 @@ sub HexID($)
545
819
  }
546
820
 
547
821
  #------------------------------------------------------------------------------
548
- # get formatted value from ICC tag (which has the type embedded)
822
+ # Get formatted value from ICC tag (which has the type embedded)
549
823
  # Inputs: 0) data reference, 1) offset to tag data, 2) tag data size
550
824
  # Returns: Formatted value or undefined if format not supported
551
825
  # Notes: The following types are handled by BinaryTables:
@@ -906,7 +1180,7 @@ sub ProcessICC_Profile($$$)
906
1180
  DataPt => $dataPt,
907
1181
  Size => $strLen,
908
1182
  Start => $valuePtr + $strPos,
909
- Format => "type '$fmt'",
1183
+ Format => "type '${fmt}'",
910
1184
  );
911
1185
  }
912
1186
  $et->Warn("Corrupted $$tagInfo{Name} data") if $i < $count;
@@ -923,7 +1197,7 @@ sub ProcessICC_Profile($$$)
923
1197
  DataPt => $dataPt,
924
1198
  Size => $size,
925
1199
  Start => $valuePtr,
926
- Format => "type '$fmt'",
1200
+ Format => "type '${fmt}'",
927
1201
  );
928
1202
  if ($subdir) {
929
1203
  my $name = $$tagInfo{Name};
@@ -990,7 +1264,7 @@ data created on one device into another device's native color space.
990
1264
 
991
1265
  =head1 AUTHOR
992
1266
 
993
- Copyright 2003-2017, Phil Harvey (phil at owl.phy.queensu.ca)
1267
+ Copyright 2003-2019, Phil Harvey (phil at owl.phy.queensu.ca)
994
1268
 
995
1269
  This library is free software; you can redistribute it and/or modify it
996
1270
  under the same terms as Perl itself.