#FEATURE by exept
class: TIFFReader
changed: #decodeTiffTag:numberType:length:
class: TIFFReader class
comment/format in: #documentation
--- a/TIFFReader.st Fri Jan 17 19:51:55 2020 +0100
+++ b/TIFFReader.st Fri Jan 17 20:34:56 2020 +0100
@@ -109,6 +109,7 @@
ST80FormReader SunRasterReader TargaReader WindowsIconReader
XBMReader XPMReader XWDReader
https://exiftool.org/TagNames/EXIF.html
+ http://www.loc.gov/preservation/digital/formats/content/tiff_tags.shtml
"
! !
@@ -2436,7 +2437,7 @@
"thresholding := value."
"/ 'thresholding ' print. value printNewline.
-
+ metaData at:#Thresholding put:value.
^ self
].
(tagType == 264 "0x108") ifTrue:[
@@ -2571,7 +2572,8 @@
].
(tagType == 282) ifTrue:[
"/ xResolution
- metaData at:#ResolutionX put:value.
+ metaData at:#ResolutionX put:value. "/ for backward compat.
+ metaData at:#XResolution put:value. "/ for standard conformity
Verbose == true ifTrue:[
Logger info:' xResolution: %1 (%2)' with:value with:value asFloat
].
@@ -2579,7 +2581,8 @@
].
(tagType == 283) ifTrue:[
"/ yResolution
- metaData at:#ResolutionY put:value.
+ metaData at:#ResolutionY put:value. "/ for backward compat.
+ metaData at:#YResolution put:value. "/ for standard conformity
Verbose == true ifTrue:[
Logger info:' yResolution: %1 (%2)' with:value with:value asFloat
].
@@ -2607,7 +2610,8 @@
].
(tagType == 286) ifTrue:[
"/ xPosition
- metaData at:#PositionX put:value.
+ metaData at:#PositionX put:value. "/ for backward compat.
+ metaData at:#XPosition put:value. "/ for standard conformity
Verbose == true ifTrue:[
Logger info:' xPosition: %1' with:value
].
@@ -2615,7 +2619,8 @@
].
(tagType == 287) ifTrue:[
"/ yPosition
- metaData at:#PositionY put:value.
+ metaData at:#PositionY put:value. "/ for backward compat.
+ metaData at:#YPosition put:value. "/ for standard conformity
Verbose == true ifTrue:[
Logger info:' yPosition: %1' with:value
].
@@ -2879,15 +2884,18 @@
^ self
].
(tagType == 332) ifTrue:[
+ "/ InkSet (used with Photometric=5)
"/ 'ink set' print. value printNewline.
^ self
].
(tagType == 333) ifTrue:[
+ "/ InkNames (used with Photometric=5)
"/ 'ink names' print. value printNewline.
metaData at:#IncNames put:value.
^ self
].
(tagType == 334) ifTrue:[
+ "/ NumberOfInks (used with Photometric=5)
"/ 'numinks' print. value printNewline.
^ self
].
@@ -2964,31 +2972,31 @@
(tagType between:400 and:499) ifTrue:[
(tagType == 400) ifTrue:[
- "/ 'GlobalParametersIFD' print. value printNewline.
+ "/ 'GlobalParametersIFD (TIFF-FX)' print. value printNewline.
^ self
].
(tagType == 401) ifTrue:[
- "/ 'ProfileType' print. value printNewline.
+ "/ 'ProfileType (TIFF-FX)' print. value printNewline.
^ self
].
(tagType == 402) ifTrue:[
- "/ 'FaxProfile' print. value printNewline.
+ "/ 'FaxProfile (TIFF-FX)' print. value printNewline.
^ self
].
(tagType == 403) ifTrue:[
- "/ 'CodingMethods' print. value printNewline.
+ "/ 'CodingMethods (TIFF-FX)' print. value printNewline.
^ self
].
(tagType == 404) ifTrue:[
- "/ 'VersionYear' print. value printNewline.
+ "/ 'VersionYear (TIFF-FX)' print. value printNewline.
^ self
].
(tagType == 405) ifTrue:[
- "/ 'ModeNumber' print. value printNewline.
+ "/ 'ModeNumber (TIFF-FX)' print. value printNewline.
^ self
].
(tagType == 433) ifTrue:[
- "/ 'Decode' print. value printNewline.
+ "/ 'Decode' print (TIFF-FX). value printNewline.
^ self
].
(tagType == 434) ifTrue:[
@@ -3131,7 +3139,7 @@
].
].
- (tagType between:32000 and:32999) ifTrue:[
+ (tagType between:32000 "0x7D00" and:32999 "0x80E7") ifTrue:[
(tagType == 32781 "0x800D") ifTrue:[
"/'imageid' print. value printNewline.
^ self
@@ -3189,7 +3197,7 @@
].
].
- (tagType between:33000 and:33999) ifTrue:[
+ (tagType between:33000 "16r80E8" and:33999 "16r84CF") ifTrue:[
"/ Private Pixar tags
(tagType == 33300) ifTrue:[
"/ 'image full width' print. value printNewline.
@@ -3228,12 +3236,51 @@
"/ KodakIFD
^ self
].
- (tagType == 33432) ifTrue:[
+ (tagType == 33432 "16r8298") ifTrue:[
"/ 'copyright' print. value printNewline.
+ metaData at:#Copyright put:value asString.
^ self
].
(tagType == 33434 "0x829A") ifTrue:[
"/ 'exposuretime' print. value printNewline.
+ metaData at:#ExposureTime put:value.
+ ^ self
+ ].
+ (tagType == 33437 "0x829D") ifTrue:[
+ "/ 'FNumber' print. value printNewline.
+ metaData at:#FNumber put:value.
+ ^ self
+ ].
+ (tagType == 33445 "0x82A5") ifTrue:[
+ "/ 'molecular dynamics GEL file tag' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33446 "0x82A6") ifTrue:[
+ "/ 'molecular dynamics GEL scalePixel' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33447 "0x82A7") ifTrue:[
+ "/ 'molecular dynamics GEL colorTable' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33448 "0x82A8") ifTrue:[
+ "/ 'molecular dynamics GEL labName' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33449 "0x82A9") ifTrue:[
+ "/ 'molecular dynamics GEL sampleInfo' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33450 "0x82AA") ifTrue:[
+ "/ 'molecular dynamics GEL prepDate' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33451 "0x82AB") ifTrue:[
+ "/ 'molecular dynamics GEL prepTime' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 33452 "0x82AC") ifTrue:[
+ "/ 'molecular dynamics GEL fileUnits' print. value printNewline.
^ self
].
@@ -3247,11 +3294,18 @@
^ self
].
-
- (tagType == 33920) ifTrue:[
- "/ 'geotiff IntergraphMatrixTag' print. value printNewline.
- ^ self
- ].
+ "/ (tagType == 33918) ifTrue:[
+ "/ "/ 'intergraph packet data tag' print. value printNewline.
+ "/ ^ self
+ "/ ].
+ "/ (tagType == 33918) ifTrue:[
+ "/ "/ 'intergraph flag' print. value printNewline.
+ "/ ^ self
+ "/ ].
+ "/ (tagType == 33920) ifTrue:[
+ "/ "/ 'geotiff IntergraphMatrixTag' print. value printNewline.
+ "/ ^ self
+ "/ ].
(tagType == 33922) ifTrue:[
"/ 'geotiff ModelTiepointTag' print. value printNewline.
^ self
@@ -3390,37 +3444,69 @@
^ self
].
+ (tagType == 34850) ifTrue:[
+ "/ 'ExposureProgram' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 34852) ifTrue:[
+ "/ 'SpectralSensitivity' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 34853) ifTrue:[
+ "/ 'GPS Info' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 34855) ifTrue:[
+ "/ 'ISOSPeedRatings (ISO12232)' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 34858) ifTrue:[
+ "/ 'TimeZoneOffset' print. value printNewline.
+ ^ self
+ ].
(tagType == 34859) ifTrue:[
- "/ '???' print. value printNewline.
+ "/ 'SelfTimeMode' print. value printNewline.
"/ Verbose == true ifTrue:[
"/ Logger info:' ?: %1' with:value
"/ ].
^ self
].
+ (tagType == 34864) ifTrue:[
+ "/ 'SensitivityType' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 34867) ifTrue:[
+ "/ 'ISOSpeed' print. value printNewline.
+ ^ self
+ ].
"/ More Private SGI
(tagType == 34908) ifTrue:[
- "/ 'fax recv params' print. value printNewline.
+ "/ 'HylaFAX fax recv params' print. value printNewline.
^ self
].
(tagType == 34909) ifTrue:[
- "/ 'fax subaddress' print. value printNewline.
+ "/ 'HylaFAX fax subaddress' print. value printNewline.
^ self
].
(tagType == 34910) ifTrue:[
- "/ 'fax recv time' print. value printNewline.
+ "/ 'HylaFAX fax recv time' print. value printNewline.
^ self
].
].
(tagType between:36000 and:36999) ifTrue:[
+ (tagType == 36864 "0x9000") ifTrue:[
+ "/ 'ExifVersion' print. value printNewline.
+ ^ self
+ ].
(tagType == 36867 "0x9003") ifTrue:[
"/ 'dateTimeOriginal' print. value printNewline.
^ self
].
(tagType == 36868 "0x9004") ifTrue:[
- "/ 'createDate' print. value printNewline.
+ "/ 'dateTimeDigitized / createDate' print. value printNewline.
^ self
].
].
@@ -3438,6 +3524,30 @@
"/ 'BrightnessValue' print. value printNewline.
^ self
].
+ (tagType == 37382 "0x9206") ifTrue:[
+ "/ 'SubjectDistance' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 37383 "0x9207") ifTrue:[
+ "/ 'MeteringMode' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 37384 "0x9208") ifTrue:[
+ "/ 'LightSource' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 37385 "0x9209") ifTrue:[
+ "/ 'Flash' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 37386 "0x920a") ifTrue:[
+ "/ 'FocalLength' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 37387 "0x920b") ifTrue:[
+ "/ 'FlashEnergy' print. value printNewline.
+ ^ self
+ ].
(tagType == 37390 "0x920e") ifTrue:[
"/ 'FocalPlaneXResolution' print. value printNewline.
^ self
@@ -3450,17 +3560,65 @@
"/ 'FocalPlaneResolutionUnit' print. value printNewline.
^ self
].
+ (tagType == 37393 "0x9211") ifTrue:[
+ "/ 'ImageNumber' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 37394 "0x9212") ifTrue:[
+ "/ 'SecurityClassification' print. value printNewline.
+ ^ self
+ ].
(tagType == 37398 "0x9216") ifTrue:[
"/ 'TIFF-EPStandardID' print. value printNewline.
^ self
].
- (tagType == 37500) ifTrue:[
+ (tagType == 37500 "0x927C") ifTrue:[
"/ 'makerNote' print. value printNewline.
^ self
].
+ (tagType == 37510 "0x9286") ifTrue:[
+ "/ 'UserComment' print. value printNewline.
+ ^ self
+ ].
].
(tagType between:42000 and:42999) ifTrue:[
+ (tagType == 42032) ifTrue:[
+ "/ 'CameraOwnerName' print. value printNewline.
+ Verbose == true ifTrue:[
+ Logger info:' CameraOwnerName: %1' with:value
+ ].
+ ^ self
+ ].
+ (tagType == 42033) ifTrue:[
+ "/ 'BodySerialNumber' print. value printNewline.
+ Verbose == true ifTrue:[
+ Logger info:' BodySerialNumber: %1' with:value
+ ].
+ ^ self
+ ].
+ (tagType == 42034) ifTrue:[
+ "/ 'LensSpecification' print. value printNewline.
+ "/ Verbose == true ifTrue:[
+ "/ Logger info:' LensSpecification: %1' with:value
+ "/ ].
+ ^ self
+ ].
+ (tagType == 42035) ifTrue:[
+ "/ 'LensMake' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 42036) ifTrue:[
+ "/ 'LensModel' print. value printNewline.
+ ^ self
+ ].
+ (tagType == 42037) ifTrue:[
+ "/ 'LensSerialNumber' print. value printNewline.
+ Verbose == true ifTrue:[
+ Logger info:' LensSerialNumber: %1' with:value
+ ].
+ ^ self
+ ].
(tagType == 42112) ifTrue:[
"/ 'GDAL_METADATA' print. value printNewline.
Verbose == true ifTrue:[
@@ -3472,6 +3630,18 @@
"/ dng tags (see http://wwwimages.adobe.com/content/dam/Adobe/en/products/photoshop/pdfs/dng_spec_1.4.0.0.pdf)
(tagType between:50000 and:50999) ifTrue:[
+ (tagType == 50215) ifTrue:[
+ "/ OCE Scanjob Descr.
+ ^ self
+ ].
+ (tagType == 50216) ifTrue:[
+ "/ OCE Appl Selector
+ ^ self
+ ].
+ (tagType == 50217) ifTrue:[
+ "/ OCE Identification Number
+ ^ self
+ ].
(tagType == 50706) ifTrue:[
"/ DNGVersion
Verbose == true ifTrue:[