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
}
[22500] Fix | Delete
};
[22501] Fix | Delete
window.requestAnimationFrame(this.#requestFrameCallback);
[22502] Fix | Delete
}
[22503] Fix | Delete
#draw(x, y) {
[22504] Fix | Delete
const [lastX, lastY] = this.currentPath.at(-1);
[22505] Fix | Delete
if (this.currentPath.length > 1 && x === lastX && y === lastY) {
[22506] Fix | Delete
return;
[22507] Fix | Delete
}
[22508] Fix | Delete
const currentPath = this.currentPath;
[22509] Fix | Delete
let path2D = this.#currentPath2D;
[22510] Fix | Delete
currentPath.push([x, y]);
[22511] Fix | Delete
this.#hasSomethingToDraw = true;
[22512] Fix | Delete
if (currentPath.length <= 2) {
[22513] Fix | Delete
path2D.moveTo(...currentPath[0]);
[22514] Fix | Delete
path2D.lineTo(x, y);
[22515] Fix | Delete
return;
[22516] Fix | Delete
}
[22517] Fix | Delete
if (currentPath.length === 3) {
[22518] Fix | Delete
this.#currentPath2D = path2D = new Path2D();
[22519] Fix | Delete
path2D.moveTo(...currentPath[0]);
[22520] Fix | Delete
}
[22521] Fix | Delete
this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);
[22522] Fix | Delete
}
[22523] Fix | Delete
#endPath() {
[22524] Fix | Delete
if (this.currentPath.length === 0) {
[22525] Fix | Delete
return;
[22526] Fix | Delete
}
[22527] Fix | Delete
const lastPoint = this.currentPath.at(-1);
[22528] Fix | Delete
this.#currentPath2D.lineTo(...lastPoint);
[22529] Fix | Delete
}
[22530] Fix | Delete
#stopDrawing(x, y) {
[22531] Fix | Delete
this.#requestFrameCallback = null;
[22532] Fix | Delete
x = Math.min(Math.max(x, 0), this.canvas.width);
[22533] Fix | Delete
y = Math.min(Math.max(y, 0), this.canvas.height);
[22534] Fix | Delete
this.#draw(x, y);
[22535] Fix | Delete
this.#endPath();
[22536] Fix | Delete
let bezier;
[22537] Fix | Delete
if (this.currentPath.length !== 1) {
[22538] Fix | Delete
bezier = this.#generateBezierPoints();
[22539] Fix | Delete
} else {
[22540] Fix | Delete
const xy = [x, y];
[22541] Fix | Delete
bezier = [[xy, xy.slice(), xy.slice(), xy]];
[22542] Fix | Delete
}
[22543] Fix | Delete
const path2D = this.#currentPath2D;
[22544] Fix | Delete
const currentPath = this.currentPath;
[22545] Fix | Delete
this.currentPath = [];
[22546] Fix | Delete
this.#currentPath2D = new Path2D();
[22547] Fix | Delete
const cmd = () => {
[22548] Fix | Delete
this.allRawPaths.push(currentPath);
[22549] Fix | Delete
this.paths.push(bezier);
[22550] Fix | Delete
this.bezierPath2D.push(path2D);
[22551] Fix | Delete
this._uiManager.rebuild(this);
[22552] Fix | Delete
};
[22553] Fix | Delete
const undo = () => {
[22554] Fix | Delete
this.allRawPaths.pop();
[22555] Fix | Delete
this.paths.pop();
[22556] Fix | Delete
this.bezierPath2D.pop();
[22557] Fix | Delete
if (this.paths.length === 0) {
[22558] Fix | Delete
this.remove();
[22559] Fix | Delete
} else {
[22560] Fix | Delete
if (!this.canvas) {
[22561] Fix | Delete
this.#createCanvas();
[22562] Fix | Delete
this.#createObserver();
[22563] Fix | Delete
}
[22564] Fix | Delete
this.#fitToContent();
[22565] Fix | Delete
}
[22566] Fix | Delete
};
[22567] Fix | Delete
this.addCommands({
[22568] Fix | Delete
cmd,
[22569] Fix | Delete
undo,
[22570] Fix | Delete
mustExec: true
[22571] Fix | Delete
});
[22572] Fix | Delete
}
[22573] Fix | Delete
#drawPoints() {
[22574] Fix | Delete
if (!this.#hasSomethingToDraw) {
[22575] Fix | Delete
return;
[22576] Fix | Delete
}
[22577] Fix | Delete
this.#hasSomethingToDraw = false;
[22578] Fix | Delete
const thickness = Math.ceil(this.thickness * this.parentScale);
[22579] Fix | Delete
const lastPoints = this.currentPath.slice(-3);
[22580] Fix | Delete
const x = lastPoints.map(xy => xy[0]);
[22581] Fix | Delete
const y = lastPoints.map(xy => xy[1]);
[22582] Fix | Delete
const xMin = Math.min(...x) - thickness;
[22583] Fix | Delete
const xMax = Math.max(...x) + thickness;
[22584] Fix | Delete
const yMin = Math.min(...y) - thickness;
[22585] Fix | Delete
const yMax = Math.max(...y) + thickness;
[22586] Fix | Delete
const {
[22587] Fix | Delete
ctx
[22588] Fix | Delete
} = this;
[22589] Fix | Delete
ctx.save();
[22590] Fix | Delete
ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
[22591] Fix | Delete
for (const path of this.bezierPath2D) {
[22592] Fix | Delete
ctx.stroke(path);
[22593] Fix | Delete
}
[22594] Fix | Delete
ctx.stroke(this.#currentPath2D);
[22595] Fix | Delete
ctx.restore();
[22596] Fix | Delete
}
[22597] Fix | Delete
#makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {
[22598] Fix | Delete
const prevX = (x0 + x1) / 2;
[22599] Fix | Delete
const prevY = (y0 + y1) / 2;
[22600] Fix | Delete
const x3 = (x1 + x2) / 2;
[22601] Fix | Delete
const y3 = (y1 + y2) / 2;
[22602] Fix | Delete
path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);
[22603] Fix | Delete
}
[22604] Fix | Delete
#generateBezierPoints() {
[22605] Fix | Delete
const path = this.currentPath;
[22606] Fix | Delete
if (path.length <= 2) {
[22607] Fix | Delete
return [[path[0], path[0], path.at(-1), path.at(-1)]];
[22608] Fix | Delete
}
[22609] Fix | Delete
const bezierPoints = [];
[22610] Fix | Delete
let i;
[22611] Fix | Delete
let [x0, y0] = path[0];
[22612] Fix | Delete
for (i = 1; i < path.length - 2; i++) {
[22613] Fix | Delete
const [x1, y1] = path[i];
[22614] Fix | Delete
const [x2, y2] = path[i + 1];
[22615] Fix | Delete
const x3 = (x1 + x2) / 2;
[22616] Fix | Delete
const y3 = (y1 + y2) / 2;
[22617] Fix | Delete
const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];
[22618] Fix | Delete
const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];
[22619] Fix | Delete
bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);
[22620] Fix | Delete
[x0, y0] = [x3, y3];
[22621] Fix | Delete
}
[22622] Fix | Delete
const [x1, y1] = path[i];
[22623] Fix | Delete
const [x2, y2] = path[i + 1];
[22624] Fix | Delete
const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];
[22625] Fix | Delete
const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];
[22626] Fix | Delete
bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);
[22627] Fix | Delete
return bezierPoints;
[22628] Fix | Delete
}
[22629] Fix | Delete
#redraw() {
[22630] Fix | Delete
if (this.isEmpty()) {
[22631] Fix | Delete
this.#updateTransform();
[22632] Fix | Delete
return;
[22633] Fix | Delete
}
[22634] Fix | Delete
this.#setStroke();
[22635] Fix | Delete
const {
[22636] Fix | Delete
canvas,
[22637] Fix | Delete
ctx
[22638] Fix | Delete
} = this;
[22639] Fix | Delete
ctx.setTransform(1, 0, 0, 1, 0, 0);
[22640] Fix | Delete
ctx.clearRect(0, 0, canvas.width, canvas.height);
[22641] Fix | Delete
this.#updateTransform();
[22642] Fix | Delete
for (const path of this.bezierPath2D) {
[22643] Fix | Delete
ctx.stroke(path);
[22644] Fix | Delete
}
[22645] Fix | Delete
}
[22646] Fix | Delete
commit() {
[22647] Fix | Delete
if (this.#disableEditing) {
[22648] Fix | Delete
return;
[22649] Fix | Delete
}
[22650] Fix | Delete
super.commit();
[22651] Fix | Delete
this.isEditing = false;
[22652] Fix | Delete
this.disableEditMode();
[22653] Fix | Delete
this.setInForeground();
[22654] Fix | Delete
this.#disableEditing = true;
[22655] Fix | Delete
this.div.classList.add("disabled");
[22656] Fix | Delete
this.#fitToContent(true);
[22657] Fix | Delete
this.select();
[22658] Fix | Delete
this.parent.addInkEditorIfNeeded(true);
[22659] Fix | Delete
this.moveInDOM();
[22660] Fix | Delete
this.div.focus({
[22661] Fix | Delete
preventScroll: true
[22662] Fix | Delete
});
[22663] Fix | Delete
}
[22664] Fix | Delete
focusin(event) {
[22665] Fix | Delete
if (!this._focusEventsAllowed) {
[22666] Fix | Delete
return;
[22667] Fix | Delete
}
[22668] Fix | Delete
super.focusin(event);
[22669] Fix | Delete
this.enableEditMode();
[22670] Fix | Delete
}
[22671] Fix | Delete
canvasPointerdown(event) {
[22672] Fix | Delete
if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {
[22673] Fix | Delete
return;
[22674] Fix | Delete
}
[22675] Fix | Delete
this.setInForeground();
[22676] Fix | Delete
event.preventDefault();
[22677] Fix | Delete
if (!this.div.contains(document.activeElement)) {
[22678] Fix | Delete
this.div.focus({
[22679] Fix | Delete
preventScroll: true
[22680] Fix | Delete
});
[22681] Fix | Delete
}
[22682] Fix | Delete
this.#startDrawing(event.offsetX, event.offsetY);
[22683] Fix | Delete
}
[22684] Fix | Delete
canvasPointermove(event) {
[22685] Fix | Delete
event.preventDefault();
[22686] Fix | Delete
this.#draw(event.offsetX, event.offsetY);
[22687] Fix | Delete
}
[22688] Fix | Delete
canvasPointerup(event) {
[22689] Fix | Delete
event.preventDefault();
[22690] Fix | Delete
this.#endDrawing(event);
[22691] Fix | Delete
}
[22692] Fix | Delete
canvasPointerleave(event) {
[22693] Fix | Delete
this.#endDrawing(event);
[22694] Fix | Delete
}
[22695] Fix | Delete
#endDrawing(event) {
[22696] Fix | Delete
this.canvas.removeEventListener("pointerleave", this.#boundCanvasPointerleave);
[22697] Fix | Delete
this.canvas.removeEventListener("pointermove", this.#boundCanvasPointermove);
[22698] Fix | Delete
this.canvas.removeEventListener("pointerup", this.#boundCanvasPointerup);
[22699] Fix | Delete
this.canvas.addEventListener("pointerdown", this.#boundCanvasPointerdown);
[22700] Fix | Delete
if (this.#canvasContextMenuTimeoutId) {
[22701] Fix | Delete
clearTimeout(this.#canvasContextMenuTimeoutId);
[22702] Fix | Delete
}
[22703] Fix | Delete
this.#canvasContextMenuTimeoutId = setTimeout(() => {
[22704] Fix | Delete
this.#canvasContextMenuTimeoutId = null;
[22705] Fix | Delete
this.canvas.removeEventListener("contextmenu", noContextMenu);
[22706] Fix | Delete
}, 10);
[22707] Fix | Delete
this.#stopDrawing(event.offsetX, event.offsetY);
[22708] Fix | Delete
this.addToAnnotationStorage();
[22709] Fix | Delete
this.setInBackground();
[22710] Fix | Delete
}
[22711] Fix | Delete
#createCanvas() {
[22712] Fix | Delete
this.canvas = document.createElement("canvas");
[22713] Fix | Delete
this.canvas.width = this.canvas.height = 0;
[22714] Fix | Delete
this.canvas.className = "inkEditorCanvas";
[22715] Fix | Delete
this.canvas.setAttribute("data-l10n-id", "pdfjs-ink-canvas");
[22716] Fix | Delete
this.div.append(this.canvas);
[22717] Fix | Delete
this.ctx = this.canvas.getContext("2d");
[22718] Fix | Delete
}
[22719] Fix | Delete
#createObserver() {
[22720] Fix | Delete
this.#observer = new ResizeObserver(entries => {
[22721] Fix | Delete
const rect = entries[0].contentRect;
[22722] Fix | Delete
if (rect.width && rect.height) {
[22723] Fix | Delete
this.setDimensions(rect.width, rect.height);
[22724] Fix | Delete
}
[22725] Fix | Delete
});
[22726] Fix | Delete
this.#observer.observe(this.div);
[22727] Fix | Delete
}
[22728] Fix | Delete
get isResizable() {
[22729] Fix | Delete
return !this.isEmpty() && this.#disableEditing;
[22730] Fix | Delete
}
[22731] Fix | Delete
render() {
[22732] Fix | Delete
if (this.div) {
[22733] Fix | Delete
return this.div;
[22734] Fix | Delete
}
[22735] Fix | Delete
let baseX, baseY;
[22736] Fix | Delete
if (this.width) {
[22737] Fix | Delete
baseX = this.x;
[22738] Fix | Delete
baseY = this.y;
[22739] Fix | Delete
}
[22740] Fix | Delete
super.render();
[22741] Fix | Delete
this.div.setAttribute("data-l10n-id", "pdfjs-ink");
[22742] Fix | Delete
const [x, y, w, h] = this.#getInitialBBox();
[22743] Fix | Delete
this.setAt(x, y, 0, 0);
[22744] Fix | Delete
this.setDims(w, h);
[22745] Fix | Delete
this.#createCanvas();
[22746] Fix | Delete
if (this.width) {
[22747] Fix | Delete
const [parentWidth, parentHeight] = this.parentDimensions;
[22748] Fix | Delete
this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);
[22749] Fix | Delete
this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);
[22750] Fix | Delete
this.#isCanvasInitialized = true;
[22751] Fix | Delete
this.#setCanvasDims();
[22752] Fix | Delete
this.setDims(this.width * parentWidth, this.height * parentHeight);
[22753] Fix | Delete
this.#redraw();
[22754] Fix | Delete
this.div.classList.add("disabled");
[22755] Fix | Delete
} else {
[22756] Fix | Delete
this.div.classList.add("editing");
[22757] Fix | Delete
this.enableEditMode();
[22758] Fix | Delete
}
[22759] Fix | Delete
this.#createObserver();
[22760] Fix | Delete
return this.div;
[22761] Fix | Delete
}
[22762] Fix | Delete
#setCanvasDims() {
[22763] Fix | Delete
if (!this.#isCanvasInitialized) {
[22764] Fix | Delete
return;
[22765] Fix | Delete
}
[22766] Fix | Delete
const [parentWidth, parentHeight] = this.parentDimensions;
[22767] Fix | Delete
this.canvas.width = Math.ceil(this.width * parentWidth);
[22768] Fix | Delete
this.canvas.height = Math.ceil(this.height * parentHeight);
[22769] Fix | Delete
this.#updateTransform();
[22770] Fix | Delete
}
[22771] Fix | Delete
setDimensions(width, height) {
[22772] Fix | Delete
const roundedWidth = Math.round(width);
[22773] Fix | Delete
const roundedHeight = Math.round(height);
[22774] Fix | Delete
if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {
[22775] Fix | Delete
return;
[22776] Fix | Delete
}
[22777] Fix | Delete
this.#realWidth = roundedWidth;
[22778] Fix | Delete
this.#realHeight = roundedHeight;
[22779] Fix | Delete
this.canvas.style.visibility = "hidden";
[22780] Fix | Delete
const [parentWidth, parentHeight] = this.parentDimensions;
[22781] Fix | Delete
this.width = width / parentWidth;
[22782] Fix | Delete
this.height = height / parentHeight;
[22783] Fix | Delete
this.fixAndSetPosition();
[22784] Fix | Delete
if (this.#disableEditing) {
[22785] Fix | Delete
this.#setScaleFactor(width, height);
[22786] Fix | Delete
}
[22787] Fix | Delete
this.#setCanvasDims();
[22788] Fix | Delete
this.#redraw();
[22789] Fix | Delete
this.canvas.style.visibility = "visible";
[22790] Fix | Delete
this.fixDims();
[22791] Fix | Delete
}
[22792] Fix | Delete
#setScaleFactor(width, height) {
[22793] Fix | Delete
const padding = this.#getPadding();
[22794] Fix | Delete
const scaleFactorW = (width - padding) / this.#baseWidth;
[22795] Fix | Delete
const scaleFactorH = (height - padding) / this.#baseHeight;
[22796] Fix | Delete
this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);
[22797] Fix | Delete
}
[22798] Fix | Delete
#updateTransform() {
[22799] Fix | Delete
const padding = this.#getPadding() / 2;
[22800] Fix | Delete
this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);
[22801] Fix | Delete
}
[22802] Fix | Delete
static #buildPath2D(bezier) {
[22803] Fix | Delete
const path2D = new Path2D();
[22804] Fix | Delete
for (let i = 0, ii = bezier.length; i < ii; i++) {
[22805] Fix | Delete
const [first, control1, control2, second] = bezier[i];
[22806] Fix | Delete
if (i === 0) {
[22807] Fix | Delete
path2D.moveTo(...first);
[22808] Fix | Delete
}
[22809] Fix | Delete
path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);
[22810] Fix | Delete
}
[22811] Fix | Delete
return path2D;
[22812] Fix | Delete
}
[22813] Fix | Delete
static #toPDFCoordinates(points, rect, rotation) {
[22814] Fix | Delete
const [blX, blY, trX, trY] = rect;
[22815] Fix | Delete
switch (rotation) {
[22816] Fix | Delete
case 0:
[22817] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22818] Fix | Delete
points[i] += blX;
[22819] Fix | Delete
points[i + 1] = trY - points[i + 1];
[22820] Fix | Delete
}
[22821] Fix | Delete
break;
[22822] Fix | Delete
case 90:
[22823] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22824] Fix | Delete
const x = points[i];
[22825] Fix | Delete
points[i] = points[i + 1] + blX;
[22826] Fix | Delete
points[i + 1] = x + blY;
[22827] Fix | Delete
}
[22828] Fix | Delete
break;
[22829] Fix | Delete
case 180:
[22830] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22831] Fix | Delete
points[i] = trX - points[i];
[22832] Fix | Delete
points[i + 1] += blY;
[22833] Fix | Delete
}
[22834] Fix | Delete
break;
[22835] Fix | Delete
case 270:
[22836] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22837] Fix | Delete
const x = points[i];
[22838] Fix | Delete
points[i] = trX - points[i + 1];
[22839] Fix | Delete
points[i + 1] = trY - x;
[22840] Fix | Delete
}
[22841] Fix | Delete
break;
[22842] Fix | Delete
default:
[22843] Fix | Delete
throw new Error("Invalid rotation");
[22844] Fix | Delete
}
[22845] Fix | Delete
return points;
[22846] Fix | Delete
}
[22847] Fix | Delete
static #fromPDFCoordinates(points, rect, rotation) {
[22848] Fix | Delete
const [blX, blY, trX, trY] = rect;
[22849] Fix | Delete
switch (rotation) {
[22850] Fix | Delete
case 0:
[22851] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22852] Fix | Delete
points[i] -= blX;
[22853] Fix | Delete
points[i + 1] = trY - points[i + 1];
[22854] Fix | Delete
}
[22855] Fix | Delete
break;
[22856] Fix | Delete
case 90:
[22857] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22858] Fix | Delete
const x = points[i];
[22859] Fix | Delete
points[i] = points[i + 1] - blY;
[22860] Fix | Delete
points[i + 1] = x - blX;
[22861] Fix | Delete
}
[22862] Fix | Delete
break;
[22863] Fix | Delete
case 180:
[22864] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22865] Fix | Delete
points[i] = trX - points[i];
[22866] Fix | Delete
points[i + 1] -= blY;
[22867] Fix | Delete
}
[22868] Fix | Delete
break;
[22869] Fix | Delete
case 270:
[22870] Fix | Delete
for (let i = 0, ii = points.length; i < ii; i += 2) {
[22871] Fix | Delete
const x = points[i];
[22872] Fix | Delete
points[i] = trY - points[i + 1];
[22873] Fix | Delete
points[i + 1] = trX - x;
[22874] Fix | Delete
}
[22875] Fix | Delete
break;
[22876] Fix | Delete
default:
[22877] Fix | Delete
throw new Error("Invalid rotation");
[22878] Fix | Delete
}
[22879] Fix | Delete
return points;
[22880] Fix | Delete
}
[22881] Fix | Delete
#serializePaths(s, tx, ty, rect) {
[22882] Fix | Delete
const paths = [];
[22883] Fix | Delete
const padding = this.thickness / 2;
[22884] Fix | Delete
const shiftX = s * tx + padding;
[22885] Fix | Delete
const shiftY = s * ty + padding;
[22886] Fix | Delete
for (const bezier of this.paths) {
[22887] Fix | Delete
const buffer = [];
[22888] Fix | Delete
const points = [];
[22889] Fix | Delete
for (let j = 0, jj = bezier.length; j < jj; j++) {
[22890] Fix | Delete
const [first, control1, control2, second] = bezier[j];
[22891] Fix | Delete
if (first[0] === second[0] && first[1] === second[1] && jj === 1) {
[22892] Fix | Delete
const p0 = s * first[0] + shiftX;
[22893] Fix | Delete
const p1 = s * first[1] + shiftY;
[22894] Fix | Delete
buffer.push(p0, p1);
[22895] Fix | Delete
points.push(p0, p1);
[22896] Fix | Delete
break;
[22897] Fix | Delete
}
[22898] Fix | Delete
const p10 = s * first[0] + shiftX;
[22899] Fix | Delete
const p11 = s * first[1] + shiftY;
[22900] Fix | Delete
const p20 = s * control1[0] + shiftX;
[22901] Fix | Delete
const p21 = s * control1[1] + shiftY;
[22902] Fix | Delete
const p30 = s * control2[0] + shiftX;
[22903] Fix | Delete
const p31 = s * control2[1] + shiftY;
[22904] Fix | Delete
const p40 = s * second[0] + shiftX;
[22905] Fix | Delete
const p41 = s * second[1] + shiftY;
[22906] Fix | Delete
if (j === 0) {
[22907] Fix | Delete
buffer.push(p10, p11);
[22908] Fix | Delete
points.push(p10, p11);
[22909] Fix | Delete
}
[22910] Fix | Delete
buffer.push(p20, p21, p30, p31, p40, p41);
[22911] Fix | Delete
points.push(p20, p21);
[22912] Fix | Delete
if (j === jj - 1) {
[22913] Fix | Delete
points.push(p40, p41);
[22914] Fix | Delete
}
[22915] Fix | Delete
}
[22916] Fix | Delete
paths.push({
[22917] Fix | Delete
bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),
[22918] Fix | Delete
points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)
[22919] Fix | Delete
});
[22920] Fix | Delete
}
[22921] Fix | Delete
return paths;
[22922] Fix | Delete
}
[22923] Fix | Delete
#getBbox() {
[22924] Fix | Delete
let xMin = Infinity;
[22925] Fix | Delete
let xMax = -Infinity;
[22926] Fix | Delete
let yMin = Infinity;
[22927] Fix | Delete
let yMax = -Infinity;
[22928] Fix | Delete
for (const path of this.paths) {
[22929] Fix | Delete
for (const [first, control1, control2, second] of path) {
[22930] Fix | Delete
const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);
[22931] Fix | Delete
xMin = Math.min(xMin, bbox[0]);
[22932] Fix | Delete
yMin = Math.min(yMin, bbox[1]);
[22933] Fix | Delete
xMax = Math.max(xMax, bbox[2]);
[22934] Fix | Delete
yMax = Math.max(yMax, bbox[3]);
[22935] Fix | Delete
}
[22936] Fix | Delete
}
[22937] Fix | Delete
return [xMin, yMin, xMax, yMax];
[22938] Fix | Delete
}
[22939] Fix | Delete
#getPadding() {
[22940] Fix | Delete
return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;
[22941] Fix | Delete
}
[22942] Fix | Delete
#fitToContent(firstTime = false) {
[22943] Fix | Delete
if (this.isEmpty()) {
[22944] Fix | Delete
return;
[22945] Fix | Delete
}
[22946] Fix | Delete
if (!this.#disableEditing) {
[22947] Fix | Delete
this.#redraw();
[22948] Fix | Delete
return;
[22949] Fix | Delete
}
[22950] Fix | Delete
const bbox = this.#getBbox();
[22951] Fix | Delete
const padding = this.#getPadding();
[22952] Fix | Delete
this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);
[22953] Fix | Delete
this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);
[22954] Fix | Delete
const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);
[22955] Fix | Delete
const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);
[22956] Fix | Delete
const [parentWidth, parentHeight] = this.parentDimensions;
[22957] Fix | Delete
this.width = width / parentWidth;
[22958] Fix | Delete
this.height = height / parentHeight;
[22959] Fix | Delete
this.setAspectRatio(width, height);
[22960] Fix | Delete
const prevTranslationX = this.translationX;
[22961] Fix | Delete
const prevTranslationY = this.translationY;
[22962] Fix | Delete
this.translationX = -bbox[0];
[22963] Fix | Delete
this.translationY = -bbox[1];
[22964] Fix | Delete
this.#setCanvasDims();
[22965] Fix | Delete
this.#redraw();
[22966] Fix | Delete
this.#realWidth = width;
[22967] Fix | Delete
this.#realHeight = height;
[22968] Fix | Delete
this.setDims(width, height);
[22969] Fix | Delete
const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;
[22970] Fix | Delete
this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);
[22971] Fix | Delete
}
[22972] Fix | Delete
static deserialize(data, parent, uiManager) {
[22973] Fix | Delete
if (data instanceof InkAnnotationElement) {
[22974] Fix | Delete
return null;
[22975] Fix | Delete
}
[22976] Fix | Delete
const editor = super.deserialize(data, parent, uiManager);
[22977] Fix | Delete
editor.thickness = data.thickness;
[22978] Fix | Delete
editor.color = Util.makeHexColor(...data.color);
[22979] Fix | Delete
editor.opacity = data.opacity;
[22980] Fix | Delete
const [pageWidth, pageHeight] = editor.pageDimensions;
[22981] Fix | Delete
const width = editor.width * pageWidth;
[22982] Fix | Delete
const height = editor.height * pageHeight;
[22983] Fix | Delete
const scaleFactor = editor.parentScale;
[22984] Fix | Delete
const padding = data.thickness / 2;
[22985] Fix | Delete
editor.#disableEditing = true;
[22986] Fix | Delete
editor.#realWidth = Math.round(width);
[22987] Fix | Delete
editor.#realHeight = Math.round(height);
[22988] Fix | Delete
const {
[22989] Fix | Delete
paths,
[22990] Fix | Delete
rect,
[22991] Fix | Delete
rotation
[22992] Fix | Delete
} = data;
[22993] Fix | Delete
for (let {
[22994] Fix | Delete
bezier
[22995] Fix | Delete
} of paths) {
[22996] Fix | Delete
bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);
[22997] Fix | Delete
const path = [];
[22998] Fix | Delete
editor.paths.push(path);
[22999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function