Skip to content

Commit edce8da

Browse files
committed
Implement annotation layer rendering and updating in src/display/annotation_layer.js
1 parent b1937e7 commit edce8da

File tree

2 files changed

+34
-27
lines changed

2 files changed

+34
-27
lines changed

src/display/annotation_layer.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,34 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
324324
}
325325
}
326326

327+
function render(viewport, div, annotations, page, linkService) {
328+
for (var i = 0, ii = annotations.length; i < ii; i++) {
329+
var data = annotations[i];
330+
if (!data || !data.hasHtml) {
331+
continue;
332+
}
333+
334+
var element = getHtmlElement(data, page, viewport, linkService);
335+
div.appendChild(element);
336+
}
337+
}
338+
339+
function update(viewport, div, annotations) {
340+
for (var i = 0, ii = annotations.length; i < ii; i++) {
341+
var data = annotations[i];
342+
var element = div.querySelector(
343+
'[data-annotation-id="' + data.id + '"]');
344+
if (element) {
345+
CustomStyle.setProp('transform', element,
346+
'matrix(' + viewport.transform.join(',') + ')');
347+
}
348+
}
349+
div.removeAttribute('hidden');
350+
}
351+
327352
return {
328-
getHtmlElement: getHtmlElement
353+
render: render,
354+
update: update
329355
};
330356
})();
331357

web/annotations_layer_builder.js

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
* @class
2828
*/
2929
var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
30-
var CustomStyle = PDFJS.CustomStyle;
31-
3230
/**
3331
* @param {AnnotationsLayerBuilderOptions} options
3432
* @constructs AnnotationsLayerBuilder
@@ -56,22 +54,14 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
5654

5755
this.pdfPage.getAnnotations(parameters).then(function (annotations) {
5856
viewport = viewport.clone({ dontFlip: true });
59-
var data, element, i, ii;
6057

6158
if (self.div) {
6259
// If an annotationLayer already exists, refresh its children's
6360
// transformation matrices.
64-
for (i = 0, ii = annotations.length; i < ii; i++) {
65-
data = annotations[i];
66-
element = self.div.querySelector(
67-
'[data-annotation-id="' + data.id + '"]');
68-
if (element) {
69-
CustomStyle.setProp('transform', element,
70-
'matrix(' + viewport.transform.join(',') + ')');
71-
}
72-
}
73-
self.div.removeAttribute('hidden');
61+
PDFJS.AnnotationLayer.update(viewport, self.div, annotations);
7462
} else {
63+
// Create an annotation layer div and render the annotations
64+
// if there is at least one annotation.
7565
if (annotations.length === 0) {
7666
return;
7767
}
@@ -80,19 +70,10 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
8070
self.div.className = 'annotationLayer';
8171
self.pageDiv.appendChild(self.div);
8272

83-
for (i = 0, ii = annotations.length; i < ii; i++) {
84-
data = annotations[i];
85-
if (!data || !data.hasHtml) {
86-
continue;
87-
}
88-
89-
element = PDFJS.AnnotationLayer.getHtmlElement(data, self.pdfPage,
90-
viewport,
91-
self.linkService);
92-
if (typeof mozL10n !== 'undefined') {
93-
mozL10n.translate(element);
94-
}
95-
self.div.appendChild(element);
73+
PDFJS.AnnotationLayer.render(viewport, self.div, annotations,
74+
self.pdfPage, self.linkService);
75+
if (typeof mozL10n !== 'undefined') {
76+
mozL10n.translate(self.div);
9677
}
9778
}
9879
});

0 commit comments

Comments
 (0)