var createInnerElement = Annotations.SignatureWidgetAnnotation.prototype.createInnerElement;
Annotations.SignatureWidgetAnnotation.prototype.createInnerElement = function() {
var el = createInnerElement.apply(this, arguments);
var signatureWidget = this;
el.on('click', function(e) {
readerControl.setToolMode('AnnotationCreateSignature');
var signatureTool = readerControl.docViewer.getToolMode();
// trigger a click from the signature tool
signatureTool.mouseLeftDown(e);
signatureTool.mouseLeftUp(e);
signatureTool.one('annotationAdded', function(e, signatureAnnot) {
// positioning and scaling signature annotation to go inside widget
var height = signatureWidget.Height;
var width = signatureWidget.Width;
var x = signatureWidget.getRect().x1;
var y = signatureWidget.getRect().y1;
var hScale = 1;
var wScale = 1;
hScale = height / signatureAnnot.Height;
wScale = width / signatureAnnot.Width;
var scale = Math.min(hScale, wScale);
signatureAnnot.Width = width;
signatureAnnot.Height = height;
var h, i;
for (h = 0; h < signatureAnnot.getPaths().length; h++) {
for (i = 0; i < signatureAnnot.getPaths()[h].length; i++) {
signatureAnnot.getPaths()[h][i].x = (signatureAnnot.getPaths()[h][i].x - signatureAnnot.X) * scale + x;
signatureAnnot.getPaths()[h][i].y = (signatureAnnot.getPaths()[h][i].y - signatureAnnot.Y) * scale + y;
}
}
signatureAnnot.X = x;
signatureAnnot.Y = y;
var annotManager = readerControl.docViewer.getAnnotationManager();
// delete any signatures that were added previously
annotManager.getAnnotationsList().forEach(function(annot) {
if (annot !== signatureAnnot && annot instanceof Annotations.FreeHandAnnotation && annot.X === signatureAnnot.X && annot.Y === signatureAnnot.Y) {
annotManager.deleteAnnotation(annot);
}
});
annotManager.drawAnnotations(signatureAnnot.PageNumber);
});
});
return el;
};