99 lines
2.7 KiB
JavaScript
99 lines
2.7 KiB
JavaScript
// Metro module 4815 (f4816).
|
|
import { getStringFromDataView } from "./Module4802";
|
|
import Module4805 from "./Module4805";
|
|
export default {
|
|
isWebpFile: function isWebpFile(a0) {
|
|
return !!a0 && getStringFromDataView(a0, 0, 4) === "RIFF" && getStringFromDataView(a0, 8, 4) === "WEBP";
|
|
},
|
|
findOffsets: function findOffsets(a0) {
|
|
let r32, r33, r58, r59, r75, byteLength;
|
|
const r7 = 20 < a0.byteLength;
|
|
let r8 = false;
|
|
let r27 = 12;
|
|
let r21 = void 0;
|
|
let r20 = void 0;
|
|
let r19 = void 0;
|
|
let r18 = void 0;
|
|
let hasAppMarkers = false;
|
|
let vp8xChunkOffset = void 0;
|
|
let iccChunks = void 0;
|
|
let xmpChunks = void 0;
|
|
let tiffHeaderOffset = void 0;
|
|
if (r7) {
|
|
do {
|
|
const stringFromDataView = getStringFromDataView(a0, r27, 4);
|
|
const uint32 = a0.getUint32(r27 + 4, true);
|
|
let r50 = r8;
|
|
const r51 = r27;
|
|
const r37 = r21;
|
|
const r36 = r20;
|
|
const r35 = r19;
|
|
const r39 = r18;
|
|
if (Module4805.USE_EXIF && stringFromDataView === "EXIF") {
|
|
const r68 = r51 + 8;
|
|
r59 = getStringFromDataView(a0, r68, 6) === "Exif\x00\x00" ? r68 + 6 : r68;
|
|
r50 = true;
|
|
r33 = r37;
|
|
r32 = r36;
|
|
r58 = r35;
|
|
} else if (Module4805.USE_XMP && stringFromDataView === "XMP ") {
|
|
const r64 = [{
|
|
dataOffset: r51 + 8,
|
|
length: uint32
|
|
}];
|
|
r50 = true;
|
|
r33 = r37;
|
|
r32 = r36;
|
|
r58 = r64;
|
|
r59 = r39;
|
|
} else if (Module4805.USE_ICC && stringFromDataView === "ICCP") {
|
|
const r61 = [{
|
|
offset: r51 + 8,
|
|
length: uint32,
|
|
chunkNumber: 1,
|
|
chunksTotal: 1
|
|
}];
|
|
r50 = true;
|
|
r33 = r37;
|
|
r32 = r61;
|
|
r58 = r35;
|
|
r59 = r39;
|
|
} else {
|
|
r33 = r37;
|
|
r32 = r36;
|
|
r58 = r35;
|
|
r59 = r39;
|
|
if (stringFromDataView === "VP8X") {
|
|
r33 = r51 + 8;
|
|
r50 = true;
|
|
r32 = r36;
|
|
r58 = r35;
|
|
r59 = r39;
|
|
}
|
|
}
|
|
const r73 = r51 + (8 + (uint32 % 2 !== 0 ? uint32 + 1 : uint32));
|
|
byteLength = a0.byteLength;
|
|
r75 = r73 + 8;
|
|
r8 = r50;
|
|
r27 = r73;
|
|
r21 = r33;
|
|
r20 = r32;
|
|
r19 = r58;
|
|
r18 = r59;
|
|
hasAppMarkers = r8;
|
|
vp8xChunkOffset = r21;
|
|
iccChunks = r20;
|
|
xmpChunks = r19;
|
|
tiffHeaderOffset = r18;
|
|
} while (r75 < byteLength);
|
|
}
|
|
return {
|
|
hasAppMarkers,
|
|
tiffHeaderOffset,
|
|
xmpChunks,
|
|
iccChunks,
|
|
vp8xChunkOffset
|
|
};
|
|
}
|
|
};
|