Reset canvas state before drawing annotations

Conflicts:
	src/core.js
This commit is contained in:
Yury Delendik 2013-05-28 17:12:35 -05:00
parent 67eb3bbc68
commit 336aa38f4a
3 changed files with 59 additions and 24 deletions

View File

@ -240,6 +240,46 @@ var Annotation = (function AnnotationClosure() {
}
};
Annotation.appendToOperatorList = function Annotation_appendToOperatorList(
annotations, pageQueue, pdfManager, dependencies, partialEvaluator) {
function reject(e) {
annotationsReadyPromise.reject(e);
}
var annotationsReadyPromise = new Promise();
var ensurePromises = [];
for (var i = 0, n = annotations.length; i < n; ++i) {
var ensurePromise = pdfManager.ensure(annotations[i],
'getOperatorList',
[partialEvaluator]);
ensurePromises.push(ensurePromise);
}
Promise.all(ensurePromises).then(function(listPromises) {
Promise.all(listPromises).then(function(datas) {
var fnArray = pageQueue.fnArray;
var argsArray = pageQueue.argsArray;
fnArray.push('beginAnnotations');
argsArray.push([]);
for (var i = 0, n = datas.length; i < n; ++i) {
var annotationData = datas[i];
var annotationQueue = annotationData.queue;
Util.concatenateToArray(fnArray, annotationQueue.fnArray);
Util.concatenateToArray(argsArray, annotationQueue.argsArray);
Util.extendObj(dependencies, annotationData.dependencies);
}
fnArray.push('endAnnotations');
argsArray.push([]);
annotationsReadyPromise.resolve();
}, reject);
}, reject);
return annotationsReadyPromise;
};
return Annotation;
})();
PDFJS.Annotation = Annotation;

View File

@ -1515,6 +1515,15 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.restore();
},
beginAnnotations: function CanvasGraphics_beginAnnotations() {
this.save();
this.current = new CanvasExtraState();
},
endAnnotations: function CanvasGraphics_endAnnotations() {
this.restore();
},
beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,
matrix) {
this.save();

View File

@ -175,32 +175,18 @@ var Page = (function PageClosure() {
var pageData = datas[0];
var pageQueue = pageData.queue;
var annotations = datas[1];
var ensurePromises = [];
for (var i = 0, n = annotations.length; i < n; ++i) {
var ensurePromise = pdfManager.ensure(annotations[i],
'getOperatorList',
[partialEvaluator]);
ensurePromises.push(ensurePromise);
if (annotations.length === 0) {
PartialEvaluator.optimizeQueue(pageQueue);
promise.resolve(pageData);
return;
}
Promise.all(ensurePromises).then(function(listPromises) {
Promise.all(listPromises).then(function(datas) {
for (var i = 0, n = datas.length; i < n; ++i) {
var annotationData = datas[i];
var annotationQueue = annotationData.queue;
Util.concatenateToArray(pageQueue.fnArray,
annotationQueue.fnArray);
Util.concatenateToArray(pageQueue.argsArray,
annotationQueue.argsArray);
Util.extendObj(pageData.dependencies,
annotationData.dependencies);
}
PartialEvaluator.optimizeQueue(pageQueue);
promise.resolve(pageData);
}, reject);
var dependencies = pageData.dependencies;
var annotationsReadyPromise = Annotation.appendToOperatorList(
annotations, pageQueue, pdfManager, dependencies, partialEvaluator);
annotationsReadyPromise.then(function () {
PartialEvaluator.optimizeQueue(pageQueue);
promise.resolve(pageData);
}, reject);
}, reject);