Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/embedpre.../assets/pdf/build
File: pdf.worker.js
continue;
[11500] Fix | Delete
}
[11501] Fix | Delete
v0 = dctSqrt2 * p0 + 2048 >> 12;
[11502] Fix | Delete
v1 = dctSqrt2 * p4 + 2048 >> 12;
[11503] Fix | Delete
v2 = p2;
[11504] Fix | Delete
v3 = p6;
[11505] Fix | Delete
v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;
[11506] Fix | Delete
v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;
[11507] Fix | Delete
v5 = p3;
[11508] Fix | Delete
v6 = p5;
[11509] Fix | Delete
v0 = (v0 + v1 + 1 >> 1) + 4112;
[11510] Fix | Delete
v1 = v0 - v1;
[11511] Fix | Delete
t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;
[11512] Fix | Delete
v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;
[11513] Fix | Delete
v3 = t;
[11514] Fix | Delete
v4 = v4 + v6 + 1 >> 1;
[11515] Fix | Delete
v6 = v4 - v6;
[11516] Fix | Delete
v7 = v7 + v5 + 1 >> 1;
[11517] Fix | Delete
v5 = v7 - v5;
[11518] Fix | Delete
v0 = v0 + v3 + 1 >> 1;
[11519] Fix | Delete
v3 = v0 - v3;
[11520] Fix | Delete
v1 = v1 + v2 + 1 >> 1;
[11521] Fix | Delete
v2 = v1 - v2;
[11522] Fix | Delete
t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;
[11523] Fix | Delete
v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;
[11524] Fix | Delete
v7 = t;
[11525] Fix | Delete
t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;
[11526] Fix | Delete
v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;
[11527] Fix | Delete
v6 = t;
[11528] Fix | Delete
p0 = v0 + v7;
[11529] Fix | Delete
p7 = v0 - v7;
[11530] Fix | Delete
p1 = v1 + v6;
[11531] Fix | Delete
p6 = v1 - v6;
[11532] Fix | Delete
p2 = v2 + v5;
[11533] Fix | Delete
p5 = v2 - v5;
[11534] Fix | Delete
p3 = v3 + v4;
[11535] Fix | Delete
p4 = v3 - v4;
[11536] Fix | Delete
if (p0 < 16) {
[11537] Fix | Delete
p0 = 0;
[11538] Fix | Delete
} else if (p0 >= 4080) {
[11539] Fix | Delete
p0 = 255;
[11540] Fix | Delete
} else {
[11541] Fix | Delete
p0 >>= 4;
[11542] Fix | Delete
}
[11543] Fix | Delete
if (p1 < 16) {
[11544] Fix | Delete
p1 = 0;
[11545] Fix | Delete
} else if (p1 >= 4080) {
[11546] Fix | Delete
p1 = 255;
[11547] Fix | Delete
} else {
[11548] Fix | Delete
p1 >>= 4;
[11549] Fix | Delete
}
[11550] Fix | Delete
if (p2 < 16) {
[11551] Fix | Delete
p2 = 0;
[11552] Fix | Delete
} else if (p2 >= 4080) {
[11553] Fix | Delete
p2 = 255;
[11554] Fix | Delete
} else {
[11555] Fix | Delete
p2 >>= 4;
[11556] Fix | Delete
}
[11557] Fix | Delete
if (p3 < 16) {
[11558] Fix | Delete
p3 = 0;
[11559] Fix | Delete
} else if (p3 >= 4080) {
[11560] Fix | Delete
p3 = 255;
[11561] Fix | Delete
} else {
[11562] Fix | Delete
p3 >>= 4;
[11563] Fix | Delete
}
[11564] Fix | Delete
if (p4 < 16) {
[11565] Fix | Delete
p4 = 0;
[11566] Fix | Delete
} else if (p4 >= 4080) {
[11567] Fix | Delete
p4 = 255;
[11568] Fix | Delete
} else {
[11569] Fix | Delete
p4 >>= 4;
[11570] Fix | Delete
}
[11571] Fix | Delete
if (p5 < 16) {
[11572] Fix | Delete
p5 = 0;
[11573] Fix | Delete
} else if (p5 >= 4080) {
[11574] Fix | Delete
p5 = 255;
[11575] Fix | Delete
} else {
[11576] Fix | Delete
p5 >>= 4;
[11577] Fix | Delete
}
[11578] Fix | Delete
if (p6 < 16) {
[11579] Fix | Delete
p6 = 0;
[11580] Fix | Delete
} else if (p6 >= 4080) {
[11581] Fix | Delete
p6 = 255;
[11582] Fix | Delete
} else {
[11583] Fix | Delete
p6 >>= 4;
[11584] Fix | Delete
}
[11585] Fix | Delete
if (p7 < 16) {
[11586] Fix | Delete
p7 = 0;
[11587] Fix | Delete
} else if (p7 >= 4080) {
[11588] Fix | Delete
p7 = 255;
[11589] Fix | Delete
} else {
[11590] Fix | Delete
p7 >>= 4;
[11591] Fix | Delete
}
[11592] Fix | Delete
blockData[blockBufferOffset + col] = p0;
[11593] Fix | Delete
blockData[blockBufferOffset + col + 8] = p1;
[11594] Fix | Delete
blockData[blockBufferOffset + col + 16] = p2;
[11595] Fix | Delete
blockData[blockBufferOffset + col + 24] = p3;
[11596] Fix | Delete
blockData[blockBufferOffset + col + 32] = p4;
[11597] Fix | Delete
blockData[blockBufferOffset + col + 40] = p5;
[11598] Fix | Delete
blockData[blockBufferOffset + col + 48] = p6;
[11599] Fix | Delete
blockData[blockBufferOffset + col + 56] = p7;
[11600] Fix | Delete
}
[11601] Fix | Delete
}
[11602] Fix | Delete
function buildComponentData(frame, component) {
[11603] Fix | Delete
const blocksPerLine = component.blocksPerLine;
[11604] Fix | Delete
const blocksPerColumn = component.blocksPerColumn;
[11605] Fix | Delete
const computationBuffer = new Int16Array(64);
[11606] Fix | Delete
for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {
[11607] Fix | Delete
for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {
[11608] Fix | Delete
const offset = getBlockBufferOffset(component, blockRow, blockCol);
[11609] Fix | Delete
quantizeAndInverse(component, offset, computationBuffer);
[11610] Fix | Delete
}
[11611] Fix | Delete
}
[11612] Fix | Delete
return component.blockData;
[11613] Fix | Delete
}
[11614] Fix | Delete
function findNextFileMarker(data, currentPos, startPos = currentPos) {
[11615] Fix | Delete
const maxPos = data.length - 1;
[11616] Fix | Delete
let newPos = startPos < currentPos ? startPos : currentPos;
[11617] Fix | Delete
if (currentPos >= maxPos) {
[11618] Fix | Delete
return null;
[11619] Fix | Delete
}
[11620] Fix | Delete
const currentMarker = readUint16(data, currentPos);
[11621] Fix | Delete
if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {
[11622] Fix | Delete
return {
[11623] Fix | Delete
invalid: null,
[11624] Fix | Delete
marker: currentMarker,
[11625] Fix | Delete
offset: currentPos
[11626] Fix | Delete
};
[11627] Fix | Delete
}
[11628] Fix | Delete
let newMarker = readUint16(data, newPos);
[11629] Fix | Delete
while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {
[11630] Fix | Delete
if (++newPos >= maxPos) {
[11631] Fix | Delete
return null;
[11632] Fix | Delete
}
[11633] Fix | Delete
newMarker = readUint16(data, newPos);
[11634] Fix | Delete
}
[11635] Fix | Delete
return {
[11636] Fix | Delete
invalid: currentMarker.toString(16),
[11637] Fix | Delete
marker: newMarker,
[11638] Fix | Delete
offset: newPos
[11639] Fix | Delete
};
[11640] Fix | Delete
}
[11641] Fix | Delete
class JpegImage {
[11642] Fix | Delete
constructor({
[11643] Fix | Delete
decodeTransform = null,
[11644] Fix | Delete
colorTransform = -1
[11645] Fix | Delete
} = {}) {
[11646] Fix | Delete
this._decodeTransform = decodeTransform;
[11647] Fix | Delete
this._colorTransform = colorTransform;
[11648] Fix | Delete
}
[11649] Fix | Delete
parse(data, {
[11650] Fix | Delete
dnlScanLines = null
[11651] Fix | Delete
} = {}) {
[11652] Fix | Delete
function readDataBlock() {
[11653] Fix | Delete
const length = readUint16(data, offset);
[11654] Fix | Delete
offset += 2;
[11655] Fix | Delete
let endOffset = offset + length - 2;
[11656] Fix | Delete
const fileMarker = findNextFileMarker(data, endOffset, offset);
[11657] Fix | Delete
if (fileMarker?.invalid) {
[11658] Fix | Delete
warn("readDataBlock - incorrect length, current marker is: " + fileMarker.invalid);
[11659] Fix | Delete
endOffset = fileMarker.offset;
[11660] Fix | Delete
}
[11661] Fix | Delete
const array = data.subarray(offset, endOffset);
[11662] Fix | Delete
offset += array.length;
[11663] Fix | Delete
return array;
[11664] Fix | Delete
}
[11665] Fix | Delete
function prepareComponents(frame) {
[11666] Fix | Delete
const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);
[11667] Fix | Delete
const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);
[11668] Fix | Delete
for (const component of frame.components) {
[11669] Fix | Delete
const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);
[11670] Fix | Delete
const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);
[11671] Fix | Delete
const blocksPerLineForMcu = mcusPerLine * component.h;
[11672] Fix | Delete
const blocksPerColumnForMcu = mcusPerColumn * component.v;
[11673] Fix | Delete
const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);
[11674] Fix | Delete
component.blockData = new Int16Array(blocksBufferSize);
[11675] Fix | Delete
component.blocksPerLine = blocksPerLine;
[11676] Fix | Delete
component.blocksPerColumn = blocksPerColumn;
[11677] Fix | Delete
}
[11678] Fix | Delete
frame.mcusPerLine = mcusPerLine;
[11679] Fix | Delete
frame.mcusPerColumn = mcusPerColumn;
[11680] Fix | Delete
}
[11681] Fix | Delete
let offset = 0;
[11682] Fix | Delete
let jfif = null;
[11683] Fix | Delete
let adobe = null;
[11684] Fix | Delete
let frame, resetInterval;
[11685] Fix | Delete
let numSOSMarkers = 0;
[11686] Fix | Delete
const quantizationTables = [];
[11687] Fix | Delete
const huffmanTablesAC = [],
[11688] Fix | Delete
huffmanTablesDC = [];
[11689] Fix | Delete
let fileMarker = readUint16(data, offset);
[11690] Fix | Delete
offset += 2;
[11691] Fix | Delete
if (fileMarker !== 0xffd8) {
[11692] Fix | Delete
throw new JpegError("SOI not found");
[11693] Fix | Delete
}
[11694] Fix | Delete
fileMarker = readUint16(data, offset);
[11695] Fix | Delete
offset += 2;
[11696] Fix | Delete
markerLoop: while (fileMarker !== 0xffd9) {
[11697] Fix | Delete
let i, j, l;
[11698] Fix | Delete
switch (fileMarker) {
[11699] Fix | Delete
case 0xffe0:
[11700] Fix | Delete
case 0xffe1:
[11701] Fix | Delete
case 0xffe2:
[11702] Fix | Delete
case 0xffe3:
[11703] Fix | Delete
case 0xffe4:
[11704] Fix | Delete
case 0xffe5:
[11705] Fix | Delete
case 0xffe6:
[11706] Fix | Delete
case 0xffe7:
[11707] Fix | Delete
case 0xffe8:
[11708] Fix | Delete
case 0xffe9:
[11709] Fix | Delete
case 0xffea:
[11710] Fix | Delete
case 0xffeb:
[11711] Fix | Delete
case 0xffec:
[11712] Fix | Delete
case 0xffed:
[11713] Fix | Delete
case 0xffee:
[11714] Fix | Delete
case 0xffef:
[11715] Fix | Delete
case 0xfffe:
[11716] Fix | Delete
const appData = readDataBlock();
[11717] Fix | Delete
if (fileMarker === 0xffe0) {
[11718] Fix | Delete
if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {
[11719] Fix | Delete
jfif = {
[11720] Fix | Delete
version: {
[11721] Fix | Delete
major: appData[5],
[11722] Fix | Delete
minor: appData[6]
[11723] Fix | Delete
},
[11724] Fix | Delete
densityUnits: appData[7],
[11725] Fix | Delete
xDensity: appData[8] << 8 | appData[9],
[11726] Fix | Delete
yDensity: appData[10] << 8 | appData[11],
[11727] Fix | Delete
thumbWidth: appData[12],
[11728] Fix | Delete
thumbHeight: appData[13],
[11729] Fix | Delete
thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])
[11730] Fix | Delete
};
[11731] Fix | Delete
}
[11732] Fix | Delete
}
[11733] Fix | Delete
if (fileMarker === 0xffee) {
[11734] Fix | Delete
if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {
[11735] Fix | Delete
adobe = {
[11736] Fix | Delete
version: appData[5] << 8 | appData[6],
[11737] Fix | Delete
flags0: appData[7] << 8 | appData[8],
[11738] Fix | Delete
flags1: appData[9] << 8 | appData[10],
[11739] Fix | Delete
transformCode: appData[11]
[11740] Fix | Delete
};
[11741] Fix | Delete
}
[11742] Fix | Delete
}
[11743] Fix | Delete
break;
[11744] Fix | Delete
case 0xffdb:
[11745] Fix | Delete
const quantizationTablesLength = readUint16(data, offset);
[11746] Fix | Delete
offset += 2;
[11747] Fix | Delete
const quantizationTablesEnd = quantizationTablesLength + offset - 2;
[11748] Fix | Delete
let z;
[11749] Fix | Delete
while (offset < quantizationTablesEnd) {
[11750] Fix | Delete
const quantizationTableSpec = data[offset++];
[11751] Fix | Delete
const tableData = new Uint16Array(64);
[11752] Fix | Delete
if (quantizationTableSpec >> 4 === 0) {
[11753] Fix | Delete
for (j = 0; j < 64; j++) {
[11754] Fix | Delete
z = dctZigZag[j];
[11755] Fix | Delete
tableData[z] = data[offset++];
[11756] Fix | Delete
}
[11757] Fix | Delete
} else if (quantizationTableSpec >> 4 === 1) {
[11758] Fix | Delete
for (j = 0; j < 64; j++) {
[11759] Fix | Delete
z = dctZigZag[j];
[11760] Fix | Delete
tableData[z] = readUint16(data, offset);
[11761] Fix | Delete
offset += 2;
[11762] Fix | Delete
}
[11763] Fix | Delete
} else {
[11764] Fix | Delete
throw new JpegError("DQT - invalid table spec");
[11765] Fix | Delete
}
[11766] Fix | Delete
quantizationTables[quantizationTableSpec & 15] = tableData;
[11767] Fix | Delete
}
[11768] Fix | Delete
break;
[11769] Fix | Delete
case 0xffc0:
[11770] Fix | Delete
case 0xffc1:
[11771] Fix | Delete
case 0xffc2:
[11772] Fix | Delete
if (frame) {
[11773] Fix | Delete
throw new JpegError("Only single frame JPEGs supported");
[11774] Fix | Delete
}
[11775] Fix | Delete
offset += 2;
[11776] Fix | Delete
frame = {};
[11777] Fix | Delete
frame.extended = fileMarker === 0xffc1;
[11778] Fix | Delete
frame.progressive = fileMarker === 0xffc2;
[11779] Fix | Delete
frame.precision = data[offset++];
[11780] Fix | Delete
const sofScanLines = readUint16(data, offset);
[11781] Fix | Delete
offset += 2;
[11782] Fix | Delete
frame.scanLines = dnlScanLines || sofScanLines;
[11783] Fix | Delete
frame.samplesPerLine = readUint16(data, offset);
[11784] Fix | Delete
offset += 2;
[11785] Fix | Delete
frame.components = [];
[11786] Fix | Delete
frame.componentIds = {};
[11787] Fix | Delete
const componentsCount = data[offset++];
[11788] Fix | Delete
let maxH = 0,
[11789] Fix | Delete
maxV = 0;
[11790] Fix | Delete
for (i = 0; i < componentsCount; i++) {
[11791] Fix | Delete
const componentId = data[offset];
[11792] Fix | Delete
const h = data[offset + 1] >> 4;
[11793] Fix | Delete
const v = data[offset + 1] & 15;
[11794] Fix | Delete
if (maxH < h) {
[11795] Fix | Delete
maxH = h;
[11796] Fix | Delete
}
[11797] Fix | Delete
if (maxV < v) {
[11798] Fix | Delete
maxV = v;
[11799] Fix | Delete
}
[11800] Fix | Delete
const qId = data[offset + 2];
[11801] Fix | Delete
l = frame.components.push({
[11802] Fix | Delete
h,
[11803] Fix | Delete
v,
[11804] Fix | Delete
quantizationId: qId,
[11805] Fix | Delete
quantizationTable: null
[11806] Fix | Delete
});
[11807] Fix | Delete
frame.componentIds[componentId] = l - 1;
[11808] Fix | Delete
offset += 3;
[11809] Fix | Delete
}
[11810] Fix | Delete
frame.maxH = maxH;
[11811] Fix | Delete
frame.maxV = maxV;
[11812] Fix | Delete
prepareComponents(frame);
[11813] Fix | Delete
break;
[11814] Fix | Delete
case 0xffc4:
[11815] Fix | Delete
const huffmanLength = readUint16(data, offset);
[11816] Fix | Delete
offset += 2;
[11817] Fix | Delete
for (i = 2; i < huffmanLength;) {
[11818] Fix | Delete
const huffmanTableSpec = data[offset++];
[11819] Fix | Delete
const codeLengths = new Uint8Array(16);
[11820] Fix | Delete
let codeLengthSum = 0;
[11821] Fix | Delete
for (j = 0; j < 16; j++, offset++) {
[11822] Fix | Delete
codeLengthSum += codeLengths[j] = data[offset];
[11823] Fix | Delete
}
[11824] Fix | Delete
const huffmanValues = new Uint8Array(codeLengthSum);
[11825] Fix | Delete
for (j = 0; j < codeLengthSum; j++, offset++) {
[11826] Fix | Delete
huffmanValues[j] = data[offset];
[11827] Fix | Delete
}
[11828] Fix | Delete
i += 17 + codeLengthSum;
[11829] Fix | Delete
(huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);
[11830] Fix | Delete
}
[11831] Fix | Delete
break;
[11832] Fix | Delete
case 0xffdd:
[11833] Fix | Delete
offset += 2;
[11834] Fix | Delete
resetInterval = readUint16(data, offset);
[11835] Fix | Delete
offset += 2;
[11836] Fix | Delete
break;
[11837] Fix | Delete
case 0xffda:
[11838] Fix | Delete
const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;
[11839] Fix | Delete
offset += 2;
[11840] Fix | Delete
const selectorsCount = data[offset++],
[11841] Fix | Delete
components = [];
[11842] Fix | Delete
for (i = 0; i < selectorsCount; i++) {
[11843] Fix | Delete
const index = data[offset++];
[11844] Fix | Delete
const componentIndex = frame.componentIds[index];
[11845] Fix | Delete
const component = frame.components[componentIndex];
[11846] Fix | Delete
component.index = index;
[11847] Fix | Delete
const tableSpec = data[offset++];
[11848] Fix | Delete
component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];
[11849] Fix | Delete
component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];
[11850] Fix | Delete
components.push(component);
[11851] Fix | Delete
}
[11852] Fix | Delete
const spectralStart = data[offset++],
[11853] Fix | Delete
spectralEnd = data[offset++],
[11854] Fix | Delete
successiveApproximation = data[offset++];
[11855] Fix | Delete
try {
[11856] Fix | Delete
const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);
[11857] Fix | Delete
offset += processed;
[11858] Fix | Delete
} catch (ex) {
[11859] Fix | Delete
if (ex instanceof DNLMarkerError) {
[11860] Fix | Delete
warn(`${ex.message} -- attempting to re-parse the JPEG image.`);
[11861] Fix | Delete
return this.parse(data, {
[11862] Fix | Delete
dnlScanLines: ex.scanLines
[11863] Fix | Delete
});
[11864] Fix | Delete
} else if (ex instanceof EOIMarkerError) {
[11865] Fix | Delete
warn(`${ex.message} -- ignoring the rest of the image data.`);
[11866] Fix | Delete
break markerLoop;
[11867] Fix | Delete
}
[11868] Fix | Delete
throw ex;
[11869] Fix | Delete
}
[11870] Fix | Delete
break;
[11871] Fix | Delete
case 0xffdc:
[11872] Fix | Delete
offset += 4;
[11873] Fix | Delete
break;
[11874] Fix | Delete
case 0xffff:
[11875] Fix | Delete
if (data[offset] !== 0xff) {
[11876] Fix | Delete
offset--;
[11877] Fix | Delete
}
[11878] Fix | Delete
break;
[11879] Fix | Delete
default:
[11880] Fix | Delete
const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);
[11881] Fix | Delete
if (nextFileMarker?.invalid) {
[11882] Fix | Delete
warn("JpegImage.parse - unexpected data, current marker is: " + nextFileMarker.invalid);
[11883] Fix | Delete
offset = nextFileMarker.offset;
[11884] Fix | Delete
break;
[11885] Fix | Delete
}
[11886] Fix | Delete
if (!nextFileMarker || offset >= data.length - 1) {
[11887] Fix | Delete
warn("JpegImage.parse - reached the end of the image data " + "without finding an EOI marker (0xFFD9).");
[11888] Fix | Delete
break markerLoop;
[11889] Fix | Delete
}
[11890] Fix | Delete
throw new JpegError("JpegImage.parse - unknown marker: " + fileMarker.toString(16));
[11891] Fix | Delete
}
[11892] Fix | Delete
fileMarker = readUint16(data, offset);
[11893] Fix | Delete
offset += 2;
[11894] Fix | Delete
}
[11895] Fix | Delete
if (!frame) {
[11896] Fix | Delete
throw new JpegError("JpegImage.parse - no frame data found.");
[11897] Fix | Delete
}
[11898] Fix | Delete
this.width = frame.samplesPerLine;
[11899] Fix | Delete
this.height = frame.scanLines;
[11900] Fix | Delete
this.jfif = jfif;
[11901] Fix | Delete
this.adobe = adobe;
[11902] Fix | Delete
this.components = [];
[11903] Fix | Delete
for (const component of frame.components) {
[11904] Fix | Delete
const quantizationTable = quantizationTables[component.quantizationId];
[11905] Fix | Delete
if (quantizationTable) {
[11906] Fix | Delete
component.quantizationTable = quantizationTable;
[11907] Fix | Delete
}
[11908] Fix | Delete
this.components.push({
[11909] Fix | Delete
index: component.index,
[11910] Fix | Delete
output: buildComponentData(frame, component),
[11911] Fix | Delete
scaleX: component.h / frame.maxH,
[11912] Fix | Delete
scaleY: component.v / frame.maxV,
[11913] Fix | Delete
blocksPerLine: component.blocksPerLine,
[11914] Fix | Delete
blocksPerColumn: component.blocksPerColumn
[11915] Fix | Delete
});
[11916] Fix | Delete
}
[11917] Fix | Delete
this.numComponents = this.components.length;
[11918] Fix | Delete
return undefined;
[11919] Fix | Delete
}
[11920] Fix | Delete
_getLinearizedBlockData(width, height, isSourcePDF = false) {
[11921] Fix | Delete
const scaleX = this.width / width,
[11922] Fix | Delete
scaleY = this.height / height;
[11923] Fix | Delete
let component, componentScaleX, componentScaleY, blocksPerScanline;
[11924] Fix | Delete
let x, y, i, j, k;
[11925] Fix | Delete
let index;
[11926] Fix | Delete
let offset = 0;
[11927] Fix | Delete
let output;
[11928] Fix | Delete
const numComponents = this.components.length;
[11929] Fix | Delete
const dataLength = width * height * numComponents;
[11930] Fix | Delete
const data = new Uint8ClampedArray(dataLength);
[11931] Fix | Delete
const xScaleBlockOffset = new Uint32Array(width);
[11932] Fix | Delete
const mask3LSB = 0xfffffff8;
[11933] Fix | Delete
let lastComponentScaleX;
[11934] Fix | Delete
for (i = 0; i < numComponents; i++) {
[11935] Fix | Delete
component = this.components[i];
[11936] Fix | Delete
componentScaleX = component.scaleX * scaleX;
[11937] Fix | Delete
componentScaleY = component.scaleY * scaleY;
[11938] Fix | Delete
offset = i;
[11939] Fix | Delete
output = component.output;
[11940] Fix | Delete
blocksPerScanline = component.blocksPerLine + 1 << 3;
[11941] Fix | Delete
if (componentScaleX !== lastComponentScaleX) {
[11942] Fix | Delete
for (x = 0; x < width; x++) {
[11943] Fix | Delete
j = 0 | x * componentScaleX;
[11944] Fix | Delete
xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;
[11945] Fix | Delete
}
[11946] Fix | Delete
lastComponentScaleX = componentScaleX;
[11947] Fix | Delete
}
[11948] Fix | Delete
for (y = 0; y < height; y++) {
[11949] Fix | Delete
j = 0 | y * componentScaleY;
[11950] Fix | Delete
index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;
[11951] Fix | Delete
for (x = 0; x < width; x++) {
[11952] Fix | Delete
data[offset] = output[index + xScaleBlockOffset[x]];
[11953] Fix | Delete
offset += numComponents;
[11954] Fix | Delete
}
[11955] Fix | Delete
}
[11956] Fix | Delete
}
[11957] Fix | Delete
let transform = this._decodeTransform;
[11958] Fix | Delete
if (!isSourcePDF && numComponents === 4 && !transform) {
[11959] Fix | Delete
transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);
[11960] Fix | Delete
}
[11961] Fix | Delete
if (transform) {
[11962] Fix | Delete
for (i = 0; i < dataLength;) {
[11963] Fix | Delete
for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {
[11964] Fix | Delete
data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];
[11965] Fix | Delete
}
[11966] Fix | Delete
}
[11967] Fix | Delete
}
[11968] Fix | Delete
return data;
[11969] Fix | Delete
}
[11970] Fix | Delete
get _isColorConversionNeeded() {
[11971] Fix | Delete
if (this.adobe) {
[11972] Fix | Delete
return !!this.adobe.transformCode;
[11973] Fix | Delete
}
[11974] Fix | Delete
if (this.numComponents === 3) {
[11975] Fix | Delete
if (this._colorTransform === 0) {
[11976] Fix | Delete
return false;
[11977] Fix | Delete
} else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {
[11978] Fix | Delete
return false;
[11979] Fix | Delete
}
[11980] Fix | Delete
return true;
[11981] Fix | Delete
}
[11982] Fix | Delete
if (this._colorTransform === 1) {
[11983] Fix | Delete
return true;
[11984] Fix | Delete
}
[11985] Fix | Delete
return false;
[11986] Fix | Delete
}
[11987] Fix | Delete
_convertYccToRgb(data) {
[11988] Fix | Delete
let Y, Cb, Cr;
[11989] Fix | Delete
for (let i = 0, length = data.length; i < length; i += 3) {
[11990] Fix | Delete
Y = data[i];
[11991] Fix | Delete
Cb = data[i + 1];
[11992] Fix | Delete
Cr = data[i + 2];
[11993] Fix | Delete
data[i] = Y - 179.456 + 1.402 * Cr;
[11994] Fix | Delete
data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;
[11995] Fix | Delete
data[i + 2] = Y - 226.816 + 1.772 * Cb;
[11996] Fix | Delete
}
[11997] Fix | Delete
return data;
[11998] Fix | Delete
}
[11999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function