1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 14:48:08 +02:00

Create the borderStyle of inferred links lazily (PR 19110 follow-up)

Given that most inferred links will overlap existing LinkAnnotations, creating a lot of unused `borderStyle` objects seem unnecessary.
Hence we can move that into the `AnnotationLayer.prototype.addLinkAnnotations` method instead, which also allows us to slightly reduce the API-surface.
This commit is contained in:
Jonas Jenwald 2025-02-10 10:03:28 +01:00
parent e608daed9f
commit fba5f3c237
5 changed files with 24 additions and 21 deletions

View file

@ -3254,6 +3254,8 @@ class AnnotationLayer {
parent: this,
};
for (const data of annotations) {
data.borderStyle ||= AnnotationLayer._defaultBorderStyle;
elementParams.data = data;
const element = AnnotationElementFactory.create(elementParams);
@ -3329,6 +3331,24 @@ class AnnotationLayer {
getEditableAnnotation(id) {
return this.#editableAnnotations.get(id);
}
/**
* @private
*/
static get _defaultBorderStyle() {
return shadow(
this,
"_defaultBorderStyle",
Object.freeze({
width: 1,
rawWidth: 1,
style: AnnotationBorderStyleType.SOLID,
dashArray: [3],
horizontalCornerRadius: 0,
verticalCornerRadius: 0,
})
);
}
}
export {

View file

@ -24,7 +24,6 @@
import {
AbortException,
AnnotationBorderStyleType,
AnnotationEditorParamsType,
AnnotationEditorType,
AnnotationMode,
@ -92,7 +91,6 @@ if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING || GENERIC")) {
export {
AbortException,
AnnotationBorderStyleType,
AnnotationEditorLayer,
AnnotationEditorParamsType,
AnnotationEditorType,

View file

@ -15,7 +15,6 @@
import {
AbortException,
AnnotationBorderStyleType,
AnnotationEditorParamsType,
AnnotationEditorType,
AnnotationMode,
@ -69,7 +68,6 @@ import { XfaLayer } from "../../src/display/xfa_layer.js";
const expectedAPI = Object.freeze({
AbortException,
AnnotationBorderStyleType,
AnnotationEditorLayer,
AnnotationEditorParamsType,
AnnotationEditorType,

View file

@ -13,12 +13,7 @@
* limitations under the License.
*/
import {
AnnotationBorderStyleType,
AnnotationType,
createValidAbsoluteUrl,
Util,
} from "pdfjs-lib";
import { AnnotationType, createValidAbsoluteUrl, Util } from "pdfjs-lib";
import { getOriginalIndex, normalize } from "./pdf_find_controller.js";
function DOMRectToPDF({ width, height, left, top }, pdfPageView) {
@ -89,15 +84,9 @@ function createLinkAnnotation({ url, index, length }, pdfPageView, id) {
annotationType: AnnotationType.LINK,
rotation: 0,
...calculateLinkPosition(range, pdfPageView),
// This is just the default for AnnotationBorderStyle.
borderStyle: {
width: 1,
rawWidth: 1,
style: AnnotationBorderStyleType.SOLID,
dashArray: [3],
horizontalCornerRadius: 0,
verticalCornerRadius: 0,
},
// Populated in the annotationLayer to avoid unnecessary object creation,
// since most inferred links overlap existing LinkAnnotations:
borderStyle: null,
};
}

View file

@ -15,7 +15,6 @@
const {
AbortException,
AnnotationBorderStyleType,
AnnotationEditorLayer,
AnnotationEditorParamsType,
AnnotationEditorType,
@ -65,7 +64,6 @@ const {
export {
AbortException,
AnnotationBorderStyleType,
AnnotationEditorLayer,
AnnotationEditorParamsType,
AnnotationEditorType,