Merge pull request #7596 from timvandermeij/widget-annotation-cleanup
Improve the structure for widget annotations
This commit is contained in:
commit
8dbb5a7c4a
@ -98,9 +98,14 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ {
|
||||
|
||||
case 'Widget':
|
||||
var fieldType = Util.getInheritableProperty(dict, 'FT');
|
||||
if (isName(fieldType, 'Tx')) {
|
||||
return new TextWidgetAnnotation(parameters);
|
||||
fieldType = isName(fieldType) ? fieldType.name : null;
|
||||
|
||||
switch (fieldType) {
|
||||
case 'Tx':
|
||||
return new TextWidgetAnnotation(parameters);
|
||||
}
|
||||
warn('Unimplemented widget field type "' + fieldType + '", ' +
|
||||
'falling back to base field type.');
|
||||
return new WidgetAnnotation(parameters);
|
||||
|
||||
case 'Popup':
|
||||
@ -615,13 +620,12 @@ var WidgetAnnotation = (function WidgetAnnotationClosure() {
|
||||
data.alternativeText = stringToPDFString(dict.get('TU') || '');
|
||||
data.defaultAppearance = Util.getInheritableProperty(dict, 'DA') || '';
|
||||
var fieldType = Util.getInheritableProperty(dict, 'FT');
|
||||
data.fieldType = isName(fieldType) ? fieldType.name : '';
|
||||
data.fieldType = isName(fieldType) ? fieldType.name : null;
|
||||
data.fieldFlags = Util.getInheritableProperty(dict, 'Ff') || 0;
|
||||
this.fieldResources = Util.getInheritableProperty(dict, 'DR') || Dict.empty;
|
||||
|
||||
// Hide unsupported Widget signatures.
|
||||
// Hide signatures because we cannot validate them.
|
||||
if (data.fieldType === 'Sig') {
|
||||
warn('unimplemented annotation type: Widget signature');
|
||||
this.setFlags(AnnotationFlag.HIDDEN);
|
||||
}
|
||||
|
||||
|
@ -69,6 +69,12 @@ AnnotationElementFactory.prototype =
|
||||
return new TextAnnotationElement(parameters);
|
||||
|
||||
case AnnotationType.WIDGET:
|
||||
var fieldType = parameters.data.fieldType;
|
||||
|
||||
switch (fieldType) {
|
||||
case 'Tx':
|
||||
return new TextWidgetAnnotationElement(parameters);
|
||||
}
|
||||
return new WidgetAnnotationElement(parameters);
|
||||
|
||||
case AnnotationType.POPUP:
|
||||
@ -392,9 +398,7 @@ var TextAnnotationElement = (function TextAnnotationElementClosure() {
|
||||
*/
|
||||
var WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {
|
||||
function WidgetAnnotationElement(parameters) {
|
||||
var isRenderable = !parameters.data.hasAppearance &&
|
||||
!!parameters.data.fieldValue;
|
||||
AnnotationElement.call(this, parameters, isRenderable);
|
||||
AnnotationElement.call(this, parameters, true);
|
||||
}
|
||||
|
||||
Util.inherit(WidgetAnnotationElement, AnnotationElement, {
|
||||
@ -406,6 +410,33 @@ var WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {
|
||||
* @returns {HTMLSectionElement}
|
||||
*/
|
||||
render: function WidgetAnnotationElement_render() {
|
||||
// Show only the container for unsupported field types.
|
||||
return this.container;
|
||||
}
|
||||
});
|
||||
|
||||
return WidgetAnnotationElement;
|
||||
})();
|
||||
|
||||
/**
|
||||
* @class
|
||||
* @alias TextWidgetAnnotationElement
|
||||
*/
|
||||
var TextWidgetAnnotationElement = (
|
||||
function TextWidgetAnnotationElementClosure() {
|
||||
function TextWidgetAnnotationElement(parameters) {
|
||||
WidgetAnnotationElement.call(this, parameters);
|
||||
}
|
||||
|
||||
Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, {
|
||||
/**
|
||||
* Render the text widget annotation's HTML element in the empty container.
|
||||
*
|
||||
* @public
|
||||
* @memberof TextWidgetAnnotationElement
|
||||
* @returns {HTMLSectionElement}
|
||||
*/
|
||||
render: function TextWidgetAnnotationElement_render() {
|
||||
var content = document.createElement('div');
|
||||
content.textContent = this.data.fieldValue;
|
||||
var textAlignment = this.data.textAlignment;
|
||||
@ -427,10 +458,10 @@ var WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {
|
||||
* @private
|
||||
* @param {HTMLDivElement} element
|
||||
* @param {Object} font
|
||||
* @memberof WidgetAnnotationElement
|
||||
* @memberof TextWidgetAnnotationElement
|
||||
*/
|
||||
_setTextStyle:
|
||||
function WidgetAnnotationElement_setTextStyle(element, font) {
|
||||
function TextWidgetAnnotationElement_setTextStyle(element, font) {
|
||||
// TODO: This duplicates some of the logic in CanvasGraphics.setFont().
|
||||
var style = element.style;
|
||||
style.fontSize = this.data.fontSize + 'px';
|
||||
@ -452,7 +483,7 @@ var WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {
|
||||
}
|
||||
});
|
||||
|
||||
return WidgetAnnotationElement;
|
||||
return TextWidgetAnnotationElement;
|
||||
})();
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user