@cogeotiff/core 7.2.0 → 8.0.1
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 +3 -500
- package/README.md +28 -10
- 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 +16 -28
- package/build/cog.tiff.image.js +147 -101
- 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 +5 -5
- package/build/const/tiff.tag.id.js +155 -154
- 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 +37 -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 -448
- package/src/cog.tiff.ts +143 -146
- 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 +159 -158
- 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 +38 -39
- 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 -10
- 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
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { TiffTag } from '../../const/tiff.tag.id.js';
|
|
2
|
-
import { TiffTagValueType } from '../../const/tiff.tag.value.js';
|
|
3
|
-
import { getTiffTagSize, getTiffTagValueReader } from '../tiff.value.reader.js';
|
|
4
|
-
export class CogTiffTagBase {
|
|
5
|
-
constructor(id, tiff, offset) {
|
|
6
|
-
this.tiff = tiff;
|
|
7
|
-
this.byteOffset = offset;
|
|
8
|
-
this.id = id;
|
|
9
|
-
this.name = TiffTag[this.id];
|
|
10
|
-
this.dataType = this.tiff.source.getUint16(offset + 2);
|
|
11
|
-
this.dataCount = this.tiff.source.getUint(offset + 4, this.tiff.ifdConfig.pointer);
|
|
12
|
-
this.dataTypeSize = getTiffTagSize(this.dataType);
|
|
13
|
-
this.dataLength = this.dataTypeSize * this.dataCount;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Have the bytes for the tag been loaded, or is a fetch required to read the tag
|
|
17
|
-
*/
|
|
18
|
-
get hasBytes() {
|
|
19
|
-
return this.tiff.source.hasBytes(this.valuePointer, this.dataLength);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* is the tag ready to be read
|
|
23
|
-
*/
|
|
24
|
-
get isReady() {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get a human readable name for a datatype
|
|
29
|
-
*
|
|
30
|
-
*/
|
|
31
|
-
get dataTypeName() {
|
|
32
|
-
return TiffTagValueType[this.dataType];
|
|
33
|
-
}
|
|
34
|
-
/** absolute offset of the Tag value */
|
|
35
|
-
get valuePointer() {
|
|
36
|
-
const valueOffset = this.size - this.tiff.ifdConfig.pointer;
|
|
37
|
-
if (this.isValueInline)
|
|
38
|
-
return this.byteOffset + valueOffset;
|
|
39
|
-
return this.tiff.source.getUint(this.byteOffset + valueOffset, this.tiff.ifdConfig.pointer);
|
|
40
|
-
}
|
|
41
|
-
/** Size of the IFD (bytes) */
|
|
42
|
-
get size() {
|
|
43
|
-
return this.tiff.ifdConfig.ifd;
|
|
44
|
-
}
|
|
45
|
-
/** Is the value of this tag inline, or is it a pointer to the real value */
|
|
46
|
-
get isValueInline() {
|
|
47
|
-
return this.dataLength <= this.tiff.ifdConfig.pointer;
|
|
48
|
-
}
|
|
49
|
-
/** Read the value in from the byte array */
|
|
50
|
-
readValue() {
|
|
51
|
-
const offset = this.valuePointer;
|
|
52
|
-
const dataTypeSize = this.dataTypeSize;
|
|
53
|
-
const convert = getTiffTagValueReader(this.dataType);
|
|
54
|
-
const count = this.dataCount;
|
|
55
|
-
const dataLength = count * dataTypeSize;
|
|
56
|
-
if (count === 1)
|
|
57
|
-
return convert(this.tiff.source, offset);
|
|
58
|
-
const output = [];
|
|
59
|
-
for (let i = 0; i < dataLength; i += dataTypeSize) {
|
|
60
|
-
output.push(convert(this.tiff.source, offset + i));
|
|
61
|
-
}
|
|
62
|
-
// Convert to a string if ascii
|
|
63
|
-
if (this.dataType === TiffTagValueType.ASCII)
|
|
64
|
-
return output.join('').trim();
|
|
65
|
-
return output;
|
|
66
|
-
}
|
|
67
|
-
/** Get a human(ish) friendly output for the tags */
|
|
68
|
-
toJSON() {
|
|
69
|
-
return {
|
|
70
|
-
id: this.id,
|
|
71
|
-
name: this.name,
|
|
72
|
-
offset: this.byteOffset,
|
|
73
|
-
isReady: this.isReady,
|
|
74
|
-
type: this.dataTypeName,
|
|
75
|
-
value: this.value,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcuYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWFkL3RhZy90aWZmLnRhZy5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEYsTUFBTSxPQUFnQixjQUFjO0lBdUJoQyxZQUFZLEVBQVUsRUFBRSxJQUFhLEVBQUUsTUFBYztRQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUV6QixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQVdEOzs7T0FHRztJQUNILElBQUksWUFBWTtRQUNaLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFPRCx1Q0FBdUM7SUFDdkMsSUFBSSxZQUFZO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDNUQsSUFBSSxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztJQUNuQyxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7SUFDMUQsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxTQUFTO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7UUFFeEMsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBaUIsQ0FBQztRQUUxRSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLElBQUksWUFBWSxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3REO1FBRUQsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO1lBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBa0IsQ0FBQztRQUU1RixPQUFPLE1BQXNCLENBQUM7SUFDbEMsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxNQUFNO1FBQ0YsT0FBTztZQUNILEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNwQixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uLy4uL2NvZy50aWZmLmpzJztcbmltcG9ydCB7IFRpZmZUYWcgfSBmcm9tICcuLi8uLi9jb25zdC90aWZmLnRhZy5pZC5qcyc7XG5pbXBvcnQgeyBUaWZmVGFnVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vY29uc3QvdGlmZi50YWcudmFsdWUuanMnO1xuaW1wb3J0IHsgZ2V0VGlmZlRhZ1NpemUsIGdldFRpZmZUYWdWYWx1ZVJlYWRlciB9IGZyb20gJy4uL3RpZmYudmFsdWUucmVhZGVyLmpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvZ1RpZmZUYWdCYXNlPFQgPSB1bmtub3duPiB7XG4gICAgLyoqXG4gICAgICogVmFsdWUgb2YgdGhlIHRpZmYgdGFnLCBtYXkgYmUgbnVsbCBpZiB0aGUgdmFsdWUgaGFzIG5vdCBiZWVuIHJlYWRcbiAgICAgKi9cbiAgICBhYnN0cmFjdCB2YWx1ZTogVCB8IG51bGw7XG5cbiAgICAvKiogUmF3IG9mZnNldCBmb3Igd2hlcmUgaW4gdGhlIHRpZiB0aGlzIHRhZyBzdGFydHMgKi9cbiAgICBwcml2YXRlIGJ5dGVPZmZzZXQ6IG51bWJlcjtcblxuICAgIC8qKiBOYW1lIG9mIHRoZSB0YWcgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogVGlmVGFnSWQgQHNlZSBUaWZmVGFnICovXG4gICAgaWQ6IG51bWJlcjtcblxuICAgIC8qKiBUeXBlIG9mIGRhdGEgaW5zaWRlIHRoZSByZWNvcmQgQHNlZSB0aGlzLmRhdGFUeXBlTmFtZSAqL1xuICAgIGRhdGFUeXBlOiBudW1iZXI7XG5cbiAgICAvKiogTnVtYmVyIG9mIHJlY29yZHMgaW5zaWRlIHRoZSB0YWcgKi9cbiAgICBkYXRhQ291bnQ6IG51bWJlcjtcblxuICAgIHRpZmY6IENvZ1RpZmY7XG5cbiAgICBjb25zdHJ1Y3RvcihpZDogbnVtYmVyLCB0aWZmOiBDb2dUaWZmLCBvZmZzZXQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRpZmYgPSB0aWZmO1xuICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBvZmZzZXQ7XG5cbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm5hbWUgPSBUaWZmVGFnW3RoaXMuaWRdO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50MTYob2Zmc2V0ICsgMik7XG4gICAgICAgIHRoaXMuZGF0YUNvdW50ID0gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50KG9mZnNldCArIDQsIHRoaXMudGlmZi5pZmRDb25maWcucG9pbnRlcik7XG4gICAgICAgIHRoaXMuZGF0YVR5cGVTaXplID0gZ2V0VGlmZlRhZ1NpemUodGhpcy5kYXRhVHlwZSk7XG4gICAgICAgIHRoaXMuZGF0YUxlbmd0aCA9IHRoaXMuZGF0YVR5cGVTaXplICogdGhpcy5kYXRhQ291bnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGF2ZSB0aGUgYnl0ZXMgZm9yIHRoZSB0YWcgYmVlbiBsb2FkZWQsIG9yIGlzIGEgZmV0Y2ggcmVxdWlyZWQgdG8gcmVhZCB0aGUgdGFnXG4gICAgICovXG4gICAgZ2V0IGhhc0J5dGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5oYXNCeXRlcyh0aGlzLnZhbHVlUG9pbnRlciwgdGhpcy5kYXRhTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpcyB0aGUgdGFnIHJlYWR5IHRvIGJlIHJlYWRcbiAgICAgKi9cbiAgICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBzaXplIG9mIHRoZSBkYXRhIHR5cGVcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhpcyBpcyBvbmx5IHRoZSBzaXplIG9mIG9uZSBpbnN0YW5jZSBvZiB0aGUgZGF0YSBAc2VlIHRoaXMuZGF0YUxlbmd0aCBmb3IgdG90YWwgYnl0ZSBzaXplXG4gICAgICpcbiAgICAgKi9cbiAgICBkYXRhVHlwZVNpemU6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldCBhIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIGEgZGF0YXR5cGVcbiAgICAgKlxuICAgICAqL1xuICAgIGdldCBkYXRhVHlwZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFRpZmZUYWdWYWx1ZVR5cGVbdGhpcy5kYXRhVHlwZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgdGhlIGFsbCBvZiB0aGUgZGF0YVxuICAgICAqL1xuICAgIGRhdGFMZW5ndGg6IG51bWJlcjtcblxuICAgIC8qKiBhYnNvbHV0ZSBvZmZzZXQgb2YgdGhlIFRhZyB2YWx1ZSAqL1xuICAgIGdldCB2YWx1ZVBvaW50ZXIoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWVPZmZzZXQgPSB0aGlzLnNpemUgLSB0aGlzLnRpZmYuaWZkQ29uZmlnLnBvaW50ZXI7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsdWVJbmxpbmUpIHJldHVybiB0aGlzLmJ5dGVPZmZzZXQgKyB2YWx1ZU9mZnNldDtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludCh0aGlzLmJ5dGVPZmZzZXQgKyB2YWx1ZU9mZnNldCwgdGhpcy50aWZmLmlmZENvbmZpZy5wb2ludGVyKTtcbiAgICB9XG5cbiAgICAvKiogU2l6ZSBvZiB0aGUgSUZEIChieXRlcykgKi9cbiAgICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLmlmZENvbmZpZy5pZmQ7XG4gICAgfVxuXG4gICAgLyoqIElzIHRoZSB2YWx1ZSBvZiB0aGlzIHRhZyBpbmxpbmUsIG9yIGlzIGl0IGEgcG9pbnRlciB0byB0aGUgcmVhbCB2YWx1ZSAqL1xuICAgIGdldCBpc1ZhbHVlSW5saW5lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhTGVuZ3RoIDw9IHRoaXMudGlmZi5pZmRDb25maWcucG9pbnRlcjtcbiAgICB9XG5cbiAgICAvKiogUmVhZCB0aGUgdmFsdWUgaW4gZnJvbSB0aGUgYnl0ZSBhcnJheSAqL1xuICAgIHJlYWRWYWx1ZSgpOiBUIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy52YWx1ZVBvaW50ZXI7XG4gICAgICAgIGNvbnN0IGRhdGFUeXBlU2l6ZSA9IHRoaXMuZGF0YVR5cGVTaXplO1xuICAgICAgICBjb25zdCBjb252ZXJ0ID0gZ2V0VGlmZlRhZ1ZhbHVlUmVhZGVyKHRoaXMuZGF0YVR5cGUpO1xuICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuZGF0YUNvdW50O1xuICAgICAgICBjb25zdCBkYXRhTGVuZ3RoID0gY291bnQgKiBkYXRhVHlwZVNpemU7XG5cbiAgICAgICAgaWYgKGNvdW50ID09PSAxKSByZXR1cm4gY29udmVydCh0aGlzLnRpZmYuc291cmNlLCBvZmZzZXQpIGFzIHVua25vd24gYXMgVDtcblxuICAgICAgICBjb25zdCBvdXRwdXQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpICs9IGRhdGFUeXBlU2l6ZSkge1xuICAgICAgICAgICAgb3V0cHV0LnB1c2goY29udmVydCh0aGlzLnRpZmYuc291cmNlLCBvZmZzZXQgKyBpKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc3RyaW5nIGlmIGFzY2lpXG4gICAgICAgIGlmICh0aGlzLmRhdGFUeXBlID09PSBUaWZmVGFnVmFsdWVUeXBlLkFTQ0lJKSByZXR1cm4gb3V0cHV0LmpvaW4oJycpLnRyaW0oKSBhcyB1bmtub3duIGFzIFQ7XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dCBhcyB1bmtub3duIGFzIFQ7XG4gICAgfVxuXG4gICAgLyoqIEdldCBhIGh1bWFuKGlzaCkgZnJpZW5kbHkgb3V0cHV0IGZvciB0aGUgdGFncyAqL1xuICAgIHRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIG9mZnNldDogdGhpcy5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgaXNSZWFkeTogdGhpcy5pc1JlYWR5LFxuICAgICAgICAgICAgdHlwZTogdGhpcy5kYXRhVHlwZU5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.lazy.d.ts","sourceRoot":"","sources":["../../../src/read/tag/tiff.tag.lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACpD,KAAK,EAAE,CAAC,GAAG,IAAI,CAAQ;IAEvB,IAAI,OAAO,IAAI,OAAO,CAErB;IAEK,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;CAO5B"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
2
|
-
export class CogTiffTagLazy extends CogTiffTagBase {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments);
|
|
5
|
-
this.value = null;
|
|
6
|
-
}
|
|
7
|
-
get isReady() {
|
|
8
|
-
return this.value != null;
|
|
9
|
-
}
|
|
10
|
-
async fetch() {
|
|
11
|
-
if (this.tiff.source.hasBytes(this.valuePointer, this.dataLength) === false) {
|
|
12
|
-
await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
|
|
13
|
-
}
|
|
14
|
-
this.value = this.readValue();
|
|
15
|
-
return this.value;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcubGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZWFkL3RhZy90aWZmLnRhZy5sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxNQUFNLE9BQU8sY0FBa0IsU0FBUSxjQUFpQjtJQUF4RDs7UUFDSSxVQUFLLEdBQWEsSUFBSSxDQUFDO0lBYTNCLENBQUM7SUFYRyxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNQLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUN6RSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN4RTtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmVGFnQmFzZSB9IGZyb20gJy4vdGlmZi50YWcuYmFzZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2dUaWZmVGFnTGF6eTxUPiBleHRlbmRzIENvZ1RpZmZUYWdCYXNlPFQ+IHtcbiAgICB2YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICE9IG51bGw7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2goKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGlmICh0aGlzLnRpZmYuc291cmNlLmhhc0J5dGVzKHRoaXMudmFsdWVQb2ludGVyLCB0aGlzLmRhdGFMZW5ndGgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50aWZmLnNvdXJjZS5sb2FkQnl0ZXModGhpcy52YWx1ZVBvaW50ZXIsIHRoaXMuZGF0YUxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmVhZFZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { CogTiff } from '../../cog.tiff.js';
|
|
2
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
3
|
-
/**
|
|
4
|
-
* TiffTag for offset arrays
|
|
5
|
-
*
|
|
6
|
-
* Allows individual access to specific records without having to read the entire tag in.
|
|
7
|
-
*/
|
|
8
|
-
export declare class CogTiffTagOffset extends CogTiffTagBase<number[]> {
|
|
9
|
-
private loadedValues;
|
|
10
|
-
constructor(tagId: number, tiff: CogTiff, offset: number);
|
|
11
|
-
get value(): number[] | null;
|
|
12
|
-
/** Load the entire index into memory */
|
|
13
|
-
load(): Promise<void>;
|
|
14
|
-
readValue(): number[];
|
|
15
|
-
/**
|
|
16
|
-
* Read a specific value from the offset array
|
|
17
|
-
* @param index index to read at
|
|
18
|
-
*/
|
|
19
|
-
getValueAt(index: number): Promise<number>;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=tiff.tag.offset.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.offset.d.ts","sourceRoot":"","sources":["../../../src/read/tag/tiff.tag.offset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;IAC1D,OAAO,CAAC,YAAY,CAAyB;gBAEjC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAIxD,IAAI,KAAK,IAAI,MAAM,EAAE,GAAG,IAAI,CAS3B;IAED,wCAAwC;IAClC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,SAAS,IAAI,MAAM,EAAE;IAWrB;;;OAGG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYnD"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { getTiffTagValueReader } from '../tiff.value.reader.js';
|
|
2
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
3
|
-
/**
|
|
4
|
-
* TiffTag for offset arrays
|
|
5
|
-
*
|
|
6
|
-
* Allows individual access to specific records without having to read the entire tag in.
|
|
7
|
-
*/
|
|
8
|
-
export class CogTiffTagOffset extends CogTiffTagBase {
|
|
9
|
-
constructor(tagId, tiff, offset) {
|
|
10
|
-
super(tagId, tiff, offset);
|
|
11
|
-
this.loadedValues = null;
|
|
12
|
-
}
|
|
13
|
-
get value() {
|
|
14
|
-
if (this.loadedValues != null)
|
|
15
|
-
return this.loadedValues;
|
|
16
|
-
if (this.hasBytes) {
|
|
17
|
-
this.readValue();
|
|
18
|
-
return this.loadedValues;
|
|
19
|
-
}
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
/** Load the entire index into memory */
|
|
23
|
-
async load() {
|
|
24
|
-
await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
|
|
25
|
-
this.readValue();
|
|
26
|
-
}
|
|
27
|
-
readValue() {
|
|
28
|
-
const val = super.readValue();
|
|
29
|
-
// if only one value is read in, it will not be returned as a array
|
|
30
|
-
if (typeof val === 'number') {
|
|
31
|
-
this.loadedValues = [val];
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
this.loadedValues = val;
|
|
35
|
-
}
|
|
36
|
-
return this.loadedValues;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Read a specific value from the offset array
|
|
40
|
-
* @param index index to read at
|
|
41
|
-
*/
|
|
42
|
-
async getValueAt(index) {
|
|
43
|
-
if (this.loadedValues)
|
|
44
|
-
return this.loadedValues[index];
|
|
45
|
-
const dataSize = this.dataTypeSize;
|
|
46
|
-
const valueOffset = this.valuePointer + dataSize * index;
|
|
47
|
-
const convert = getTiffTagValueReader(this.dataType);
|
|
48
|
-
if (!this.tiff.source.hasBytes(valueOffset, dataSize)) {
|
|
49
|
-
await this.tiff.source.loadBytes(valueOffset, dataSize);
|
|
50
|
-
}
|
|
51
|
-
return convert(this.tiff.source, valueOffset);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcub2Zmc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlYWQvdGFnL3RpZmYudGFnLm9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUF3QjtJQUcxRCxZQUFZLEtBQWEsRUFBRSxJQUFhLEVBQUUsTUFBYztRQUNwRCxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUh2QixpQkFBWSxHQUFvQixJQUFJLENBQUM7SUFJN0MsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLEtBQUssQ0FBQyxJQUFJO1FBQ04sTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLG1FQUFtRTtRQUNuRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ25DLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDbkQsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFXLENBQUM7SUFDNUQsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uLy4uL2NvZy50aWZmLmpzJztcbmltcG9ydCB7IGdldFRpZmZUYWdWYWx1ZVJlYWRlciB9IGZyb20gJy4uL3RpZmYudmFsdWUucmVhZGVyLmpzJztcbmltcG9ydCB7IENvZ1RpZmZUYWdCYXNlIH0gZnJvbSAnLi90aWZmLnRhZy5iYXNlLmpzJztcblxuLyoqXG4gKiBUaWZmVGFnIGZvciBvZmZzZXQgYXJyYXlzXG4gKlxuICogQWxsb3dzIGluZGl2aWR1YWwgYWNjZXNzIHRvIHNwZWNpZmljIHJlY29yZHMgd2l0aG91dCBoYXZpbmcgdG8gcmVhZCB0aGUgZW50aXJlIHRhZyBpbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZ1RpZmZUYWdPZmZzZXQgZXh0ZW5kcyBDb2dUaWZmVGFnQmFzZTxudW1iZXJbXT4ge1xuICAgIHByaXZhdGUgbG9hZGVkVmFsdWVzOiBudW1iZXJbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IodGFnSWQ6IG51bWJlciwgdGlmZjogQ29nVGlmZiwgb2Zmc2V0OiBudW1iZXIpIHtcbiAgICAgICAgc3VwZXIodGFnSWQsIHRpZmYsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZ2V0IHZhbHVlKCk6IG51bWJlcltdIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZFZhbHVlcyAhPSBudWxsKSByZXR1cm4gdGhpcy5sb2FkZWRWYWx1ZXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQnl0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVhZFZhbHVlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkZWRWYWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiogTG9hZCB0aGUgZW50aXJlIGluZGV4IGludG8gbWVtb3J5ICovXG4gICAgYXN5bmMgbG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy50aWZmLnNvdXJjZS5sb2FkQnl0ZXModGhpcy52YWx1ZVBvaW50ZXIsIHRoaXMuZGF0YUxlbmd0aCk7XG4gICAgICAgIHRoaXMucmVhZFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcmVhZFZhbHVlKCk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgdmFsID0gc3VwZXIucmVhZFZhbHVlKCk7XG4gICAgICAgIC8vIGlmIG9ubHkgb25lIHZhbHVlIGlzIHJlYWQgaW4sIGl0IHdpbGwgbm90IGJlIHJldHVybmVkIGFzIGEgYXJyYXlcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZFZhbHVlcyA9IFt2YWxdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkZWRWYWx1ZXMgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlYWQgYSBzcGVjaWZpYyB2YWx1ZSBmcm9tIHRoZSBvZmZzZXQgYXJyYXlcbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggdG8gcmVhZCBhdFxuICAgICAqL1xuICAgIGFzeW5jIGdldFZhbHVlQXQoaW5kZXg6IG51bWJlcik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZFZhbHVlcykgcmV0dXJuIHRoaXMubG9hZGVkVmFsdWVzW2luZGV4XTtcblxuICAgICAgICBjb25zdCBkYXRhU2l6ZSA9IHRoaXMuZGF0YVR5cGVTaXplO1xuICAgICAgICBjb25zdCB2YWx1ZU9mZnNldCA9IHRoaXMudmFsdWVQb2ludGVyICsgZGF0YVNpemUgKiBpbmRleDtcbiAgICAgICAgY29uc3QgY29udmVydCA9IGdldFRpZmZUYWdWYWx1ZVJlYWRlcih0aGlzLmRhdGFUeXBlKTtcblxuICAgICAgICBpZiAoIXRoaXMudGlmZi5zb3VyY2UuaGFzQnl0ZXModmFsdWVPZmZzZXQsIGRhdGFTaXplKSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50aWZmLnNvdXJjZS5sb2FkQnl0ZXModmFsdWVPZmZzZXQsIGRhdGFTaXplKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udmVydCh0aGlzLnRpZmYuc291cmNlLCB2YWx1ZU9mZnNldCkgYXMgbnVtYmVyO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
2
|
-
export declare class CogTifTagStatic<T> extends CogTiffTagBase<T> {
|
|
3
|
-
_isRead: boolean;
|
|
4
|
-
_value: T | null;
|
|
5
|
-
/** Lazy read the inline tiff tags */
|
|
6
|
-
get value(): T;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=tiff.tag.static.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.static.d.ts","sourceRoot":"","sources":["../../../src/read/tag/tiff.tag.static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACrD,OAAO,UAAS;IAChB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAQ;IAExB,qCAAqC;IACrC,IAAI,KAAK,IAAI,CAAC,CAMb;CACJ"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
2
|
-
export class CogTifTagStatic extends CogTiffTagBase {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments);
|
|
5
|
-
this._isRead = false;
|
|
6
|
-
this._value = null;
|
|
7
|
-
}
|
|
8
|
-
/** Lazy read the inline tiff tags */
|
|
9
|
-
get value() {
|
|
10
|
-
if (this._isRead === false) {
|
|
11
|
-
this._value = this.readValue();
|
|
12
|
-
this._isRead = true;
|
|
13
|
-
}
|
|
14
|
-
return this._value;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlmZi50YWcuc3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlYWQvdGFnL3RpZmYudGFnLnN0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsTUFBTSxPQUFPLGVBQW1CLFNBQVEsY0FBaUI7SUFBekQ7O1FBQ0ksWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixXQUFNLEdBQWEsSUFBSSxDQUFDO0lBVTVCLENBQUM7SUFSRyxxQ0FBcUM7SUFDckMsSUFBSSxLQUFLO1FBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztTQUN2QjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQVcsQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2dUaWZmVGFnQmFzZSB9IGZyb20gJy4vdGlmZi50YWcuYmFzZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2dUaWZUYWdTdGF0aWM8VD4gZXh0ZW5kcyBDb2dUaWZmVGFnQmFzZTxUPiB7XG4gICAgX2lzUmVhZCA9IGZhbHNlO1xuICAgIF92YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIExhenkgcmVhZCB0aGUgaW5saW5lIHRpZmYgdGFncyAqL1xuICAgIGdldCB2YWx1ZSgpOiBUIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmVhZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5yZWFkVmFsdWUoKTtcbiAgICAgICAgICAgIHRoaXMuX2lzUmVhZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlIGFzIFQ7XG4gICAgfVxufVxuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.gdal.d.ts","sourceRoot":"","sources":["../../src/read/tiff.gdal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,oBAAY,WAAW;IACnB,6BAA6B,kCAAkC;IAC/D,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,0BAA0B,+BAA+B;IACzD,6BAA6B,kCAAkC;CAClE;AAED,oBAAY,oBAAoB;IAC5B,QAAQ,cAAc;CACzB;AAED,oBAAY,qBAAqB;IAC7B,MAAM,kBAAkB;CAC3B;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACzC,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAG5B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAuBhC;;OAEG;IACH,IAAI,kBAAkB,IAAI,QAAQ,GAAG,IAAI,CAOxC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;CACJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.ifd.config.d.ts","sourceRoot":"","sources":["../../src/read/tiff.ifd.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,eAAO,MAAM,aAAa,EAAE,aAY3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAe9B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.tag.d.ts","sourceRoot":"","sources":["../../src/read/tiff.tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,eAAO,MAAM,UAAU;IACnB;;;;;;;OAOG;iBACU,OAAO,UAAU,MAAM,GAAG,eAAe,OAAO,CAAC;;;2BAuBvC,cAAc;CAGxC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tiff.value.reader.d.ts","sourceRoot":"","sources":["../../src/read/tiff.value.reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,WAAW,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,wBAAgB,cAAc,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAwBlE;AAED,oBAAY,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,oBAAY,sBAAsB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAanH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,sBAAsB,CA+BzF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { CogTiff } from '../cog.tiff.js';
|
|
2
|
-
/**
|
|
3
|
-
* View of a Cog source used for reading bytes from the cog while keeping
|
|
4
|
-
* track of the offset
|
|
5
|
-
*/
|
|
6
|
-
export declare class CogSourceCursor {
|
|
7
|
-
private tiff;
|
|
8
|
-
/** Starting offset for the view */
|
|
9
|
-
byteOffset: number;
|
|
10
|
-
/** number of bytes that have been read since starting */
|
|
11
|
-
relativeOffset: number;
|
|
12
|
-
constructor(tiff: CogTiff, offset?: number);
|
|
13
|
-
/** current offset after all the reads */
|
|
14
|
-
get currentOffset(): number;
|
|
15
|
-
/** Seek to a position */
|
|
16
|
-
seekTo(offset: number): CogSourceCursor;
|
|
17
|
-
/**
|
|
18
|
-
* @param count number of bytes to move
|
|
19
|
-
* @returns the offset that we seeked from
|
|
20
|
-
*/
|
|
21
|
-
seek(count: number): number;
|
|
22
|
-
bytes(count: number): Uint8Array;
|
|
23
|
-
uint(size: number): number;
|
|
24
|
-
uint8(): number;
|
|
25
|
-
uint16(): number;
|
|
26
|
-
uint32(): number;
|
|
27
|
-
uint64(): number;
|
|
28
|
-
pointer(): number;
|
|
29
|
-
offset(): number;
|
|
30
|
-
float(): number;
|
|
31
|
-
double(): number;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=cog.source.view.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cog.source.view.d.ts","sourceRoot":"","sources":["../../src/source/cog.source.view.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC;;;GAGG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,IAAI,CAAU;IACtB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;gBAEX,IAAI,EAAE,OAAO,EAAE,MAAM,SAAI;IAMrC,yCAAyC;IACzC,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,yBAAyB;IACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;IAMvC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAM3B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAGhC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAG1B,KAAK,IAAI,MAAM;IAGf,MAAM,IAAI,MAAM;IAGhB,MAAM,IAAI,MAAM;IAGhB,MAAM,IAAI,MAAM;IAGhB,OAAO,IAAI,MAAM;IAIjB,MAAM,IAAI,MAAM;IAKhB,KAAK,IAAI,MAAM;IAGf,MAAM,IAAI,MAAM;CAGnB"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { ByteSize } from '@chunkd/core';
|
|
2
|
-
import * as ieee754 from 'ieee754';
|
|
3
|
-
/**
|
|
4
|
-
* View of a Cog source used for reading bytes from the cog while keeping
|
|
5
|
-
* track of the offset
|
|
6
|
-
*/
|
|
7
|
-
export class CogSourceCursor {
|
|
8
|
-
constructor(tiff, offset = 0) {
|
|
9
|
-
this.tiff = tiff;
|
|
10
|
-
this.byteOffset = offset;
|
|
11
|
-
this.relativeOffset = 0;
|
|
12
|
-
}
|
|
13
|
-
/** current offset after all the reads */
|
|
14
|
-
get currentOffset() {
|
|
15
|
-
return this.byteOffset + this.relativeOffset;
|
|
16
|
-
}
|
|
17
|
-
/** Seek to a position */
|
|
18
|
-
seekTo(offset) {
|
|
19
|
-
this.byteOffset = offset;
|
|
20
|
-
this.relativeOffset = 0;
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @param count number of bytes to move
|
|
25
|
-
* @returns the offset that we seeked from
|
|
26
|
-
*/
|
|
27
|
-
seek(count) {
|
|
28
|
-
const startOffset = this.currentOffset;
|
|
29
|
-
this.relativeOffset += count;
|
|
30
|
-
return startOffset;
|
|
31
|
-
}
|
|
32
|
-
bytes(count) {
|
|
33
|
-
return this.tiff.source.bytes(this.seek(count), count);
|
|
34
|
-
}
|
|
35
|
-
uint(size) {
|
|
36
|
-
return this.tiff.source.getUint(this.seek(size), size);
|
|
37
|
-
}
|
|
38
|
-
uint8() {
|
|
39
|
-
return this.tiff.source.getUint8(this.seek(ByteSize.UInt8));
|
|
40
|
-
}
|
|
41
|
-
uint16() {
|
|
42
|
-
return this.tiff.source.getUint16(this.seek(ByteSize.UInt16));
|
|
43
|
-
}
|
|
44
|
-
uint32() {
|
|
45
|
-
return this.tiff.source.getUint32(this.seek(ByteSize.UInt32));
|
|
46
|
-
}
|
|
47
|
-
uint64() {
|
|
48
|
-
return this.tiff.source.getUint64(this.seek(ByteSize.UInt64));
|
|
49
|
-
}
|
|
50
|
-
pointer() {
|
|
51
|
-
const pointerSize = this.tiff.ifdConfig.pointer;
|
|
52
|
-
return this.tiff.source.getUint(this.seek(pointerSize), pointerSize);
|
|
53
|
-
}
|
|
54
|
-
offset() {
|
|
55
|
-
const offsetSize = this.tiff.ifdConfig.offset;
|
|
56
|
-
return this.tiff.source.getUint(this.seek(offsetSize), offsetSize);
|
|
57
|
-
}
|
|
58
|
-
float() {
|
|
59
|
-
return ieee754.read(this.bytes(ByteSize.Float), 0, this.tiff.source.isLittleEndian, 23, 4);
|
|
60
|
-
}
|
|
61
|
-
double() {
|
|
62
|
-
return ieee754.read(this.bytes(ByteSize.Double), 0, this.tiff.source.isLittleEndian, 52, 8);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nLnNvdXJjZS52aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NvdXJjZS9jb2cuc291cmNlLnZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUduQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQU94QixZQUFZLElBQWEsRUFBRSxNQUFNLEdBQUcsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2pELENBQUM7SUFFRCx5QkFBeUI7SUFDekIsTUFBTSxDQUFDLE1BQWM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxLQUFhO1FBQ2QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUM3QixPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxJQUFJLENBQUMsSUFBWTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELEtBQUs7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxNQUFNO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsTUFBTTtRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE1BQU07UUFDRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPO1FBQ0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELE1BQU07UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsS0FBSztRQUNELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBQ0QsTUFBTTtRQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCeXRlU2l6ZSB9IGZyb20gJ0BjaHVua2QvY29yZSc7XG5pbXBvcnQgKiBhcyBpZWVlNzU0IGZyb20gJ2llZWU3NTQnO1xuaW1wb3J0IHsgQ29nVGlmZiB9IGZyb20gJy4uL2NvZy50aWZmLmpzJztcblxuLyoqXG4gKiBWaWV3IG9mIGEgQ29nIHNvdXJjZSB1c2VkIGZvciByZWFkaW5nIGJ5dGVzIGZyb20gdGhlIGNvZyB3aGlsZSBrZWVwaW5nXG4gKiB0cmFjayBvZiB0aGUgb2Zmc2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBDb2dTb3VyY2VDdXJzb3Ige1xuICAgIHByaXZhdGUgdGlmZjogQ29nVGlmZjtcbiAgICAvKiogU3RhcnRpbmcgb2Zmc2V0IGZvciB0aGUgdmlldyAqL1xuICAgIGJ5dGVPZmZzZXQ6IG51bWJlcjtcbiAgICAvKiogbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIHJlYWQgc2luY2Ugc3RhcnRpbmcgKi9cbiAgICByZWxhdGl2ZU9mZnNldDogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IodGlmZjogQ29nVGlmZiwgb2Zmc2V0ID0gMCkge1xuICAgICAgICB0aGlzLnRpZmYgPSB0aWZmO1xuICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgPSAwO1xuICAgIH1cblxuICAgIC8qKiBjdXJyZW50IG9mZnNldCBhZnRlciBhbGwgdGhlIHJlYWRzICovXG4gICAgZ2V0IGN1cnJlbnRPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZU9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIFNlZWsgdG8gYSBwb3NpdGlvbiAqL1xuICAgIHNlZWtUbyhvZmZzZXQ6IG51bWJlcik6IENvZ1NvdXJjZUN1cnNvciB7XG4gICAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgdGhpcy5yZWxhdGl2ZU9mZnNldCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb3VudCBudW1iZXIgb2YgYnl0ZXMgdG8gbW92ZVxuICAgICAqIEByZXR1cm5zIHRoZSBvZmZzZXQgdGhhdCB3ZSBzZWVrZWQgZnJvbVxuICAgICAqL1xuICAgIHNlZWsoY291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gdGhpcy5jdXJyZW50T2Zmc2V0O1xuICAgICAgICB0aGlzLnJlbGF0aXZlT2Zmc2V0ICs9IGNvdW50O1xuICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQ7XG4gICAgfVxuXG4gICAgYnl0ZXMoY291bnQ6IG51bWJlcik6IFVpbnQ4QXJyYXkge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5ieXRlcyh0aGlzLnNlZWsoY291bnQpLCBjb3VudCk7XG4gICAgfVxuICAgIHVpbnQoc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludCh0aGlzLnNlZWsoc2l6ZSksIHNpemUpO1xuICAgIH1cbiAgICB1aW50OCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50OCh0aGlzLnNlZWsoQnl0ZVNpemUuVUludDgpKTtcbiAgICB9XG4gICAgdWludDE2KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpZmYuc291cmNlLmdldFVpbnQxNih0aGlzLnNlZWsoQnl0ZVNpemUuVUludDE2KSk7XG4gICAgfVxuICAgIHVpbnQzMigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy50aWZmLnNvdXJjZS5nZXRVaW50MzIodGhpcy5zZWVrKEJ5dGVTaXplLlVJbnQzMikpO1xuICAgIH1cbiAgICB1aW50NjQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludDY0KHRoaXMuc2VlayhCeXRlU2l6ZS5VSW50NjQpKTtcbiAgICB9XG4gICAgcG9pbnRlcigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBwb2ludGVyU2l6ZSA9IHRoaXMudGlmZi5pZmRDb25maWcucG9pbnRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMudGlmZi5zb3VyY2UuZ2V0VWludCh0aGlzLnNlZWsocG9pbnRlclNpemUpLCBwb2ludGVyU2l6ZSk7XG4gICAgfVxuICAgIG9mZnNldCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBvZmZzZXRTaXplID0gdGhpcy50aWZmLmlmZENvbmZpZy5vZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzLnRpZmYuc291cmNlLmdldFVpbnQodGhpcy5zZWVrKG9mZnNldFNpemUpLCBvZmZzZXRTaXplKTtcbiAgICB9XG5cbiAgICBmbG9hdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMuYnl0ZXMoQnl0ZVNpemUuRmxvYXQpLCAwLCB0aGlzLnRpZmYuc291cmNlLmlzTGl0dGxlRW5kaWFuLCAyMywgNCk7XG4gICAgfVxuICAgIGRvdWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMuYnl0ZXMoQnl0ZVNpemUuRG91YmxlKSwgMCwgdGhpcy50aWZmLnNvdXJjZS5pc0xpdHRsZUVuZGlhbiwgNTIsIDgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.hex.d.ts","sourceRoot":"","sources":["../../src/util/util.hex.ts"],"names":[],"mappings":"AAAA;;;;;;;;IAQI;AACJ,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,SAAI,EAAE,MAAM,UAAO,GAAG,MAAM,CAM3E"}
|
package/build/vector.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../src/vector.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAY,SAAQ,KAAK,EAAE,IAAI;CAAG;AACnD,MAAM,WAAW,MAAO,SAAQ,KAAK;IACjC,CAAC,EAAE,MAAM,CAAC;CACb"}
|
package/src/@types/ieee754.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
declare namespace Ieee754 {
|
|
2
|
-
interface Static {
|
|
3
|
-
read(buffer: number[] | Uint8Array, offset: number, isLe: boolean, mLen: number, nBytes: number): number;
|
|
4
|
-
write(
|
|
5
|
-
buffer: number[] | Uint8Array,
|
|
6
|
-
value: number,
|
|
7
|
-
offset: number,
|
|
8
|
-
isLE: boolean,
|
|
9
|
-
mLen: number,
|
|
10
|
-
nBytes: number,
|
|
11
|
-
): void;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
declare module 'ieee754' {
|
|
16
|
-
const ieee754: Ieee754.Static;
|
|
17
|
-
export = ieee754;
|
|
18
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { TestFileChunkSource } from '@chunkd/core/build/__test__/chunk.source.fake.js';
|
|
2
|
-
import o from 'ospec';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import { fileURLToPath } from 'url';
|
|
5
|
-
import { CogTiff } from '../../../cog.tiff.js';
|
|
6
|
-
import { CogTiffTagLazy } from '../tiff.tag.lazy.js';
|
|
7
|
-
|
|
8
|
-
o.spec('TiffTag', () => {
|
|
9
|
-
const dirName = fileURLToPath(import.meta.url);
|
|
10
|
-
const cogSourceFile = new TestFileChunkSource(path.join(dirName, '../../../../../data/rgba8_tiled.tiff'));
|
|
11
|
-
|
|
12
|
-
o.beforeEach(() => {
|
|
13
|
-
(cogSourceFile.chunks as Map<unknown, unknown>).clear();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
o('should load lazy tags', async () => {
|
|
17
|
-
const tiff = new CogTiff(cogSourceFile);
|
|
18
|
-
|
|
19
|
-
await cogSourceFile.loadBytes(3680, 8);
|
|
20
|
-
const lazy = new CogTiffTagLazy(339, tiff, 3680);
|
|
21
|
-
o(lazy.value).equals(null);
|
|
22
|
-
|
|
23
|
-
const res = await lazy.fetch();
|
|
24
|
-
o(res).deepEquals([18761, 43, 8, 0]);
|
|
25
|
-
o(lazy.value).deepEquals(res);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { CogTiff } from '../../cog.tiff.js';
|
|
2
|
-
import { TiffTag } from '../../const/tiff.tag.id.js';
|
|
3
|
-
import { TiffTagValueType } from '../../const/tiff.tag.value.js';
|
|
4
|
-
import { getTiffTagSize, getTiffTagValueReader } from '../tiff.value.reader.js';
|
|
5
|
-
|
|
6
|
-
export abstract class CogTiffTagBase<T = unknown> {
|
|
7
|
-
/**
|
|
8
|
-
* Value of the tiff tag, may be null if the value has not been read
|
|
9
|
-
*/
|
|
10
|
-
abstract value: T | null;
|
|
11
|
-
|
|
12
|
-
/** Raw offset for where in the tif this tag starts */
|
|
13
|
-
private byteOffset: number;
|
|
14
|
-
|
|
15
|
-
/** Name of the tag */
|
|
16
|
-
name: string;
|
|
17
|
-
|
|
18
|
-
/** TifTagId @see TiffTag */
|
|
19
|
-
id: number;
|
|
20
|
-
|
|
21
|
-
/** Type of data inside the record @see this.dataTypeName */
|
|
22
|
-
dataType: number;
|
|
23
|
-
|
|
24
|
-
/** Number of records inside the tag */
|
|
25
|
-
dataCount: number;
|
|
26
|
-
|
|
27
|
-
tiff: CogTiff;
|
|
28
|
-
|
|
29
|
-
constructor(id: number, tiff: CogTiff, offset: number) {
|
|
30
|
-
this.tiff = tiff;
|
|
31
|
-
this.byteOffset = offset;
|
|
32
|
-
|
|
33
|
-
this.id = id;
|
|
34
|
-
this.name = TiffTag[this.id];
|
|
35
|
-
this.dataType = this.tiff.source.getUint16(offset + 2);
|
|
36
|
-
this.dataCount = this.tiff.source.getUint(offset + 4, this.tiff.ifdConfig.pointer);
|
|
37
|
-
this.dataTypeSize = getTiffTagSize(this.dataType);
|
|
38
|
-
this.dataLength = this.dataTypeSize * this.dataCount;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Have the bytes for the tag been loaded, or is a fetch required to read the tag
|
|
43
|
-
*/
|
|
44
|
-
get hasBytes(): boolean {
|
|
45
|
-
return this.tiff.source.hasBytes(this.valuePointer, this.dataLength);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* is the tag ready to be read
|
|
50
|
-
*/
|
|
51
|
-
get isReady(): boolean {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Get the size of the data type
|
|
57
|
-
*
|
|
58
|
-
* @remarks
|
|
59
|
-
* This is only the size of one instance of the data @see this.dataLength for total byte size
|
|
60
|
-
*
|
|
61
|
-
*/
|
|
62
|
-
dataTypeSize: number;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Get a human readable name for a datatype
|
|
66
|
-
*
|
|
67
|
-
*/
|
|
68
|
-
get dataTypeName(): string {
|
|
69
|
-
return TiffTagValueType[this.dataType];
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Get the number of bytes used for the all of the data
|
|
74
|
-
*/
|
|
75
|
-
dataLength: number;
|
|
76
|
-
|
|
77
|
-
/** absolute offset of the Tag value */
|
|
78
|
-
get valuePointer(): number {
|
|
79
|
-
const valueOffset = this.size - this.tiff.ifdConfig.pointer;
|
|
80
|
-
if (this.isValueInline) return this.byteOffset + valueOffset;
|
|
81
|
-
return this.tiff.source.getUint(this.byteOffset + valueOffset, this.tiff.ifdConfig.pointer);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** Size of the IFD (bytes) */
|
|
85
|
-
get size(): number {
|
|
86
|
-
return this.tiff.ifdConfig.ifd;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/** Is the value of this tag inline, or is it a pointer to the real value */
|
|
90
|
-
get isValueInline(): boolean {
|
|
91
|
-
return this.dataLength <= this.tiff.ifdConfig.pointer;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/** Read the value in from the byte array */
|
|
95
|
-
readValue(): T {
|
|
96
|
-
const offset = this.valuePointer;
|
|
97
|
-
const dataTypeSize = this.dataTypeSize;
|
|
98
|
-
const convert = getTiffTagValueReader(this.dataType);
|
|
99
|
-
const count = this.dataCount;
|
|
100
|
-
const dataLength = count * dataTypeSize;
|
|
101
|
-
|
|
102
|
-
if (count === 1) return convert(this.tiff.source, offset) as unknown as T;
|
|
103
|
-
|
|
104
|
-
const output = [];
|
|
105
|
-
for (let i = 0; i < dataLength; i += dataTypeSize) {
|
|
106
|
-
output.push(convert(this.tiff.source, offset + i));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
// Convert to a string if ascii
|
|
110
|
-
if (this.dataType === TiffTagValueType.ASCII) return output.join('').trim() as unknown as T;
|
|
111
|
-
|
|
112
|
-
return output as unknown as T;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/** Get a human(ish) friendly output for the tags */
|
|
116
|
-
toJSON(): Record<string, unknown> {
|
|
117
|
-
return {
|
|
118
|
-
id: this.id,
|
|
119
|
-
name: this.name,
|
|
120
|
-
offset: this.byteOffset,
|
|
121
|
-
isReady: this.isReady,
|
|
122
|
-
type: this.dataTypeName,
|
|
123
|
-
value: this.value,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
2
|
-
|
|
3
|
-
export class CogTiffTagLazy<T> extends CogTiffTagBase<T> {
|
|
4
|
-
value: T | null = null;
|
|
5
|
-
|
|
6
|
-
get isReady(): boolean {
|
|
7
|
-
return this.value != null;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
async fetch(): Promise<T> {
|
|
11
|
-
if (this.tiff.source.hasBytes(this.valuePointer, this.dataLength) === false) {
|
|
12
|
-
await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
|
|
13
|
-
}
|
|
14
|
-
this.value = this.readValue();
|
|
15
|
-
return this.value;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { CogTiff } from '../../cog.tiff.js';
|
|
2
|
-
import { getTiffTagValueReader } from '../tiff.value.reader.js';
|
|
3
|
-
import { CogTiffTagBase } from './tiff.tag.base.js';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* TiffTag for offset arrays
|
|
7
|
-
*
|
|
8
|
-
* Allows individual access to specific records without having to read the entire tag in.
|
|
9
|
-
*/
|
|
10
|
-
export class CogTiffTagOffset extends CogTiffTagBase<number[]> {
|
|
11
|
-
private loadedValues: number[] | null = null;
|
|
12
|
-
|
|
13
|
-
constructor(tagId: number, tiff: CogTiff, offset: number) {
|
|
14
|
-
super(tagId, tiff, offset);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
get value(): number[] | null {
|
|
18
|
-
if (this.loadedValues != null) return this.loadedValues;
|
|
19
|
-
|
|
20
|
-
if (this.hasBytes) {
|
|
21
|
-
this.readValue();
|
|
22
|
-
return this.loadedValues;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** Load the entire index into memory */
|
|
29
|
-
async load(): Promise<void> {
|
|
30
|
-
await this.tiff.source.loadBytes(this.valuePointer, this.dataLength);
|
|
31
|
-
this.readValue();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
readValue(): number[] {
|
|
35
|
-
const val = super.readValue();
|
|
36
|
-
// if only one value is read in, it will not be returned as a array
|
|
37
|
-
if (typeof val === 'number') {
|
|
38
|
-
this.loadedValues = [val];
|
|
39
|
-
} else {
|
|
40
|
-
this.loadedValues = val;
|
|
41
|
-
}
|
|
42
|
-
return this.loadedValues;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Read a specific value from the offset array
|
|
47
|
-
* @param index index to read at
|
|
48
|
-
*/
|
|
49
|
-
async getValueAt(index: number): Promise<number> {
|
|
50
|
-
if (this.loadedValues) return this.loadedValues[index];
|
|
51
|
-
|
|
52
|
-
const dataSize = this.dataTypeSize;
|
|
53
|
-
const valueOffset = this.valuePointer + dataSize * index;
|
|
54
|
-
const convert = getTiffTagValueReader(this.dataType);
|
|
55
|
-
|
|
56
|
-
if (!this.tiff.source.hasBytes(valueOffset, dataSize)) {
|
|
57
|
-
await this.tiff.source.loadBytes(valueOffset, dataSize);
|
|
58
|
-
}
|
|
59
|
-
return convert(this.tiff.source, valueOffset) as number;
|
|
60
|
-
}
|
|
61
|
-
}
|