Merge pull request #6699 from timvandermeij/annotation-refactoring
Improve code structure of the annotation code
This commit is contained in:
commit
361fa83f3b
@ -14,9 +14,8 @@
|
|||||||
*/
|
*/
|
||||||
/* globals PDFJS, Util, isDict, isName, stringToPDFString, warn, Dict, Stream,
|
/* globals PDFJS, Util, isDict, isName, stringToPDFString, warn, Dict, Stream,
|
||||||
stringToBytes, Promise, isArray, ObjectLoader, OperatorList,
|
stringToBytes, Promise, isArray, ObjectLoader, OperatorList,
|
||||||
isValidUrl, OPS, createPromiseCapability, AnnotationType,
|
isValidUrl, OPS, AnnotationType, stringToUTF8String,
|
||||||
stringToUTF8String, AnnotationBorderStyleType, ColorSpace,
|
AnnotationBorderStyleType, ColorSpace, AnnotationFlag, isInt */
|
||||||
AnnotationFlag, isInt */
|
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -119,25 +118,22 @@ var Annotation = (function AnnotationClosure() {
|
|||||||
|
|
||||||
function Annotation(params) {
|
function Annotation(params) {
|
||||||
var dict = params.dict;
|
var dict = params.dict;
|
||||||
var data = this.data = {};
|
|
||||||
|
|
||||||
data.subtype = dict.get('Subtype').name;
|
|
||||||
|
|
||||||
this.setFlags(dict.get('F'));
|
this.setFlags(dict.get('F'));
|
||||||
data.annotationFlags = this.flags;
|
|
||||||
|
|
||||||
this.setRectangle(dict.get('Rect'));
|
this.setRectangle(dict.get('Rect'));
|
||||||
data.rect = this.rectangle;
|
|
||||||
|
|
||||||
this.setColor(dict.get('C'));
|
this.setColor(dict.get('C'));
|
||||||
data.color = this.color;
|
|
||||||
|
|
||||||
this.borderStyle = data.borderStyle = new AnnotationBorderStyle();
|
|
||||||
this.setBorderStyle(dict);
|
this.setBorderStyle(dict);
|
||||||
|
|
||||||
this.appearance = getDefaultAppearance(dict);
|
this.appearance = getDefaultAppearance(dict);
|
||||||
data.hasAppearance = !!this.appearance;
|
|
||||||
data.id = params.ref.num;
|
// Expose public properties using a data object.
|
||||||
|
this.data = {};
|
||||||
|
this.data.id = params.ref.num;
|
||||||
|
this.data.subtype = dict.get('Subtype').name;
|
||||||
|
this.data.annotationFlags = this.flags;
|
||||||
|
this.data.rect = this.rectangle;
|
||||||
|
this.data.color = this.color;
|
||||||
|
this.data.borderStyle = this.borderStyle;
|
||||||
|
this.data.hasAppearance = !!this.appearance;
|
||||||
}
|
}
|
||||||
|
|
||||||
Annotation.prototype = {
|
Annotation.prototype = {
|
||||||
@ -264,6 +260,7 @@ var Annotation = (function AnnotationClosure() {
|
|||||||
* @param {Dict} borderStyle - The border style dictionary
|
* @param {Dict} borderStyle - The border style dictionary
|
||||||
*/
|
*/
|
||||||
setBorderStyle: function Annotation_setBorderStyle(borderStyle) {
|
setBorderStyle: function Annotation_setBorderStyle(borderStyle) {
|
||||||
|
this.borderStyle = new AnnotationBorderStyle();
|
||||||
if (!isDict(borderStyle)) {
|
if (!isDict(borderStyle)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -316,13 +313,11 @@ var Annotation = (function AnnotationClosure() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getOperatorList: function Annotation_getOperatorList(evaluator, task) {
|
getOperatorList: function Annotation_getOperatorList(evaluator, task) {
|
||||||
|
|
||||||
if (!this.appearance) {
|
if (!this.appearance) {
|
||||||
return Promise.resolve(new OperatorList());
|
return Promise.resolve(new OperatorList());
|
||||||
}
|
}
|
||||||
|
|
||||||
var data = this.data;
|
var data = this.data;
|
||||||
|
|
||||||
var appearanceDict = this.appearance.dict;
|
var appearanceDict = this.appearance.dict;
|
||||||
var resourcesPromise = this.loadResources([
|
var resourcesPromise = this.loadResources([
|
||||||
'ExtGState',
|
'ExtGState',
|
||||||
@ -354,33 +349,22 @@ var Annotation = (function AnnotationClosure() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Annotation.appendToOperatorList = function Annotation_appendToOperatorList(
|
Annotation.appendToOperatorList = function Annotation_appendToOperatorList(
|
||||||
annotations, opList, pdfManager, partialEvaluator, task, intent) {
|
annotations, opList, partialEvaluator, task, intent) {
|
||||||
|
|
||||||
function reject(e) {
|
|
||||||
annotationsReadyCapability.reject(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
var annotationsReadyCapability = createPromiseCapability();
|
|
||||||
|
|
||||||
var annotationPromises = [];
|
var annotationPromises = [];
|
||||||
for (var i = 0, n = annotations.length; i < n; ++i) {
|
for (var i = 0, n = annotations.length; i < n; ++i) {
|
||||||
if (intent === 'display' && annotations[i].viewable ||
|
if ((intent === 'display' && annotations[i].viewable) ||
|
||||||
intent === 'print' && annotations[i].printable) {
|
(intent === 'print' && annotations[i].printable)) {
|
||||||
annotationPromises.push(
|
annotationPromises.push(
|
||||||
annotations[i].getOperatorList(partialEvaluator, task));
|
annotations[i].getOperatorList(partialEvaluator, task));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Promise.all(annotationPromises).then(function(datas) {
|
return Promise.all(annotationPromises).then(function(operatorLists) {
|
||||||
opList.addOp(OPS.beginAnnotations, []);
|
opList.addOp(OPS.beginAnnotations, []);
|
||||||
for (var i = 0, n = datas.length; i < n; ++i) {
|
for (var i = 0, n = operatorLists.length; i < n; ++i) {
|
||||||
var annotOpList = datas[i];
|
opList.addOpList(operatorLists[i]);
|
||||||
opList.addOpList(annotOpList);
|
|
||||||
}
|
}
|
||||||
opList.addOp(OPS.endAnnotations, []);
|
opList.addOp(OPS.endAnnotations, []);
|
||||||
annotationsReadyCapability.resolve();
|
});
|
||||||
}, reject);
|
|
||||||
|
|
||||||
return annotationsReadyCapability.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return Annotation;
|
return Annotation;
|
||||||
@ -525,7 +509,6 @@ var AnnotationBorderStyle = (function AnnotationBorderStyleClosure() {
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
var WidgetAnnotation = (function WidgetAnnotationClosure() {
|
var WidgetAnnotation = (function WidgetAnnotationClosure() {
|
||||||
|
|
||||||
function WidgetAnnotation(params) {
|
function WidgetAnnotation(params) {
|
||||||
Annotation.call(this, params);
|
Annotation.call(this, params);
|
||||||
|
|
||||||
@ -649,7 +632,7 @@ var TextAnnotation = (function TextAnnotationClosure() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Util.inherit(TextAnnotation, Annotation, { });
|
Util.inherit(TextAnnotation, Annotation, {});
|
||||||
|
|
||||||
return TextAnnotation;
|
return TextAnnotation;
|
||||||
})();
|
})();
|
||||||
@ -725,7 +708,7 @@ var LinkAnnotation = (function LinkAnnotationClosure() {
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
Util.inherit(LinkAnnotation, Annotation, { });
|
Util.inherit(LinkAnnotation, Annotation, {});
|
||||||
|
|
||||||
return LinkAnnotation;
|
return LinkAnnotation;
|
||||||
})();
|
})();
|
||||||
|
@ -210,7 +210,7 @@ var Page = (function PageClosure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var annotationsReadyPromise = Annotation.appendToOperatorList(
|
var annotationsReadyPromise = Annotation.appendToOperatorList(
|
||||||
annotations, pageOpList, pdfManager, partialEvaluator, task, intent);
|
annotations, pageOpList, partialEvaluator, task, intent);
|
||||||
return annotationsReadyPromise.then(function () {
|
return annotationsReadyPromise.then(function () {
|
||||||
pageOpList.flush(true);
|
pageOpList.flush(true);
|
||||||
return pageOpList;
|
return pageOpList;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user