237 lines
7.7 KiB
JavaScript
237 lines
7.7 KiB
JavaScript
// Metro module 4847 (f4848).
|
|
import Module4807 from "./Module4807";
|
|
import { readIfd, get0thIfdOffset } from "./readTag";
|
|
import { IFD_TYPE_MPF } from "./Module4823";
|
|
import Module4819 from "./Module4819";
|
|
import { deferInit, getBase64Image } from "./Module4802";
|
|
let c2981_3;
|
|
const r14 = {
|
|
read: function read(a0, a1, a2) {
|
|
let r8, r182, value11, value12, value9;
|
|
const byteOrder = Module4807.getByteOrder(a0, a1);
|
|
const r64 = readIfd(a0, IFD_TYPE_MPF, a1, get0thIfdOffset(a0, a1, byteOrder), byteOrder, a2);
|
|
if (r64.MPEntry) {
|
|
const Images = [];
|
|
const r73 = 0 < Math.ceil(r64.MPEntry.value.length / c2981_3);
|
|
let r76 = 0;
|
|
if (r73) {
|
|
do {
|
|
Images[r76] = {};
|
|
const value = r64.MPEntry.value;
|
|
const r1 = r76 * c2981_3;
|
|
const typeSize = Module4819.getTypeSize("LONG");
|
|
const r10 = r76;
|
|
if (byteOrder === Module4807.LITTLE_ENDIAN) {
|
|
const r92 = 0 < typeSize;
|
|
let r93 = 0;
|
|
let r94 = 0;
|
|
let r95 = 0;
|
|
if (r92) {
|
|
do {
|
|
r94 = r94 + (value[r1 + r93] << 8 * r93);
|
|
r93 = r93 + 1;
|
|
r95 = r94;
|
|
} while (r93 < typeSize);
|
|
}
|
|
r8 = r95;
|
|
} else {
|
|
const r86 = 0 < typeSize;
|
|
let r2 = 0;
|
|
let r3 = 0;
|
|
r8 = 0;
|
|
if (r86) {
|
|
do {
|
|
r3 = r3 + (value[r1 + r2] << 8 * (typeSize - 1 - r2));
|
|
r2 = r2 + 1;
|
|
r8 = r3;
|
|
} while (r2 < typeSize);
|
|
}
|
|
}
|
|
const r99 = Images[r10];
|
|
const value6 = [r8 >> 31 & 1, r8 >> 30 & 1, r8 >> 29 & 1];
|
|
const r107 = [];
|
|
if (value6[0]) {
|
|
r107.push("Dependent Parent Image");
|
|
}
|
|
if (value6[1]) {
|
|
r107.push("Dependent Child Image");
|
|
}
|
|
if (value6[2]) {
|
|
r107.push("Representative Image");
|
|
}
|
|
r99.ImageFlags = {
|
|
value: value6,
|
|
description: r107.join(", ") || "None"
|
|
};
|
|
const r120 = Images[r10];
|
|
const value7 = r8 >> 24 & 7;
|
|
r120.ImageFormat = {
|
|
value: value7,
|
|
description: value7 === 0 ? "JPEG" : "Unknown"
|
|
};
|
|
const r125 = Images[r10];
|
|
const value8 = 16777215 & r8;
|
|
r125.ImageType = {
|
|
value: value8,
|
|
description: ({
|
|
196608: "Baseline MP Primary Image",
|
|
65537: "Large Thumbnail (VGA equivalent)",
|
|
65538: "Large Thumbnail (Full HD equivalent)",
|
|
131073: "Multi-Frame Image (Panorama)",
|
|
131074: "Multi-Frame Image (Disparity)",
|
|
131075: "Multi-Frame Image (Multi-Angle)",
|
|
0: "Undefined"
|
|
})[value8] || "Unknown"
|
|
};
|
|
const value2 = r64.MPEntry.value;
|
|
const r134 = r10 * c2981_3 + 4;
|
|
const typeSize2 = Module4819.getTypeSize("LONG");
|
|
if (byteOrder === Module4807.LITTLE_ENDIAN) {
|
|
const r154 = 0 < typeSize2;
|
|
let r155 = 0;
|
|
let r156 = 0;
|
|
let r157 = 0;
|
|
if (r154) {
|
|
do {
|
|
r156 = r156 + (value2[r134 + r155] << 8 * r155);
|
|
r155 = r155 + 1;
|
|
r157 = r156;
|
|
} while (r155 < typeSize2);
|
|
}
|
|
value9 = r157;
|
|
} else {
|
|
const r144 = 0 < typeSize2;
|
|
let r145 = 0;
|
|
let r146 = 0;
|
|
value9 = 0;
|
|
if (r144) {
|
|
do {
|
|
r146 = r146 + (value2[r134 + r145] << 8 * (typeSize2 - 1 - r145));
|
|
r145 = r145 + 1;
|
|
value9 = r146;
|
|
} while (r145 < typeSize2);
|
|
}
|
|
}
|
|
Images[r10].ImageSize = {
|
|
value: value9,
|
|
description: "" + value9
|
|
};
|
|
const MPEntry = r64.MPEntry;
|
|
let value10 = 0;
|
|
if (r10 !== 0) {
|
|
const value3 = MPEntry.value;
|
|
const r170 = r10 * c2981_3 + 8;
|
|
const typeSize3 = Module4819.getTypeSize("LONG");
|
|
if (byteOrder === Module4807.LITTLE_ENDIAN) {
|
|
const r189 = 0 < typeSize3;
|
|
let r190 = 0;
|
|
let r191 = 0;
|
|
let r192 = 0;
|
|
if (r189) {
|
|
do {
|
|
r191 = r191 + (value3[r170 + r190] << 8 * r190);
|
|
r190 = r190 + 1;
|
|
r192 = r191;
|
|
} while (r190 < typeSize3);
|
|
}
|
|
r182 = r192;
|
|
} else {
|
|
const r179 = 0 < typeSize3;
|
|
let r180 = 0;
|
|
let r181 = 0;
|
|
r182 = 0;
|
|
if (r179) {
|
|
do {
|
|
r181 = r181 + (value3[r170 + r180] << 8 * (typeSize3 - 1 - r180));
|
|
r180 = r180 + 1;
|
|
r182 = r181;
|
|
} while (r180 < typeSize3);
|
|
}
|
|
}
|
|
value10 = r182 + a1;
|
|
}
|
|
Images[r10].ImageOffset = {
|
|
value: value10,
|
|
description: "" + value10
|
|
};
|
|
const value4 = r64.MPEntry.value;
|
|
const r203 = r10 * c2981_3 + 12;
|
|
const typeSize4 = Module4819.getTypeSize("SHORT");
|
|
if (byteOrder === Module4807.LITTLE_ENDIAN) {
|
|
const r223 = 0 < typeSize4;
|
|
let r224 = 0;
|
|
let r225 = 0;
|
|
let r226 = 0;
|
|
if (r223) {
|
|
do {
|
|
r225 = r225 + (value4[r203 + r224] << 8 * r224);
|
|
r224 = r224 + 1;
|
|
r226 = r225;
|
|
} while (r224 < typeSize4);
|
|
}
|
|
value11 = r226;
|
|
} else {
|
|
const r213 = 0 < typeSize4;
|
|
let r214 = 0;
|
|
let r215 = 0;
|
|
value11 = 0;
|
|
if (r213) {
|
|
do {
|
|
r215 = r215 + (value4[r203 + r214] << 8 * (typeSize4 - 1 - r214));
|
|
r214 = r214 + 1;
|
|
value11 = r215;
|
|
} while (r214 < typeSize4);
|
|
}
|
|
}
|
|
Images[r10].DependentImage1EntryNumber = {
|
|
value: value11,
|
|
description: "" + value11
|
|
};
|
|
const value5 = r64.MPEntry.value;
|
|
const r238 = r10 * c2981_3 + 14;
|
|
const typeSize5 = Module4819.getTypeSize("SHORT");
|
|
if (byteOrder === Module4807.LITTLE_ENDIAN) {
|
|
const r258 = 0 < typeSize5;
|
|
let r259 = 0;
|
|
let r260 = 0;
|
|
let r261 = 0;
|
|
if (r258) {
|
|
do {
|
|
r260 = r260 + (value5[r238 + r259] << 8 * r259);
|
|
r259 = r259 + 1;
|
|
r261 = r260;
|
|
} while (r259 < typeSize5);
|
|
}
|
|
value12 = r261;
|
|
} else {
|
|
const r248 = 0 < typeSize5;
|
|
let r249 = 0;
|
|
let r250 = 0;
|
|
value12 = 0;
|
|
if (r248) {
|
|
do {
|
|
r250 = r250 + (value5[r238 + r249] << 8 * (typeSize5 - 1 - r249));
|
|
r249 = r249 + 1;
|
|
value12 = r250;
|
|
} while (r249 < typeSize5);
|
|
}
|
|
}
|
|
Images[r10].DependentImage2EntryNumber = {
|
|
value: value12,
|
|
description: "" + value12
|
|
};
|
|
Images[r10].image = a0.buffer.slice(value10, value10 + value9);
|
|
deferInit(Images[r10], "base64", function() {
|
|
return getBase64Image(this.image);
|
|
});
|
|
r76 = r10 + 1;
|
|
} while (r76 < Math.ceil(r64.MPEntry.value.length / c2981_3));
|
|
}
|
|
r64.Images = Images;
|
|
}
|
|
return r64;
|
|
}
|
|
};
|
|
c2981_3 = 16;
|
|
export default r14;
|