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/wp-conte.../plugins/embedpre.../assets/pdf/build
File: script.js
graphics.endDrawing();
[10500] Fix | Delete
return {
[10501] Fix | Delete
canvas: tmpCanvas.canvas,
[10502] Fix | Delete
scaleX: dimx.scale,
[10503] Fix | Delete
scaleY: dimy.scale,
[10504] Fix | Delete
offsetX: adjustedX0,
[10505] Fix | Delete
offsetY: adjustedY0
[10506] Fix | Delete
};
[10507] Fix | Delete
}
[10508] Fix | Delete
getSizeAndScale(step, realOutputSize, scale) {
[10509] Fix | Delete
step = Math.abs(step);
[10510] Fix | Delete
const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);
[10511] Fix | Delete
let size = Math.ceil(step * scale);
[10512] Fix | Delete
if (size >= maxSize) {
[10513] Fix | Delete
size = maxSize;
[10514] Fix | Delete
} else {
[10515] Fix | Delete
scale = size / step;
[10516] Fix | Delete
}
[10517] Fix | Delete
return {
[10518] Fix | Delete
scale,
[10519] Fix | Delete
size
[10520] Fix | Delete
};
[10521] Fix | Delete
}
[10522] Fix | Delete
clipBbox(graphics, x0, y0, x1, y1) {
[10523] Fix | Delete
const bboxWidth = x1 - x0;
[10524] Fix | Delete
const bboxHeight = y1 - y0;
[10525] Fix | Delete
graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
[10526] Fix | Delete
graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);
[10527] Fix | Delete
graphics.clip();
[10528] Fix | Delete
graphics.endPath();
[10529] Fix | Delete
}
[10530] Fix | Delete
setFillAndStrokeStyleToContext(graphics, paintType, color) {
[10531] Fix | Delete
const context = graphics.ctx,
[10532] Fix | Delete
current = graphics.current;
[10533] Fix | Delete
switch (paintType) {
[10534] Fix | Delete
case PaintType.COLORED:
[10535] Fix | Delete
const ctx = this.ctx;
[10536] Fix | Delete
context.fillStyle = ctx.fillStyle;
[10537] Fix | Delete
context.strokeStyle = ctx.strokeStyle;
[10538] Fix | Delete
current.fillColor = ctx.fillStyle;
[10539] Fix | Delete
current.strokeColor = ctx.strokeStyle;
[10540] Fix | Delete
break;
[10541] Fix | Delete
case PaintType.UNCOLORED:
[10542] Fix | Delete
const cssColor = Util.makeHexColor(color[0], color[1], color[2]);
[10543] Fix | Delete
context.fillStyle = cssColor;
[10544] Fix | Delete
context.strokeStyle = cssColor;
[10545] Fix | Delete
current.fillColor = cssColor;
[10546] Fix | Delete
current.strokeColor = cssColor;
[10547] Fix | Delete
break;
[10548] Fix | Delete
default:
[10549] Fix | Delete
throw new FormatError(`Unsupported paint type: ${paintType}`);
[10550] Fix | Delete
}
[10551] Fix | Delete
}
[10552] Fix | Delete
getPattern(ctx, owner, inverse, pathType) {
[10553] Fix | Delete
let matrix = inverse;
[10554] Fix | Delete
if (pathType !== PathType.SHADING) {
[10555] Fix | Delete
matrix = Util.transform(matrix, owner.baseTransform);
[10556] Fix | Delete
if (this.matrix) {
[10557] Fix | Delete
matrix = Util.transform(matrix, this.matrix);
[10558] Fix | Delete
}
[10559] Fix | Delete
}
[10560] Fix | Delete
const temporaryPatternCanvas = this.createPatternCanvas(owner);
[10561] Fix | Delete
let domMatrix = new DOMMatrix(matrix);
[10562] Fix | Delete
domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
[10563] Fix | Delete
domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);
[10564] Fix | Delete
const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat");
[10565] Fix | Delete
pattern.setTransform(domMatrix);
[10566] Fix | Delete
return pattern;
[10567] Fix | Delete
}
[10568] Fix | Delete
}
[10569] Fix | Delete
[10570] Fix | Delete
;// CONCATENATED MODULE: ./src/shared/image_utils.js
[10571] Fix | Delete
[10572] Fix | Delete
[10573] Fix | Delete
[10574] Fix | Delete
[10575] Fix | Delete
[10576] Fix | Delete
[10577] Fix | Delete
[10578] Fix | Delete
function convertToRGBA(params) {
[10579] Fix | Delete
switch (params.kind) {
[10580] Fix | Delete
case ImageKind.GRAYSCALE_1BPP:
[10581] Fix | Delete
return convertBlackAndWhiteToRGBA(params);
[10582] Fix | Delete
case ImageKind.RGB_24BPP:
[10583] Fix | Delete
return convertRGBToRGBA(params);
[10584] Fix | Delete
}
[10585] Fix | Delete
return null;
[10586] Fix | Delete
}
[10587] Fix | Delete
function convertBlackAndWhiteToRGBA({
[10588] Fix | Delete
src,
[10589] Fix | Delete
srcPos = 0,
[10590] Fix | Delete
dest,
[10591] Fix | Delete
width,
[10592] Fix | Delete
height,
[10593] Fix | Delete
nonBlackColor = 0xffffffff,
[10594] Fix | Delete
inverseDecode = false
[10595] Fix | Delete
}) {
[10596] Fix | Delete
const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
[10597] Fix | Delete
const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];
[10598] Fix | Delete
const widthInSource = width >> 3;
[10599] Fix | Delete
const widthRemainder = width & 7;
[10600] Fix | Delete
const srcLength = src.length;
[10601] Fix | Delete
dest = new Uint32Array(dest.buffer);
[10602] Fix | Delete
let destPos = 0;
[10603] Fix | Delete
for (let i = 0; i < height; i++) {
[10604] Fix | Delete
for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {
[10605] Fix | Delete
const elem = srcPos < srcLength ? src[srcPos] : 255;
[10606] Fix | Delete
dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;
[10607] Fix | Delete
dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;
[10608] Fix | Delete
dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;
[10609] Fix | Delete
dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;
[10610] Fix | Delete
dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;
[10611] Fix | Delete
dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;
[10612] Fix | Delete
dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;
[10613] Fix | Delete
dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;
[10614] Fix | Delete
}
[10615] Fix | Delete
if (widthRemainder === 0) {
[10616] Fix | Delete
continue;
[10617] Fix | Delete
}
[10618] Fix | Delete
const elem = srcPos < srcLength ? src[srcPos++] : 255;
[10619] Fix | Delete
for (let j = 0; j < widthRemainder; j++) {
[10620] Fix | Delete
dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;
[10621] Fix | Delete
}
[10622] Fix | Delete
}
[10623] Fix | Delete
return {
[10624] Fix | Delete
srcPos,
[10625] Fix | Delete
destPos
[10626] Fix | Delete
};
[10627] Fix | Delete
}
[10628] Fix | Delete
function convertRGBToRGBA({
[10629] Fix | Delete
src,
[10630] Fix | Delete
srcPos = 0,
[10631] Fix | Delete
dest,
[10632] Fix | Delete
destPos = 0,
[10633] Fix | Delete
width,
[10634] Fix | Delete
height
[10635] Fix | Delete
}) {
[10636] Fix | Delete
let i = 0;
[10637] Fix | Delete
const len32 = src.length >> 2;
[10638] Fix | Delete
const src32 = new Uint32Array(src.buffer, srcPos, len32);
[10639] Fix | Delete
if (FeatureTest.isLittleEndian) {
[10640] Fix | Delete
for (; i < len32 - 2; i += 3, destPos += 4) {
[10641] Fix | Delete
const s1 = src32[i];
[10642] Fix | Delete
const s2 = src32[i + 1];
[10643] Fix | Delete
const s3 = src32[i + 2];
[10644] Fix | Delete
dest[destPos] = s1 | 0xff000000;
[10645] Fix | Delete
dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;
[10646] Fix | Delete
dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;
[10647] Fix | Delete
dest[destPos + 3] = s3 >>> 8 | 0xff000000;
[10648] Fix | Delete
}
[10649] Fix | Delete
for (let j = i * 4, jj = src.length; j < jj; j += 3) {
[10650] Fix | Delete
dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;
[10651] Fix | Delete
}
[10652] Fix | Delete
} else {
[10653] Fix | Delete
for (; i < len32 - 2; i += 3, destPos += 4) {
[10654] Fix | Delete
const s1 = src32[i];
[10655] Fix | Delete
const s2 = src32[i + 1];
[10656] Fix | Delete
const s3 = src32[i + 2];
[10657] Fix | Delete
dest[destPos] = s1 | 0xff;
[10658] Fix | Delete
dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;
[10659] Fix | Delete
dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;
[10660] Fix | Delete
dest[destPos + 3] = s3 << 8 | 0xff;
[10661] Fix | Delete
}
[10662] Fix | Delete
for (let j = i * 4, jj = src.length; j < jj; j += 3) {
[10663] Fix | Delete
dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;
[10664] Fix | Delete
}
[10665] Fix | Delete
}
[10666] Fix | Delete
return {
[10667] Fix | Delete
srcPos,
[10668] Fix | Delete
destPos
[10669] Fix | Delete
};
[10670] Fix | Delete
}
[10671] Fix | Delete
function grayToRGBA(src, dest) {
[10672] Fix | Delete
if (FeatureTest.isLittleEndian) {
[10673] Fix | Delete
for (let i = 0, ii = src.length; i < ii; i++) {
[10674] Fix | Delete
dest[i] = src[i] * 0x10101 | 0xff000000;
[10675] Fix | Delete
}
[10676] Fix | Delete
} else {
[10677] Fix | Delete
for (let i = 0, ii = src.length; i < ii; i++) {
[10678] Fix | Delete
dest[i] = src[i] * 0x1010100 | 0x000000ff;
[10679] Fix | Delete
}
[10680] Fix | Delete
}
[10681] Fix | Delete
}
[10682] Fix | Delete
[10683] Fix | Delete
;// CONCATENATED MODULE: ./src/display/canvas.js
[10684] Fix | Delete
[10685] Fix | Delete
[10686] Fix | Delete
[10687] Fix | Delete
[10688] Fix | Delete
[10689] Fix | Delete
[10690] Fix | Delete
[10691] Fix | Delete
[10692] Fix | Delete
[10693] Fix | Delete
[10694] Fix | Delete
[10695] Fix | Delete
[10696] Fix | Delete
[10697] Fix | Delete
[10698] Fix | Delete
[10699] Fix | Delete
const MIN_FONT_SIZE = 16;
[10700] Fix | Delete
const MAX_FONT_SIZE = 100;
[10701] Fix | Delete
const EXECUTION_TIME = 15;
[10702] Fix | Delete
const EXECUTION_STEPS = 10;
[10703] Fix | Delete
const MAX_SIZE_TO_COMPILE = 1000;
[10704] Fix | Delete
const FULL_CHUNK_HEIGHT = 16;
[10705] Fix | Delete
function mirrorContextOperations(ctx, destCtx) {
[10706] Fix | Delete
if (ctx._removeMirroring) {
[10707] Fix | Delete
throw new Error("Context is already forwarding operations.");
[10708] Fix | Delete
}
[10709] Fix | Delete
ctx.__originalSave = ctx.save;
[10710] Fix | Delete
ctx.__originalRestore = ctx.restore;
[10711] Fix | Delete
ctx.__originalRotate = ctx.rotate;
[10712] Fix | Delete
ctx.__originalScale = ctx.scale;
[10713] Fix | Delete
ctx.__originalTranslate = ctx.translate;
[10714] Fix | Delete
ctx.__originalTransform = ctx.transform;
[10715] Fix | Delete
ctx.__originalSetTransform = ctx.setTransform;
[10716] Fix | Delete
ctx.__originalResetTransform = ctx.resetTransform;
[10717] Fix | Delete
ctx.__originalClip = ctx.clip;
[10718] Fix | Delete
ctx.__originalMoveTo = ctx.moveTo;
[10719] Fix | Delete
ctx.__originalLineTo = ctx.lineTo;
[10720] Fix | Delete
ctx.__originalBezierCurveTo = ctx.bezierCurveTo;
[10721] Fix | Delete
ctx.__originalRect = ctx.rect;
[10722] Fix | Delete
ctx.__originalClosePath = ctx.closePath;
[10723] Fix | Delete
ctx.__originalBeginPath = ctx.beginPath;
[10724] Fix | Delete
ctx._removeMirroring = () => {
[10725] Fix | Delete
ctx.save = ctx.__originalSave;
[10726] Fix | Delete
ctx.restore = ctx.__originalRestore;
[10727] Fix | Delete
ctx.rotate = ctx.__originalRotate;
[10728] Fix | Delete
ctx.scale = ctx.__originalScale;
[10729] Fix | Delete
ctx.translate = ctx.__originalTranslate;
[10730] Fix | Delete
ctx.transform = ctx.__originalTransform;
[10731] Fix | Delete
ctx.setTransform = ctx.__originalSetTransform;
[10732] Fix | Delete
ctx.resetTransform = ctx.__originalResetTransform;
[10733] Fix | Delete
ctx.clip = ctx.__originalClip;
[10734] Fix | Delete
ctx.moveTo = ctx.__originalMoveTo;
[10735] Fix | Delete
ctx.lineTo = ctx.__originalLineTo;
[10736] Fix | Delete
ctx.bezierCurveTo = ctx.__originalBezierCurveTo;
[10737] Fix | Delete
ctx.rect = ctx.__originalRect;
[10738] Fix | Delete
ctx.closePath = ctx.__originalClosePath;
[10739] Fix | Delete
ctx.beginPath = ctx.__originalBeginPath;
[10740] Fix | Delete
delete ctx._removeMirroring;
[10741] Fix | Delete
};
[10742] Fix | Delete
ctx.save = function ctxSave() {
[10743] Fix | Delete
destCtx.save();
[10744] Fix | Delete
this.__originalSave();
[10745] Fix | Delete
};
[10746] Fix | Delete
ctx.restore = function ctxRestore() {
[10747] Fix | Delete
destCtx.restore();
[10748] Fix | Delete
this.__originalRestore();
[10749] Fix | Delete
};
[10750] Fix | Delete
ctx.translate = function ctxTranslate(x, y) {
[10751] Fix | Delete
destCtx.translate(x, y);
[10752] Fix | Delete
this.__originalTranslate(x, y);
[10753] Fix | Delete
};
[10754] Fix | Delete
ctx.scale = function ctxScale(x, y) {
[10755] Fix | Delete
destCtx.scale(x, y);
[10756] Fix | Delete
this.__originalScale(x, y);
[10757] Fix | Delete
};
[10758] Fix | Delete
ctx.transform = function ctxTransform(a, b, c, d, e, f) {
[10759] Fix | Delete
destCtx.transform(a, b, c, d, e, f);
[10760] Fix | Delete
this.__originalTransform(a, b, c, d, e, f);
[10761] Fix | Delete
};
[10762] Fix | Delete
ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
[10763] Fix | Delete
destCtx.setTransform(a, b, c, d, e, f);
[10764] Fix | Delete
this.__originalSetTransform(a, b, c, d, e, f);
[10765] Fix | Delete
};
[10766] Fix | Delete
ctx.resetTransform = function ctxResetTransform() {
[10767] Fix | Delete
destCtx.resetTransform();
[10768] Fix | Delete
this.__originalResetTransform();
[10769] Fix | Delete
};
[10770] Fix | Delete
ctx.rotate = function ctxRotate(angle) {
[10771] Fix | Delete
destCtx.rotate(angle);
[10772] Fix | Delete
this.__originalRotate(angle);
[10773] Fix | Delete
};
[10774] Fix | Delete
ctx.clip = function ctxRotate(rule) {
[10775] Fix | Delete
destCtx.clip(rule);
[10776] Fix | Delete
this.__originalClip(rule);
[10777] Fix | Delete
};
[10778] Fix | Delete
ctx.moveTo = function (x, y) {
[10779] Fix | Delete
destCtx.moveTo(x, y);
[10780] Fix | Delete
this.__originalMoveTo(x, y);
[10781] Fix | Delete
};
[10782] Fix | Delete
ctx.lineTo = function (x, y) {
[10783] Fix | Delete
destCtx.lineTo(x, y);
[10784] Fix | Delete
this.__originalLineTo(x, y);
[10785] Fix | Delete
};
[10786] Fix | Delete
ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {
[10787] Fix | Delete
destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
[10788] Fix | Delete
this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
[10789] Fix | Delete
};
[10790] Fix | Delete
ctx.rect = function (x, y, width, height) {
[10791] Fix | Delete
destCtx.rect(x, y, width, height);
[10792] Fix | Delete
this.__originalRect(x, y, width, height);
[10793] Fix | Delete
};
[10794] Fix | Delete
ctx.closePath = function () {
[10795] Fix | Delete
destCtx.closePath();
[10796] Fix | Delete
this.__originalClosePath();
[10797] Fix | Delete
};
[10798] Fix | Delete
ctx.beginPath = function () {
[10799] Fix | Delete
destCtx.beginPath();
[10800] Fix | Delete
this.__originalBeginPath();
[10801] Fix | Delete
};
[10802] Fix | Delete
}
[10803] Fix | Delete
class CachedCanvases {
[10804] Fix | Delete
constructor(canvasFactory) {
[10805] Fix | Delete
this.canvasFactory = canvasFactory;
[10806] Fix | Delete
this.cache = Object.create(null);
[10807] Fix | Delete
}
[10808] Fix | Delete
getCanvas(id, width, height) {
[10809] Fix | Delete
let canvasEntry;
[10810] Fix | Delete
if (this.cache[id] !== undefined) {
[10811] Fix | Delete
canvasEntry = this.cache[id];
[10812] Fix | Delete
this.canvasFactory.reset(canvasEntry, width, height);
[10813] Fix | Delete
} else {
[10814] Fix | Delete
canvasEntry = this.canvasFactory.create(width, height);
[10815] Fix | Delete
this.cache[id] = canvasEntry;
[10816] Fix | Delete
}
[10817] Fix | Delete
return canvasEntry;
[10818] Fix | Delete
}
[10819] Fix | Delete
delete(id) {
[10820] Fix | Delete
delete this.cache[id];
[10821] Fix | Delete
}
[10822] Fix | Delete
clear() {
[10823] Fix | Delete
for (const id in this.cache) {
[10824] Fix | Delete
const canvasEntry = this.cache[id];
[10825] Fix | Delete
this.canvasFactory.destroy(canvasEntry);
[10826] Fix | Delete
delete this.cache[id];
[10827] Fix | Delete
}
[10828] Fix | Delete
}
[10829] Fix | Delete
}
[10830] Fix | Delete
function drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {
[10831] Fix | Delete
const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);
[10832] Fix | Delete
if (b === 0 && c === 0) {
[10833] Fix | Delete
const tlX = destX * a + tx;
[10834] Fix | Delete
const rTlX = Math.round(tlX);
[10835] Fix | Delete
const tlY = destY * d + ty;
[10836] Fix | Delete
const rTlY = Math.round(tlY);
[10837] Fix | Delete
const brX = (destX + destW) * a + tx;
[10838] Fix | Delete
const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;
[10839] Fix | Delete
const brY = (destY + destH) * d + ty;
[10840] Fix | Delete
const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;
[10841] Fix | Delete
ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);
[10842] Fix | Delete
ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);
[10843] Fix | Delete
ctx.setTransform(a, b, c, d, tx, ty);
[10844] Fix | Delete
return [rWidth, rHeight];
[10845] Fix | Delete
}
[10846] Fix | Delete
if (a === 0 && d === 0) {
[10847] Fix | Delete
const tlX = destY * c + tx;
[10848] Fix | Delete
const rTlX = Math.round(tlX);
[10849] Fix | Delete
const tlY = destX * b + ty;
[10850] Fix | Delete
const rTlY = Math.round(tlY);
[10851] Fix | Delete
const brX = (destY + destH) * c + tx;
[10852] Fix | Delete
const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;
[10853] Fix | Delete
const brY = (destX + destW) * b + ty;
[10854] Fix | Delete
const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;
[10855] Fix | Delete
ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);
[10856] Fix | Delete
ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);
[10857] Fix | Delete
ctx.setTransform(a, b, c, d, tx, ty);
[10858] Fix | Delete
return [rHeight, rWidth];
[10859] Fix | Delete
}
[10860] Fix | Delete
ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);
[10861] Fix | Delete
const scaleX = Math.hypot(a, b);
[10862] Fix | Delete
const scaleY = Math.hypot(c, d);
[10863] Fix | Delete
return [scaleX * destW, scaleY * destH];
[10864] Fix | Delete
}
[10865] Fix | Delete
function compileType3Glyph(imgData) {
[10866] Fix | Delete
const {
[10867] Fix | Delete
width,
[10868] Fix | Delete
height
[10869] Fix | Delete
} = imgData;
[10870] Fix | Delete
if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {
[10871] Fix | Delete
return null;
[10872] Fix | Delete
}
[10873] Fix | Delete
const POINT_TO_PROCESS_LIMIT = 1000;
[10874] Fix | Delete
const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
[10875] Fix | Delete
const width1 = width + 1;
[10876] Fix | Delete
let points = new Uint8Array(width1 * (height + 1));
[10877] Fix | Delete
let i, j, j0;
[10878] Fix | Delete
const lineSize = width + 7 & ~7;
[10879] Fix | Delete
let data = new Uint8Array(lineSize * height),
[10880] Fix | Delete
pos = 0;
[10881] Fix | Delete
for (const elem of imgData.data) {
[10882] Fix | Delete
let mask = 128;
[10883] Fix | Delete
while (mask > 0) {
[10884] Fix | Delete
data[pos++] = elem & mask ? 0 : 255;
[10885] Fix | Delete
mask >>= 1;
[10886] Fix | Delete
}
[10887] Fix | Delete
}
[10888] Fix | Delete
let count = 0;
[10889] Fix | Delete
pos = 0;
[10890] Fix | Delete
if (data[pos] !== 0) {
[10891] Fix | Delete
points[0] = 1;
[10892] Fix | Delete
++count;
[10893] Fix | Delete
}
[10894] Fix | Delete
for (j = 1; j < width; j++) {
[10895] Fix | Delete
if (data[pos] !== data[pos + 1]) {
[10896] Fix | Delete
points[j] = data[pos] ? 2 : 1;
[10897] Fix | Delete
++count;
[10898] Fix | Delete
}
[10899] Fix | Delete
pos++;
[10900] Fix | Delete
}
[10901] Fix | Delete
if (data[pos] !== 0) {
[10902] Fix | Delete
points[j] = 2;
[10903] Fix | Delete
++count;
[10904] Fix | Delete
}
[10905] Fix | Delete
for (i = 1; i < height; i++) {
[10906] Fix | Delete
pos = i * lineSize;
[10907] Fix | Delete
j0 = i * width1;
[10908] Fix | Delete
if (data[pos - lineSize] !== data[pos]) {
[10909] Fix | Delete
points[j0] = data[pos] ? 1 : 8;
[10910] Fix | Delete
++count;
[10911] Fix | Delete
}
[10912] Fix | Delete
let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
[10913] Fix | Delete
for (j = 1; j < width; j++) {
[10914] Fix | Delete
sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
[10915] Fix | Delete
if (POINT_TYPES[sum]) {
[10916] Fix | Delete
points[j0 + j] = POINT_TYPES[sum];
[10917] Fix | Delete
++count;
[10918] Fix | Delete
}
[10919] Fix | Delete
pos++;
[10920] Fix | Delete
}
[10921] Fix | Delete
if (data[pos - lineSize] !== data[pos]) {
[10922] Fix | Delete
points[j0 + j] = data[pos] ? 2 : 4;
[10923] Fix | Delete
++count;
[10924] Fix | Delete
}
[10925] Fix | Delete
if (count > POINT_TO_PROCESS_LIMIT) {
[10926] Fix | Delete
return null;
[10927] Fix | Delete
}
[10928] Fix | Delete
}
[10929] Fix | Delete
pos = lineSize * (height - 1);
[10930] Fix | Delete
j0 = i * width1;
[10931] Fix | Delete
if (data[pos] !== 0) {
[10932] Fix | Delete
points[j0] = 8;
[10933] Fix | Delete
++count;
[10934] Fix | Delete
}
[10935] Fix | Delete
for (j = 1; j < width; j++) {
[10936] Fix | Delete
if (data[pos] !== data[pos + 1]) {
[10937] Fix | Delete
points[j0 + j] = data[pos] ? 4 : 8;
[10938] Fix | Delete
++count;
[10939] Fix | Delete
}
[10940] Fix | Delete
pos++;
[10941] Fix | Delete
}
[10942] Fix | Delete
if (data[pos] !== 0) {
[10943] Fix | Delete
points[j0 + j] = 4;
[10944] Fix | Delete
++count;
[10945] Fix | Delete
}
[10946] Fix | Delete
if (count > POINT_TO_PROCESS_LIMIT) {
[10947] Fix | Delete
return null;
[10948] Fix | Delete
}
[10949] Fix | Delete
const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
[10950] Fix | Delete
const path = new Path2D();
[10951] Fix | Delete
for (i = 0; count && i <= height; i++) {
[10952] Fix | Delete
let p = i * width1;
[10953] Fix | Delete
const end = p + width;
[10954] Fix | Delete
while (p < end && !points[p]) {
[10955] Fix | Delete
p++;
[10956] Fix | Delete
}
[10957] Fix | Delete
if (p === end) {
[10958] Fix | Delete
continue;
[10959] Fix | Delete
}
[10960] Fix | Delete
path.moveTo(p % width1, i);
[10961] Fix | Delete
const p0 = p;
[10962] Fix | Delete
let type = points[p];
[10963] Fix | Delete
do {
[10964] Fix | Delete
const step = steps[type];
[10965] Fix | Delete
do {
[10966] Fix | Delete
p += step;
[10967] Fix | Delete
} while (!points[p]);
[10968] Fix | Delete
const pp = points[p];
[10969] Fix | Delete
if (pp !== 5 && pp !== 10) {
[10970] Fix | Delete
type = pp;
[10971] Fix | Delete
points[p] = 0;
[10972] Fix | Delete
} else {
[10973] Fix | Delete
type = pp & 0x33 * type >> 4;
[10974] Fix | Delete
points[p] &= type >> 2 | type << 2;
[10975] Fix | Delete
}
[10976] Fix | Delete
path.lineTo(p % width1, p / width1 | 0);
[10977] Fix | Delete
if (!points[p]) {
[10978] Fix | Delete
--count;
[10979] Fix | Delete
}
[10980] Fix | Delete
} while (p0 !== p);
[10981] Fix | Delete
--i;
[10982] Fix | Delete
}
[10983] Fix | Delete
data = null;
[10984] Fix | Delete
points = null;
[10985] Fix | Delete
const drawOutline = function (c) {
[10986] Fix | Delete
c.save();
[10987] Fix | Delete
c.scale(1 / width, -1 / height);
[10988] Fix | Delete
c.translate(0, -height);
[10989] Fix | Delete
c.fill(path);
[10990] Fix | Delete
c.beginPath();
[10991] Fix | Delete
c.restore();
[10992] Fix | Delete
};
[10993] Fix | Delete
return drawOutline;
[10994] Fix | Delete
}
[10995] Fix | Delete
class CanvasExtraState {
[10996] Fix | Delete
constructor(width, height) {
[10997] Fix | Delete
this.alphaIsShape = false;
[10998] Fix | Delete
this.fontSize = 0;
[10999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function