Merge pull request #8072 from timvandermeij/annotation-append-operator-list
Annotations: move operator list addition logic to `src/core/document.js`
This commit is contained in:
commit
4e201d3787
@ -467,25 +467,6 @@ var Annotation = (function AnnotationClosure() {
|
||||
}
|
||||
};
|
||||
|
||||
Annotation.appendToOperatorList = function Annotation_appendToOperatorList(
|
||||
annotations, opList, partialEvaluator, task, intent, renderForms) {
|
||||
var annotationPromises = [];
|
||||
for (var i = 0, n = annotations.length; i < n; ++i) {
|
||||
if ((intent === 'display' && annotations[i].viewable) ||
|
||||
(intent === 'print' && annotations[i].printable)) {
|
||||
annotationPromises.push(
|
||||
annotations[i].getOperatorList(partialEvaluator, task, renderForms));
|
||||
}
|
||||
}
|
||||
return Promise.all(annotationPromises).then(function(operatorLists) {
|
||||
opList.addOp(OPS.beginAnnotations, []);
|
||||
for (var i = 0, n = operatorLists.length; i < n; ++i) {
|
||||
opList.addOpList(operatorLists[i]);
|
||||
}
|
||||
opList.addOp(OPS.endAnnotations, []);
|
||||
});
|
||||
};
|
||||
|
||||
return Annotation;
|
||||
})();
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
}(this, function (exports, sharedUtil, corePrimitives, coreStream, coreObj,
|
||||
coreParser, coreCrypto, coreEvaluator, coreAnnotation) {
|
||||
|
||||
var OPS = sharedUtil.OPS;
|
||||
var MissingDataException = sharedUtil.MissingDataException;
|
||||
var Util = sharedUtil.Util;
|
||||
var assert = sharedUtil.assert;
|
||||
@ -63,7 +64,6 @@ var Linearization = coreParser.Linearization;
|
||||
var calculateMD5 = coreCrypto.calculateMD5;
|
||||
var OperatorList = coreEvaluator.OperatorList;
|
||||
var PartialEvaluator = coreEvaluator.PartialEvaluator;
|
||||
var Annotation = coreAnnotation.Annotation;
|
||||
var AnnotationFactory = coreAnnotation.AnnotationFactory;
|
||||
|
||||
var Page = (function PageClosure() {
|
||||
@ -71,6 +71,11 @@ var Page = (function PageClosure() {
|
||||
var DEFAULT_USER_UNIT = 1.0;
|
||||
var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
|
||||
|
||||
function isAnnotationRenderable(annotation, intent) {
|
||||
return (intent === 'display' && annotation.viewable) ||
|
||||
(intent === 'print' && annotation.printable);
|
||||
}
|
||||
|
||||
function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache,
|
||||
builtInCMapCache) {
|
||||
this.pdfManager = pdfManager;
|
||||
@ -269,6 +274,8 @@ var Page = (function PageClosure() {
|
||||
});
|
||||
});
|
||||
|
||||
// Fetch the page's annotations and add their operator lists to the
|
||||
// page's operator list to render them.
|
||||
var annotationsPromise = pdfManager.ensure(this, 'annotations');
|
||||
return Promise.all([pageListPromise, annotationsPromise]).then(
|
||||
function(datas) {
|
||||
@ -280,10 +287,23 @@ var Page = (function PageClosure() {
|
||||
return pageOpList;
|
||||
}
|
||||
|
||||
var annotationsReadyPromise = Annotation.appendToOperatorList(
|
||||
annotations, pageOpList, partialEvaluator, task, intent,
|
||||
renderInteractiveForms);
|
||||
return annotationsReadyPromise.then(function () {
|
||||
// Collect the operator list promises for the annotations. Each promise
|
||||
// is resolved with the complete operator list for a single annotation.
|
||||
var i, ii, opListPromises = [];
|
||||
for (i = 0, ii = annotations.length; i < ii; i++) {
|
||||
if (isAnnotationRenderable(annotations[i], intent)) {
|
||||
opListPromises.push(annotations[i].getOperatorList(
|
||||
partialEvaluator, task, renderInteractiveForms));
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.all(opListPromises).then(function(opLists) {
|
||||
pageOpList.addOp(OPS.beginAnnotations, []);
|
||||
for (i = 0, ii = opLists.length; i < ii; i++) {
|
||||
pageOpList.addOpList(opLists[i]);
|
||||
}
|
||||
pageOpList.addOp(OPS.endAnnotations, []);
|
||||
|
||||
pageOpList.flush(true);
|
||||
return pageOpList;
|
||||
});
|
||||
@ -334,13 +354,9 @@ var Page = (function PageClosure() {
|
||||
var annotations = this.annotations;
|
||||
var annotationsData = [];
|
||||
for (var i = 0, n = annotations.length; i < n; ++i) {
|
||||
if (intent) {
|
||||
if (!(intent === 'display' && annotations[i].viewable) &&
|
||||
!(intent === 'print' && annotations[i].printable)) {
|
||||
continue;
|
||||
}
|
||||
if (!intent || isAnnotationRenderable(annotations[i], intent)) {
|
||||
annotationsData.push(annotations[i].data);
|
||||
}
|
||||
annotationsData.push(annotations[i].data);
|
||||
}
|
||||
return annotationsData;
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user