@cogeotiff/core 7.2.1 → 8.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -502
- package/README.md +23 -11
- package/build/__benchmark__/cog.read.benchmark.d.ts +0 -1
- package/build/__benchmark__/cog.read.benchmark.js +6 -4
- package/build/__benchmark__/cog.read.benchmark.js.map +1 -0
- package/build/__benchmark__/source.file.d.ts +9 -0
- package/build/__benchmark__/source.file.js +29 -0
- package/build/__benchmark__/source.file.js.map +1 -0
- package/build/__benchmark__/source.memory.d.ts +9 -0
- package/build/__benchmark__/source.memory.js +32 -0
- package/build/__benchmark__/source.memory.js.map +1 -0
- package/build/__test__/cog.image.test.d.ts +1 -2
- package/build/__test__/cog.image.test.js +82 -90
- package/build/__test__/cog.image.test.js.map +1 -0
- package/build/__test__/cog.read.test.d.ts +1 -2
- package/build/__test__/cog.read.test.js +37 -55
- package/build/__test__/cog.read.test.js.map +1 -0
- package/build/__test__/example.d.ts +1 -0
- package/build/__test__/example.js +27 -0
- package/build/__test__/example.js.map +1 -0
- package/build/cog.tiff.d.ts +22 -28
- package/build/cog.tiff.image.d.ts +11 -23
- package/build/cog.tiff.image.js +108 -62
- package/build/cog.tiff.image.js.map +1 -0
- package/build/cog.tiff.js +141 -97
- package/build/cog.tiff.js.map +1 -0
- package/build/const/index.d.ts +1 -2
- package/build/const/index.js +2 -2
- package/build/const/index.js.map +1 -0
- package/build/const/tiff.endian.d.ts +0 -1
- package/build/const/tiff.endian.js +1 -1
- package/build/const/tiff.endian.js.map +1 -0
- package/build/const/tiff.mime.d.ts +10 -11
- package/build/const/tiff.mime.js +22 -22
- package/build/const/tiff.mime.js.map +1 -0
- package/build/const/tiff.tag.id.d.ts +3 -3
- package/build/const/tiff.tag.id.js +4 -3
- package/build/const/tiff.tag.id.js.map +1 -0
- package/build/const/tiff.tag.value.d.ts +15 -16
- package/build/const/tiff.tag.value.js +16 -16
- package/build/const/tiff.tag.value.js.map +1 -0
- package/build/const/tiff.version.d.ts +0 -1
- package/build/const/tiff.version.js +1 -1
- package/build/const/tiff.version.js.map +1 -0
- package/build/index.d.ts +11 -6
- package/build/index.js +9 -5
- package/build/index.js.map +1 -0
- package/build/read/data.view.offset.d.ts +15 -0
- package/build/read/data.view.offset.js +19 -0
- package/build/read/data.view.offset.js.map +1 -0
- package/build/read/tiff.gdal.d.ts +9 -12
- package/build/read/tiff.gdal.js +22 -17
- package/build/read/tiff.gdal.js.map +1 -0
- package/build/read/tiff.ifd.config.d.ts +6 -4
- package/build/read/tiff.ifd.config.js +2 -2
- package/build/read/tiff.ifd.config.js.map +1 -0
- package/build/read/tiff.tag.d.ts +40 -20
- package/build/read/tiff.tag.factory.d.ts +16 -0
- package/build/read/tiff.tag.factory.js +130 -0
- package/build/read/tiff.tag.factory.js.map +1 -0
- package/build/read/tiff.tag.js +2 -37
- package/build/read/tiff.tag.js.map +1 -0
- package/build/read/tiff.value.reader.d.ts +2 -6
- package/build/read/tiff.value.reader.js +16 -54
- package/build/read/tiff.value.reader.js.map +1 -0
- package/build/source.d.ts +5 -0
- package/build/source.js +2 -0
- package/build/source.js.map +1 -0
- package/build/util/bytes.d.ts +17 -0
- package/build/util/bytes.js +42 -0
- package/build/util/bytes.js.map +1 -0
- package/build/util/util.hex.d.ts +2 -3
- package/build/util/util.hex.js +4 -5
- package/build/util/util.hex.js.map +1 -0
- package/build/vector.d.ts +0 -1
- package/build/vector.js +1 -1
- package/build/vector.js.map +1 -0
- package/package.json +25 -30
- package/src/__benchmark__/cog.read.benchmark.ts +12 -10
- package/src/__benchmark__/source.file.ts +23 -0
- package/src/__benchmark__/source.memory.ts +23 -0
- package/src/__test__/cog.image.test.ts +188 -197
- package/src/__test__/cog.read.test.ts +50 -72
- package/src/__test__/example.ts +31 -0
- package/src/cog.tiff.image.ts +456 -447
- package/src/cog.tiff.ts +142 -145
- package/src/const/index.ts +1 -1
- package/src/const/tiff.endian.ts +2 -2
- package/src/const/tiff.mime.ts +21 -21
- package/src/const/tiff.tag.id.ts +157 -156
- package/src/const/tiff.tag.value.ts +16 -16
- package/src/const/tiff.version.ts +11 -11
- package/src/index.ts +11 -5
- package/src/read/data.view.offset.ts +23 -0
- package/src/read/tiff.gdal.ts +61 -63
- package/src/read/tiff.ifd.config.ts +35 -31
- package/src/read/tiff.tag.factory.ts +163 -0
- package/src/read/tiff.tag.ts +40 -38
- package/src/read/tiff.value.reader.ts +25 -73
- package/src/source.ts +5 -0
- package/src/util/bytes.ts +44 -0
- package/src/util/util.hex.ts +5 -7
- package/src/vector.ts +5 -5
- package/tsconfig.json +8 -8
- package/build/__benchmark__/cog.read.benchmark.d.ts.map +0 -1
- package/build/__test__/cog.image.test.d.ts.map +0 -1
- package/build/__test__/cog.read.test.d.ts.map +0 -1
- package/build/cog.tiff.d.ts.map +0 -1
- package/build/cog.tiff.image.d.ts.map +0 -1
- package/build/const/index.d.ts.map +0 -1
- package/build/const/tiff.endian.d.ts.map +0 -1
- package/build/const/tiff.mime.d.ts.map +0 -1
- package/build/const/tiff.tag.id.d.ts.map +0 -1
- package/build/const/tiff.tag.value.d.ts.map +0 -1
- package/build/const/tiff.version.d.ts.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/read/tag/__test__/tag.test.d.ts +0 -2
- package/build/read/tag/__test__/tag.test.d.ts.map +0 -1
- package/build/read/tag/__test__/tag.test.js +0 -23
- package/build/read/tag/tiff.tag.base.d.ts +0 -55
- package/build/read/tag/tiff.tag.base.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.base.js +0 -79
- package/build/read/tag/tiff.tag.lazy.d.ts +0 -7
- package/build/read/tag/tiff.tag.lazy.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.lazy.js +0 -18
- package/build/read/tag/tiff.tag.offset.d.ts +0 -21
- package/build/read/tag/tiff.tag.offset.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.offset.js +0 -54
- package/build/read/tag/tiff.tag.static.d.ts +0 -8
- package/build/read/tag/tiff.tag.static.d.ts.map +0 -1
- package/build/read/tag/tiff.tag.static.js +0 -17
- package/build/read/tiff.gdal.d.ts.map +0 -1
- package/build/read/tiff.ifd.config.d.ts.map +0 -1
- package/build/read/tiff.tag.d.ts.map +0 -1
- package/build/read/tiff.value.reader.d.ts.map +0 -1
- package/build/source/cog.source.view.d.ts +0 -33
- package/build/source/cog.source.view.d.ts.map +0 -1
- package/build/source/cog.source.view.js +0 -65
- package/build/util/util.hex.d.ts.map +0 -1
- package/build/vector.d.ts.map +0 -1
- package/src/@types/ieee754.d.ts +0 -18
- package/src/read/tag/__test__/tag.test.ts +0 -27
- package/src/read/tag/tiff.tag.base.ts +0 -126
- package/src/read/tag/tiff.tag.lazy.ts +0 -17
- package/src/read/tag/tiff.tag.offset.ts +0 -61
- package/src/read/tag/tiff.tag.static.ts +0 -15
- package/src/source/cog.source.view.ts +0 -77
package/build/index.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export {
|
|
6
|
-
|
|
1
|
+
export { CogTiff } from './cog.tiff.js';
|
|
2
|
+
export { TiffEndian } from './const/tiff.endian.js';
|
|
3
|
+
export { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
|
|
4
|
+
export { TiffTagGeo, TiffTag } from './const/tiff.tag.id.js';
|
|
5
|
+
export { TiffTagValueType } from './const/tiff.tag.value.js';
|
|
6
|
+
export { TiffVersion } from './const/tiff.version.js';
|
|
7
|
+
export { TagInline, TagLazy, TagOffset, Tag } from './read/tiff.tag.js';
|
|
8
|
+
export { getTiffTagSize } from './read/tiff.value.reader.js';
|
|
9
|
+
export { Source } from './source.js';
|
|
10
|
+
export { toHex } from './util/util.hex.js';
|
|
11
|
+
export { BoundingBox, Point, Size, Vector } from './vector.js';
|
package/build/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
|
|
1
|
+
export { CogTiff } from './cog.tiff.js';
|
|
2
|
+
export { TiffEndian } from './const/tiff.endian.js';
|
|
3
|
+
export { TiffCompression, TiffMimeType } from './const/tiff.mime.js';
|
|
4
|
+
export { TiffTagGeo, TiffTag } from './const/tiff.tag.id.js';
|
|
5
|
+
export { TiffTagValueType } from './const/tiff.tag.value.js';
|
|
6
|
+
export { TiffVersion } from './const/tiff.version.js';
|
|
7
|
+
export { getTiffTagSize } from './read/tiff.value.reader.js';
|
|
8
|
+
export { toHex } from './util/util.hex.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Extension to DataView that includes the offset to where in a file the view is from */
|
|
2
|
+
export type DataViewOffset = DataView & {
|
|
3
|
+
/** Offset in the source to where this data was read from */
|
|
4
|
+
sourceOffset: number;
|
|
5
|
+
};
|
|
6
|
+
/** Convert the dataview to a dataview with a offset */
|
|
7
|
+
export declare function toDataViewOffset(d: DataView, offset: number): asserts d is DataViewOffset;
|
|
8
|
+
/**
|
|
9
|
+
* Does a DataviewOffset include the absolute bytes of the source file
|
|
10
|
+
*
|
|
11
|
+
* @param view DataViewOffset to check
|
|
12
|
+
* @param targetOffset the absolute offset in the file
|
|
13
|
+
* @param count number of bytes to include
|
|
14
|
+
*/
|
|
15
|
+
export declare function hasBytes(view: DataViewOffset, targetOffset: number, count: number): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Convert the dataview to a dataview with a offset */
|
|
2
|
+
export function toDataViewOffset(d, offset) {
|
|
3
|
+
d.sourceOffset = offset;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Does a DataviewOffset include the absolute bytes of the source file
|
|
7
|
+
*
|
|
8
|
+
* @param view DataViewOffset to check
|
|
9
|
+
* @param targetOffset the absolute offset in the file
|
|
10
|
+
* @param count number of bytes to include
|
|
11
|
+
*/
|
|
12
|
+
export function hasBytes(view, targetOffset, count) {
|
|
13
|
+
if (targetOffset < view.sourceOffset)
|
|
14
|
+
return false;
|
|
15
|
+
if (view.sourceOffset + view.byteLength < targetOffset + count)
|
|
16
|
+
return false;
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data.view.offset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.view.offset.js","sourceRoot":"","sources":["../../src/read/data.view.offset.ts"],"names":[],"mappings":"AAMA,uDAAuD;AACvD,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,MAAc;IACzD,CAAoB,CAAC,YAAY,GAAG,MAAM,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAoB,EAAE,YAAoB,EAAE,KAAa;IAChF,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,YAAY,GAAG,KAAK;QAAE,OAAO,KAAK,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { ByteSize } from '
|
|
2
|
-
import { CogTiff } from '../cog.tiff.js';
|
|
1
|
+
import { ByteSize } from '../util/bytes.js';
|
|
3
2
|
export declare enum GhostOption {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
GdalStructuralMetadataSize = "GDAL_STRUCTURAL_METADATA_SIZE",
|
|
4
|
+
Layout = "LAYOUT",
|
|
5
|
+
BlockOrder = "BLOCK_ORDER",
|
|
6
|
+
BlockLeader = "BLOCK_LEADER",
|
|
7
|
+
BlockTrailer = "BLOCK_TRAILER",
|
|
8
|
+
KnownIncompatibleEdition = "KNOWN_INCOMPATIBLE_EDITION",
|
|
9
|
+
MaskInterleavedWithImagery = "MASK_INTERLEAVED_WITH_IMAGERY"
|
|
11
10
|
}
|
|
12
11
|
export declare enum GhostOptionTileOrder {
|
|
13
12
|
RowMajor = "ROW_MAJOR"
|
|
@@ -21,7 +20,6 @@ export declare enum GhostOptionTileLeader {
|
|
|
21
20
|
*/
|
|
22
21
|
export declare class CogTifGhostOptions {
|
|
23
22
|
options: Map<string, string>;
|
|
24
|
-
source: CogTiff;
|
|
25
23
|
/**
|
|
26
24
|
* Has GDAL optimized this tif
|
|
27
25
|
*/
|
|
@@ -34,11 +32,10 @@ export declare class CogTifGhostOptions {
|
|
|
34
32
|
* Load the ghost options from a source
|
|
35
33
|
* @param bytes the ghost header bytes
|
|
36
34
|
*/
|
|
37
|
-
process(bytes:
|
|
35
|
+
process(bytes: DataView, offset: number, ghostSize: number): void;
|
|
38
36
|
/**
|
|
39
37
|
* If the tile leader is set, how many bytes are allocated to the tile size
|
|
40
38
|
*/
|
|
41
39
|
get tileLeaderByteSize(): ByteSize | null;
|
|
42
40
|
get isMaskInterleaved(): boolean;
|
|
43
41
|
}
|
|
44
|
-
//# sourceMappingURL=tiff.gdal.d.ts.map
|
package/build/read/tiff.gdal.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ByteSize } from '
|
|
1
|
+
import { ByteSize } from '../util/bytes.js';
|
|
2
2
|
export var GhostOption;
|
|
3
3
|
(function (GhostOption) {
|
|
4
|
-
GhostOption["
|
|
5
|
-
GhostOption["
|
|
6
|
-
GhostOption["
|
|
7
|
-
GhostOption["
|
|
8
|
-
GhostOption["
|
|
9
|
-
GhostOption["
|
|
10
|
-
GhostOption["
|
|
4
|
+
GhostOption["GdalStructuralMetadataSize"] = "GDAL_STRUCTURAL_METADATA_SIZE";
|
|
5
|
+
GhostOption["Layout"] = "LAYOUT";
|
|
6
|
+
GhostOption["BlockOrder"] = "BLOCK_ORDER";
|
|
7
|
+
GhostOption["BlockLeader"] = "BLOCK_LEADER";
|
|
8
|
+
GhostOption["BlockTrailer"] = "BLOCK_TRAILER";
|
|
9
|
+
GhostOption["KnownIncompatibleEdition"] = "KNOWN_INCOMPATIBLE_EDITION";
|
|
10
|
+
GhostOption["MaskInterleavedWithImagery"] = "MASK_INTERLEAVED_WITH_IMAGERY";
|
|
11
11
|
})(GhostOption || (GhostOption = {}));
|
|
12
12
|
export var GhostOptionTileOrder;
|
|
13
13
|
(function (GhostOptionTileOrder) {
|
|
@@ -23,7 +23,12 @@ export var GhostOptionTileLeader;
|
|
|
23
23
|
*/
|
|
24
24
|
export class CogTifGhostOptions {
|
|
25
25
|
constructor() {
|
|
26
|
-
this
|
|
26
|
+
Object.defineProperty(this, "options", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: new Map()
|
|
31
|
+
});
|
|
27
32
|
}
|
|
28
33
|
/**
|
|
29
34
|
* Has GDAL optimized this tif
|
|
@@ -31,24 +36,24 @@ export class CogTifGhostOptions {
|
|
|
31
36
|
get isCogOptimized() {
|
|
32
37
|
if (this.isBroken)
|
|
33
38
|
return false;
|
|
34
|
-
return this.options.get(GhostOption.
|
|
39
|
+
return this.options.get(GhostOption.Layout) === 'IFDS_BEFORE_DATA';
|
|
35
40
|
}
|
|
36
41
|
/**
|
|
37
42
|
* Has GDAL determined this tif is now broken
|
|
38
43
|
*/
|
|
39
44
|
get isBroken() {
|
|
40
|
-
return this.options.get(GhostOption.
|
|
45
|
+
return this.options.get(GhostOption.KnownIncompatibleEdition) === 'YES';
|
|
41
46
|
}
|
|
42
47
|
/**
|
|
43
48
|
* Load the ghost options from a source
|
|
44
49
|
* @param bytes the ghost header bytes
|
|
45
50
|
*/
|
|
46
|
-
process(bytes) {
|
|
51
|
+
process(bytes, offset, ghostSize) {
|
|
47
52
|
let key = '';
|
|
48
53
|
let value = '';
|
|
49
54
|
let setValue = false;
|
|
50
|
-
for (let i = 0; i <
|
|
51
|
-
const charCode = bytes
|
|
55
|
+
for (let i = 0; i < ghostSize; i++) {
|
|
56
|
+
const charCode = bytes.getUint8(offset + i);
|
|
52
57
|
if (charCode === 0)
|
|
53
58
|
break;
|
|
54
59
|
const char = String.fromCharCode(charCode);
|
|
@@ -73,7 +78,7 @@ export class CogTifGhostOptions {
|
|
|
73
78
|
* If the tile leader is set, how many bytes are allocated to the tile size
|
|
74
79
|
*/
|
|
75
80
|
get tileLeaderByteSize() {
|
|
76
|
-
switch (this.options.get(GhostOption.
|
|
81
|
+
switch (this.options.get(GhostOption.BlockLeader)) {
|
|
77
82
|
case GhostOptionTileLeader.uint32:
|
|
78
83
|
return ByteSize.UInt32;
|
|
79
84
|
default:
|
|
@@ -81,7 +86,7 @@ export class CogTifGhostOptions {
|
|
|
81
86
|
}
|
|
82
87
|
}
|
|
83
88
|
get isMaskInterleaved() {
|
|
84
|
-
return this.options.get(GhostOption.
|
|
89
|
+
return this.options.get(GhostOption.MaskInterleavedWithImagery) === 'YES';
|
|
85
90
|
}
|
|
86
91
|
}
|
|
87
|
-
//# sourceMappingURL=
|
|
92
|
+
//# sourceMappingURL=tiff.gdal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiff.gdal.js","sourceRoot":"","sources":["../../src/read/tiff.gdal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAN,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,2EAA4D,CAAA;IAC5D,gCAAiB,CAAA;IACjB,yCAA0B,CAAA;IAC1B,2CAA4B,CAAA;IAC5B,6CAA8B,CAAA;IAC9B,sEAAuD,CAAA;IACvD,2EAA4D,CAAA;AAC9D,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB;AAED,MAAM,CAAN,IAAY,oBAEX;AAFD,WAAY,oBAAoB;IAC9B,8CAAsB,CAAA;AACxB,CAAC,EAFW,oBAAoB,KAApB,oBAAoB,QAE/B;AAED,MAAM,CAAN,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;AAC1B,CAAC,EAFW,qBAAqB,KAArB,qBAAqB,QAEhC;AAED;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACE;;;;mBAA+B,IAAI,GAAG,EAAE;WAAC;IA2D3C,CAAC;IAzDC;;OAEG;IACH,IAAI,cAAc;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,KAAK,KAAK,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,KAAe,EAAE,MAAc,EAAE,SAAiB;QACxD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,QAAQ,KAAK,CAAC;gBAAE,MAAM;YAE1B,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,GAAG,GAAG,EAAE,CAAC;gBACT,KAAK,GAAG,EAAE,CAAC;gBACX,QAAQ,GAAG,KAAK,CAAC;aAClB;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,QAAQ,GAAG,IAAI,CAAC;aACjB;iBAAM;gBACL,IAAI,QAAQ;oBAAE,KAAK,IAAI,IAAI,CAAC;;oBACvB,GAAG,IAAI,IAAI,CAAC;aAClB;SACF;IACH,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;YACjD,KAAK,qBAAqB,CAAC,MAAM;gBAC/B,OAAO,QAAQ,CAAC,MAAM,CAAC;YACzB;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,0BAA0B,CAAC,KAAK,KAAK,CAAC;IAC5E,CAAC;CACF"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { ByteSize } from '@chunkd/core';
|
|
2
1
|
import { TiffVersion } from '../const/tiff.version.js';
|
|
3
2
|
export declare const TagTiffConfig: TiffIfdConfig;
|
|
4
3
|
export declare const TagTiffBigConfig: TiffIfdConfig;
|
|
5
4
|
export interface TiffIfdConfig {
|
|
5
|
+
/** Tiff type */
|
|
6
6
|
version: TiffVersion;
|
|
7
|
-
pointer
|
|
8
|
-
|
|
7
|
+
/** Number of bytes a pointer uses */
|
|
8
|
+
pointer: number;
|
|
9
|
+
/** Number of bytes a offset uses */
|
|
10
|
+
offset: number;
|
|
11
|
+
/** Number of bytes the IFD tag contains */
|
|
9
12
|
ifd: number;
|
|
10
13
|
}
|
|
11
14
|
export declare const TiffIfdEntry: {
|
|
12
15
|
43: TiffIfdConfig;
|
|
13
16
|
42: TiffIfdConfig;
|
|
14
17
|
};
|
|
15
|
-
//# sourceMappingURL=tiff.ifd.config.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ByteSize } from '
|
|
1
|
+
import { ByteSize } from '../util/bytes.js';
|
|
2
2
|
import { TiffVersion } from '../const/tiff.version.js';
|
|
3
3
|
export const TagTiffConfig = {
|
|
4
4
|
version: TiffVersion.Tiff,
|
|
@@ -32,4 +32,4 @@ export const TiffIfdEntry = {
|
|
|
32
32
|
[TiffVersion.BigTiff]: TagTiffBigConfig,
|
|
33
33
|
[TiffVersion.Tiff]: TagTiffConfig,
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=tiff.ifd.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiff.ifd.config.js","sourceRoot":"","sources":["../../src/read/tiff.ifd.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,WAAW,CAAC,IAAI;IACzB,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB;;;;;;OAMG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,4BAA4B;IAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM;IACxB,sBAAsB;IACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;IAEvB;;;;;;OAMG;IACH,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM;CAC7D,CAAC;AAaF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,gBAAgB;IACvC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa;CAClC,CAAC"}
|
package/build/read/tiff.tag.d.ts
CHANGED
|
@@ -1,20 +1,40 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
import { TiffTag } from '../const/tiff.tag.id.js';
|
|
2
|
+
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
3
|
+
import { DataViewOffset } from './data.view.offset.js';
|
|
4
|
+
/** Tiff tag interfaces */
|
|
5
|
+
export type Tag<T = unknown> = TagLazy<T> | TagInline<T> | TagOffset;
|
|
6
|
+
export interface TagBase {
|
|
7
|
+
/** Id of the Tag */
|
|
8
|
+
id: TiffTag;
|
|
9
|
+
/** Offset in bytes to where this tag was read from */
|
|
10
|
+
tagOffset: number;
|
|
11
|
+
/** Number of values */
|
|
12
|
+
count: number;
|
|
13
|
+
/** Tiff Tag Datatype @see {TiffTagValueType} */
|
|
14
|
+
dataType: TiffTagValueType;
|
|
15
|
+
}
|
|
16
|
+
/** Tiff tag value is not inline and will be loaded later when requested */
|
|
17
|
+
export interface TagLazy<T> extends TagBase {
|
|
18
|
+
type: 'lazy';
|
|
19
|
+
/** Value if loaded undefined otherwise */
|
|
20
|
+
value?: T;
|
|
21
|
+
/** Where in the file the value is read from */
|
|
22
|
+
dataOffset: number;
|
|
23
|
+
}
|
|
24
|
+
/** Tiff tag that's value is inside the IFD and is already read */
|
|
25
|
+
export interface TagInline<T> extends TagBase {
|
|
26
|
+
type: 'inline';
|
|
27
|
+
value: T;
|
|
28
|
+
}
|
|
29
|
+
/** Tiff tag that is a list of offsets this can be partially read */
|
|
30
|
+
export interface TagOffset extends TagBase {
|
|
31
|
+
type: 'offset';
|
|
32
|
+
/** Values of the offest's this is a sparse array unless @see {isLoaded} is true */
|
|
33
|
+
value: number[];
|
|
34
|
+
/** has all the values been read */
|
|
35
|
+
isLoaded?: boolean;
|
|
36
|
+
/** Raw buffer of the values for lazy decoding, Reading 1000s of uint64s can take quite a while */
|
|
37
|
+
view?: DataViewOffset;
|
|
38
|
+
/** Where in the file the value is read from */
|
|
39
|
+
dataOffset: number;
|
|
40
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CogTiff } from '../cog.tiff.js';
|
|
2
|
+
import { DataViewOffset } from './data.view.offset.js';
|
|
3
|
+
import { Tag, TagLazy, TagOffset } from './tiff.tag.js';
|
|
4
|
+
/**
|
|
5
|
+
* Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
|
|
6
|
+
*
|
|
7
|
+
* @see {Tag}
|
|
8
|
+
*
|
|
9
|
+
* @param tiff
|
|
10
|
+
* @param view Bytes to read from
|
|
11
|
+
* @param offset Offset in the dataview to read a tag
|
|
12
|
+
*/
|
|
13
|
+
export declare function createTag(tiff: CogTiff, view: DataViewOffset, offset: number): Tag<unknown>;
|
|
14
|
+
export declare function fetchLazy<T>(tag: TagLazy<T>, tiff: CogTiff): Promise<T>;
|
|
15
|
+
export declare function setBytes(tag: TagOffset, view: DataViewOffset): void;
|
|
16
|
+
export declare function getValueAt(tiff: CogTiff, tag: TagOffset, index: number): Promise<number>;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { TiffTag } from '../const/tiff.tag.id.js';
|
|
2
|
+
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
3
|
+
import { getUint, getUint64 } from '../util/bytes.js';
|
|
4
|
+
import { hasBytes } from './data.view.offset.js';
|
|
5
|
+
import { getTiffTagSize } from './tiff.value.reader.js';
|
|
6
|
+
function readTagValue(fieldType, bytes, offset, isLittleEndian) {
|
|
7
|
+
switch (fieldType) {
|
|
8
|
+
case TiffTagValueType.Ascii:
|
|
9
|
+
return String.fromCharCode(bytes.getUint8(offset));
|
|
10
|
+
case TiffTagValueType.Undefined:
|
|
11
|
+
case TiffTagValueType.Uint8:
|
|
12
|
+
return bytes.getUint8(offset);
|
|
13
|
+
case TiffTagValueType.Int8:
|
|
14
|
+
return bytes.getInt8(offset);
|
|
15
|
+
case TiffTagValueType.Uint16:
|
|
16
|
+
return bytes.getUint16(offset, isLittleEndian);
|
|
17
|
+
case TiffTagValueType.Int16:
|
|
18
|
+
return bytes.getInt16(offset, isLittleEndian);
|
|
19
|
+
case TiffTagValueType.Uint32:
|
|
20
|
+
return bytes.getUint32(offset, isLittleEndian);
|
|
21
|
+
case TiffTagValueType.Int32:
|
|
22
|
+
return bytes.getInt32(offset, isLittleEndian);
|
|
23
|
+
case TiffTagValueType.Rational:
|
|
24
|
+
return [bytes.getUint32(offset, isLittleEndian), bytes.getUint32(offset + 4, isLittleEndian)];
|
|
25
|
+
case TiffTagValueType.SignedRational:
|
|
26
|
+
return [bytes.getInt32(offset, isLittleEndian), bytes.getInt32(offset + 4, isLittleEndian)];
|
|
27
|
+
case TiffTagValueType.Float64:
|
|
28
|
+
return bytes.getFloat64(offset, isLittleEndian);
|
|
29
|
+
case TiffTagValueType.Uint64:
|
|
30
|
+
return getUint64(bytes, offset, isLittleEndian);
|
|
31
|
+
default:
|
|
32
|
+
throw new Error(`Unknown read type "${fieldType}" "${TiffTagValueType[fieldType]}"`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function readValue(tiff, bytes, offset, type, count) {
|
|
36
|
+
const typeSize = getTiffTagSize(type);
|
|
37
|
+
const dataLength = count * typeSize;
|
|
38
|
+
if (count === 1)
|
|
39
|
+
return readTagValue(type, bytes, offset, tiff.isLittleEndian);
|
|
40
|
+
switch (type) {
|
|
41
|
+
case TiffTagValueType.Ascii:
|
|
42
|
+
return String.fromCharCode.apply(null, new Uint8Array(bytes.buffer.slice(bytes.byteOffset + offset, bytes.byteOffset + offset + dataLength - 1)));
|
|
43
|
+
}
|
|
44
|
+
const output = [];
|
|
45
|
+
for (let i = 0; i < dataLength; i += typeSize) {
|
|
46
|
+
output.push(readTagValue(type, bytes, offset + i, tiff.isLittleEndian));
|
|
47
|
+
}
|
|
48
|
+
return output;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
|
|
52
|
+
*
|
|
53
|
+
* @see {Tag}
|
|
54
|
+
*
|
|
55
|
+
* @param tiff
|
|
56
|
+
* @param view Bytes to read from
|
|
57
|
+
* @param offset Offset in the dataview to read a tag
|
|
58
|
+
*/
|
|
59
|
+
export function createTag(tiff, view, offset) {
|
|
60
|
+
const tagId = view.getUint16(offset + 0, tiff.isLittleEndian);
|
|
61
|
+
const dataType = view.getUint16(offset + 2, tiff.isLittleEndian);
|
|
62
|
+
const dataCount = getUint(view, offset + 4, tiff.ifdConfig.pointer, tiff.isLittleEndian);
|
|
63
|
+
const dataTypeSize = getTiffTagSize(dataType);
|
|
64
|
+
const dataLength = dataTypeSize * dataCount;
|
|
65
|
+
// Tag value is inline read the value
|
|
66
|
+
if (dataLength <= tiff.ifdConfig.pointer) {
|
|
67
|
+
const value = readValue(tiff, view, offset + 4 + tiff.ifdConfig.pointer, dataType, dataCount);
|
|
68
|
+
return { type: 'inline', id: tagId, count: dataCount, value, dataType, tagOffset: offset };
|
|
69
|
+
}
|
|
70
|
+
const dataOffset = getUint(view, offset + 4 + tiff.ifdConfig.pointer, tiff.ifdConfig.pointer, tiff.isLittleEndian);
|
|
71
|
+
switch (tagId) {
|
|
72
|
+
case TiffTag.TileOffsets:
|
|
73
|
+
case TiffTag.TileByteCounts:
|
|
74
|
+
case TiffTag.StripByteCounts:
|
|
75
|
+
case TiffTag.StripOffsets:
|
|
76
|
+
const tag = {
|
|
77
|
+
type: 'offset',
|
|
78
|
+
id: tagId,
|
|
79
|
+
count: dataCount,
|
|
80
|
+
dataType,
|
|
81
|
+
dataOffset,
|
|
82
|
+
value: [],
|
|
83
|
+
tagOffset: offset,
|
|
84
|
+
};
|
|
85
|
+
// Some offsets are quite long and don't need to read them often, so only read the tags we are interested in when we need to
|
|
86
|
+
if (tagId === TiffTag.TileOffsets && hasBytes(view, dataOffset, dataLength))
|
|
87
|
+
setBytes(tag, view);
|
|
88
|
+
return tag;
|
|
89
|
+
}
|
|
90
|
+
// If we already have the bytes in the view read them in
|
|
91
|
+
if (hasBytes(view, dataOffset, dataLength)) {
|
|
92
|
+
const value = readValue(tiff, view, dataOffset - view.sourceOffset, dataType, dataCount);
|
|
93
|
+
return { type: 'inline', id: tagId, count: dataCount, value, dataType, tagOffset: offset };
|
|
94
|
+
}
|
|
95
|
+
return { type: 'lazy', id: tagId, count: dataCount, dataOffset, dataType, tagOffset: offset };
|
|
96
|
+
}
|
|
97
|
+
export async function fetchLazy(tag, tiff) {
|
|
98
|
+
if (tag.value != null)
|
|
99
|
+
return tag.value;
|
|
100
|
+
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
101
|
+
const dataLength = dataTypeSize * tag.count;
|
|
102
|
+
const bytes = await tiff.source.fetch(tag.dataOffset, dataLength);
|
|
103
|
+
const view = new DataView(bytes);
|
|
104
|
+
tag.value = readValue(tiff, view, 0, tag.dataType, tag.count);
|
|
105
|
+
return tag.value;
|
|
106
|
+
}
|
|
107
|
+
export function setBytes(tag, view) {
|
|
108
|
+
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
109
|
+
const startBytes = view.byteOffset + tag.dataOffset - view.sourceOffset;
|
|
110
|
+
tag.view = new DataView(view.buffer.slice(startBytes, startBytes + dataTypeSize * tag.count));
|
|
111
|
+
tag.view.sourceOffset = tag.dataOffset;
|
|
112
|
+
}
|
|
113
|
+
export async function getValueAt(tiff, tag, index) {
|
|
114
|
+
if (index > tag.count || index < 0)
|
|
115
|
+
throw new Error('TagOffset: out of bounds :' + index);
|
|
116
|
+
if (tag.value[index] != null)
|
|
117
|
+
return tag.value[index];
|
|
118
|
+
const dataTypeSize = getTiffTagSize(tag.dataType);
|
|
119
|
+
if (tag.view == null) {
|
|
120
|
+
const bytes = await tiff.source.fetch(tag.dataOffset + index * dataTypeSize, dataTypeSize);
|
|
121
|
+
const view = new DataView(bytes);
|
|
122
|
+
const value = readValue(tiff, view, 0, tag.dataType, 1);
|
|
123
|
+
tag.value[index] = value;
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
const value = readValue(tiff, tag.view, index * dataTypeSize, tag.dataType, 1);
|
|
127
|
+
tag.value[index] = value;
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=tiff.tag.factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiff.tag.factory.js","sourceRoot":"","sources":["../../src/read/tiff.tag.factory.ts"],"names":[],"mappings":"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"}
|
package/build/read/tiff.tag.js
CHANGED
|
@@ -1,37 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { CogTiffTagOffset } from './tag/tiff.tag.offset.js';
|
|
4
|
-
import { CogTifTagStatic } from './tag/tiff.tag.static.js';
|
|
5
|
-
export const CogTiffTag = {
|
|
6
|
-
/**
|
|
7
|
-
* Determine if all the data for the tiff tag is loaded in and use that to create the specific CogTiffTag
|
|
8
|
-
*
|
|
9
|
-
* @see CogTiffTagBase
|
|
10
|
-
*
|
|
11
|
-
* @param source
|
|
12
|
-
* @param offset
|
|
13
|
-
*/
|
|
14
|
-
create(tiff, offset) {
|
|
15
|
-
const tagId = tiff.source.getUint16(offset);
|
|
16
|
-
if (tagId === TiffTag.TileOffsets ||
|
|
17
|
-
tagId === TiffTag.TileByteCounts ||
|
|
18
|
-
tagId === TiffTag.StripByteCounts ||
|
|
19
|
-
tagId === TiffTag.StripOffsets) {
|
|
20
|
-
return new CogTiffTagOffset(tagId, tiff, offset);
|
|
21
|
-
}
|
|
22
|
-
const staticTag = new CogTifTagStatic(tagId, tiff, offset);
|
|
23
|
-
if (staticTag.hasBytes)
|
|
24
|
-
return staticTag;
|
|
25
|
-
return new CogTiffTagLazy(tagId, tiff, offset);
|
|
26
|
-
},
|
|
27
|
-
isStatic(tiffTag) {
|
|
28
|
-
return tiffTag instanceof CogTifTagStatic;
|
|
29
|
-
},
|
|
30
|
-
isLazy(tiffTag) {
|
|
31
|
-
return tiffTag instanceof CogTiffTagLazy;
|
|
32
|
-
},
|
|
33
|
-
isOffsetArray(tiffTag) {
|
|
34
|
-
return tiffTag instanceof CogTiffTagOffset;
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVhZC90aWZmLnRhZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEI7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxJQUFhLEVBQUUsTUFBYztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUNJLEtBQUssS0FBSyxPQUFPLENBQUMsV0FBVztZQUM3QixLQUFLLEtBQUssT0FBTyxDQUFDLGNBQWM7WUFDaEMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxlQUFlO1lBQ2pDLEtBQUssS0FBSyxPQUFPLENBQUMsWUFBWSxFQUNoQztZQUNFLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzRCxJQUFJLFNBQVMsQ0FBQyxRQUFRO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFekMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxRQUFRLENBQUksT0FBMEI7UUFDbEMsT0FBTyxPQUFPLFlBQVksZUFBZSxDQUFDO0lBQzlDLENBQUM7SUFDRCxNQUFNLENBQUksT0FBMEI7UUFDaEMsT0FBTyxPQUFPLFlBQVksY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBdUI7UUFDakMsT0FBTyxPQUFPLFlBQVksZ0JBQWdCLENBQUM7SUFDL0MsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmIH0gZnJvbSAnLi4vY29nLnRpZmYuanMnO1xuaW1wb3J0IHsgVGlmZlRhZyB9IGZyb20gJy4uL2NvbnN0L3RpZmYudGFnLmlkLmpzJztcbmltcG9ydCB7IENvZ1RpZmZUYWdCYXNlIH0gZnJvbSAnLi90YWcvdGlmZi50YWcuYmFzZS5qcyc7XG5pbXBvcnQgeyBDb2dUaWZmVGFnTGF6eSB9IGZyb20gJy4vdGFnL3RpZmYudGFnLmxhenkuanMnO1xuaW1wb3J0IHsgQ29nVGlmZlRhZ09mZnNldCB9IGZyb20gJy4vdGFnL3RpZmYudGFnLm9mZnNldC5qcyc7XG5pbXBvcnQgeyBDb2dUaWZUYWdTdGF0aWMgfSBmcm9tICcuL3RhZy90aWZmLnRhZy5zdGF0aWMuanMnO1xuXG5leHBvcnQgY29uc3QgQ29nVGlmZlRhZyA9IHtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgYWxsIHRoZSBkYXRhIGZvciB0aGUgdGlmZiB0YWcgaXMgbG9hZGVkIGluIGFuZCB1c2UgdGhhdCB0byBjcmVhdGUgdGhlIHNwZWNpZmljIENvZ1RpZmZUYWdcbiAgICAgKlxuICAgICAqIEBzZWUgQ29nVGlmZlRhZ0Jhc2VcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzb3VyY2VcbiAgICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAgICovXG4gICAgY3JlYXRlKHRpZmY6IENvZ1RpZmYsIG9mZnNldDogbnVtYmVyKTogQ29nVGlmZlRhZ0Jhc2U8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCB0YWdJZCA9IHRpZmYuc291cmNlLmdldFVpbnQxNihvZmZzZXQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0YWdJZCA9PT0gVGlmZlRhZy5UaWxlT2Zmc2V0cyB8fFxuICAgICAgICAgICAgdGFnSWQgPT09IFRpZmZUYWcuVGlsZUJ5dGVDb3VudHMgfHxcbiAgICAgICAgICAgIHRhZ0lkID09PSBUaWZmVGFnLlN0cmlwQnl0ZUNvdW50cyB8fFxuICAgICAgICAgICAgdGFnSWQgPT09IFRpZmZUYWcuU3RyaXBPZmZzZXRzXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb2dUaWZmVGFnT2Zmc2V0KHRhZ0lkLCB0aWZmLCBvZmZzZXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGljVGFnID0gbmV3IENvZ1RpZlRhZ1N0YXRpYyh0YWdJZCwgdGlmZiwgb2Zmc2V0KTtcbiAgICAgICAgaWYgKHN0YXRpY1RhZy5oYXNCeXRlcykgcmV0dXJuIHN0YXRpY1RhZztcblxuICAgICAgICByZXR1cm4gbmV3IENvZ1RpZmZUYWdMYXp5KHRhZ0lkLCB0aWZmLCBvZmZzZXQpO1xuICAgIH0sXG5cbiAgICBpc1N0YXRpYzxUPih0aWZmVGFnOiBDb2dUaWZmVGFnQmFzZTxUPik6IHRpZmZUYWcgaXMgQ29nVGlmVGFnU3RhdGljPFQ+IHtcbiAgICAgICAgcmV0dXJuIHRpZmZUYWcgaW5zdGFuY2VvZiBDb2dUaWZUYWdTdGF0aWM7XG4gICAgfSxcbiAgICBpc0xhenk8VD4odGlmZlRhZzogQ29nVGlmZlRhZ0Jhc2U8VD4pOiB0aWZmVGFnIGlzIENvZ1RpZmZUYWdMYXp5PFQ+IHtcbiAgICAgICAgcmV0dXJuIHRpZmZUYWcgaW5zdGFuY2VvZiBDb2dUaWZmVGFnTGF6eTtcbiAgICB9LFxuICAgIGlzT2Zmc2V0QXJyYXkodGlmZlRhZzogQ29nVGlmZlRhZ0Jhc2UpOiB0aWZmVGFnIGlzIENvZ1RpZmZUYWdPZmZzZXQge1xuICAgICAgICByZXR1cm4gdGlmZlRhZyBpbnN0YW5jZW9mIENvZ1RpZmZUYWdPZmZzZXQ7XG4gICAgfSxcbn07XG4iXX0=
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=tiff.tag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tiff.tag.js","sourceRoot":"","sources":["../../src/read/tiff.tag.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ByteSize } from '../util/bytes.js';
|
|
2
2
|
import { TiffTagValueType } from '../const/tiff.tag.value.js';
|
|
3
|
-
export declare function getTiffTagSize(fieldType: TiffTagValueType):
|
|
4
|
-
export declare type TiffTagValueRational = [number, number];
|
|
5
|
-
export declare type TiffTagValueReaderFunc = (view: ChunkSource, offset: number) => number | TiffTagValueRational | string;
|
|
6
|
-
export declare function getTiffTagValueReader(fieldType: TiffTagValueType): TiffTagValueReaderFunc;
|
|
7
|
-
//# sourceMappingURL=tiff.value.reader.d.ts.map
|
|
3
|
+
export declare function getTiffTagSize(fieldType: TiffTagValueType): ByteSize;
|