196 lines
5.6 KiB
JavaScript
196 lines
5.6 KiB
JavaScript
// Module ID: 4777
|
|
// Function ID: 41504
|
|
// Name: getResourceBlock
|
|
// Dependencies: [4778, 4779]
|
|
|
|
// Module 4777 (getResourceBlock)
|
|
const module = arg2;
|
|
const dependencyMap = arg6;
|
|
function getResourceBlock(getUint32, sum1) {
|
|
if (943868237 !== getUint32.getUint32(sum1, false)) {
|
|
const _Error = Error;
|
|
const error = new Error("Not an IPTC resource block.");
|
|
throw error;
|
|
} else {
|
|
const uint8 = getUint32.getUint8(sum1 + 4 + 2);
|
|
let sum = uint8;
|
|
if (uint8 % 2 === 0) {
|
|
sum = uint8 + 1;
|
|
}
|
|
sum1 = sum + 1;
|
|
const obj = { headerSize: 6 + sum1 + 4, type: getUint32.getUint16(sum1 + 4), size: getUint32.getUint32(sum1 + 4 + 2 + sum1) };
|
|
return obj;
|
|
}
|
|
}
|
|
function isNaaResourceBlock(type) {
|
|
return 1028 === type.type;
|
|
}
|
|
function getBlockPadding(size) {
|
|
let num = 0;
|
|
if (size.size % 2 !== 0) {
|
|
num = 1;
|
|
}
|
|
return num;
|
|
}
|
|
function parseTags(byteLength, size) {
|
|
let tmp13;
|
|
let sum1 = arg2;
|
|
let obj = {};
|
|
const sum = arg2 + size.size;
|
|
if (arg2 < sum) {
|
|
if (sum1 < byteLength.byteLength) {
|
|
const tag = readTag(byteLength, sum1, obj, tmp13, arg3).tag;
|
|
let encoding = tmp13;
|
|
while (null !== tag) {
|
|
tmp13 = encoding;
|
|
if (tag) {
|
|
if ("encoding" in tag) {
|
|
encoding = tag.encoding;
|
|
}
|
|
if (undefined !== obj[tag.name]) {
|
|
if (undefined !== tag.repeatable) {
|
|
let _Array = Array;
|
|
if (!(obj[tag.name] instanceof Array)) {
|
|
obj = {};
|
|
obj.id = obj[tag.name].id;
|
|
obj.value = obj[tag.name].value;
|
|
obj.description = obj[tag.name].description;
|
|
let items = [obj];
|
|
obj[tag.name] = items;
|
|
}
|
|
let arr2 = obj[tag.name];
|
|
obj = {};
|
|
({ id: obj3.id, value: obj3.value, description: obj3.description } = tag);
|
|
let arr = arr2.push(obj);
|
|
tmp13 = encoding;
|
|
}
|
|
}
|
|
let obj1 = {};
|
|
({ id: obj4.id, value: obj4.value, description: obj4.description } = tag);
|
|
obj[tag.name] = obj1;
|
|
tmp13 = encoding;
|
|
}
|
|
sum1 = sum1 + (5 + tmp10);
|
|
if (sum1 >= sum) {
|
|
break;
|
|
} else if (sum1 >= byteLength.byteLength) {
|
|
break;
|
|
}
|
|
}
|
|
const tmp9 = readTag(byteLength, sum1, obj, tmp13, arg3);
|
|
}
|
|
}
|
|
return obj;
|
|
}
|
|
function readTag(getUint8, offset) {
|
|
if (getUint8.getUint8(offset) !== 28) {
|
|
return { tag: null, tagSize: 0 };
|
|
} else {
|
|
const uint16 = getUint8.getUint16(offset + 1);
|
|
const uint161 = getUint8.getUint16(offset + 3);
|
|
if (!arg4) {
|
|
if (!module(4778).iptc[uint16]) {
|
|
let obj = { tag: undefined, tagSize: uint161 };
|
|
return obj;
|
|
}
|
|
}
|
|
const items = [];
|
|
for (let num4 = 0; num4 < uint161; num4 = num4 + 1) {
|
|
let arr = items.push(getUint8.getUint8(tmp3 + num4));
|
|
}
|
|
obj = { id: uint16, name: getTagName(module(4778).iptc[uint16], uint16, items), value: items, description: getTagDescription(module(4778).iptc[uint16], items, arg2, arg3) };
|
|
let repeatable = module(4778).iptc[uint16];
|
|
if (repeatable) {
|
|
repeatable = module(4778).iptc[uint16].repeatable;
|
|
}
|
|
if (repeatable) {
|
|
obj.repeatable = true;
|
|
}
|
|
let tmp16 = module(4778).iptc[uint16];
|
|
if (tmp16) {
|
|
tmp16 = undefined !== module(4778).iptc[uint16].encoding_name;
|
|
}
|
|
if (tmp16) {
|
|
obj.encoding = module(4778).iptc[uint16].encoding_name(items);
|
|
const obj3 = module(4778).iptc[uint16];
|
|
}
|
|
obj = {};
|
|
obj.tag = obj;
|
|
obj.tagSize = uint161;
|
|
return obj;
|
|
}
|
|
}
|
|
function getTagName(name) {
|
|
if (name) {
|
|
if ("string" === typeof name) {
|
|
let combined = name;
|
|
} else if ("function" === typeof name.name) {
|
|
name = name.name(arg2);
|
|
} else {
|
|
name = name.name;
|
|
}
|
|
} else {
|
|
const _HermesInternal = HermesInternal;
|
|
combined = "undefined-" + arg1;
|
|
}
|
|
return combined;
|
|
}
|
|
function getTagDescription(description, items, arg2, arg3) {
|
|
let obj = description;
|
|
let tmp = description;
|
|
if (description) {
|
|
tmp = undefined !== description.description;
|
|
}
|
|
if (!tmp) {
|
|
while (true) {
|
|
let tmp4 = items;
|
|
if (!obj) {
|
|
break;
|
|
} else {
|
|
let tmp5 = globalThis;
|
|
let _Array = Array;
|
|
obj = items instanceof Array;
|
|
break;
|
|
}
|
|
if (obj) {
|
|
let tmp7 = module;
|
|
let tmp8 = dependencyMap;
|
|
let num = 1;
|
|
let obj2 = module(4779);
|
|
let tmp9 = items;
|
|
let tmp10 = arg3;
|
|
let decodeResult = obj2.decode(arg3, items);
|
|
} else {
|
|
decodeResult = items;
|
|
}
|
|
return decodeResult;
|
|
}
|
|
} else {
|
|
return obj.description(items, arg2);
|
|
}
|
|
}
|
|
arg5.default = {
|
|
read(byteLength, sum1) {
|
|
if (Array.isArray(byteLength)) {
|
|
const _DataView = DataView;
|
|
const _Uint8Array = Uint8Array;
|
|
const dataView = new DataView(Uint8Array.from(byteLength).buffer);
|
|
let obj = { size: byteLength.length };
|
|
return parseTags(dataView, obj, 0, arg2);
|
|
} else {
|
|
if (sum1 + 12 <= byteLength.byteLength) {
|
|
const tmp4 = getResourceBlock(byteLength, sum1);
|
|
while (!isNaaResourceBlock(tmp4)) {
|
|
let tmp8 = getBlockPadding;
|
|
let sum = tmp4.headerSize + tmp4.size;
|
|
sum1 = sum1 + (sum + getBlockPadding(tmp4));
|
|
}
|
|
obj = { naaBlock: tmp4, dataOffset: sum1 + tmp4.headerSize };
|
|
return parseTags(tmp, obj.naaBlock, obj.dataOffset, arg2);
|
|
}
|
|
const _Error = Error;
|
|
const error = new Error("No IPTC NAA resource block.");
|
|
throw error;
|
|
}
|
|
}
|
|
};
|