[Pkg-javascript-commits] [pdf.js] 79/115: Move most rendering logic to src/display/annotation_layer.js
David Prévot
taffit at moszumanska.debian.org
Wed Dec 16 20:03:18 UTC 2015
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository pdf.js.
commit 2dc3ee38c0cc7c4a31aa6ac586f0bcbcb153f0c7
Author: Tim van der Meij <timvandermeij at gmail.com>
Date: Thu Dec 3 00:20:18 2015 +0100
Move most rendering logic to src/display/annotation_layer.js
---
src/display/annotation_layer.js | 50 ++++++++++++++++++++++++++++-----------
web/annotations_layer_builder.css | 4 ++++
web/annotations_layer_builder.js | 30 ++++++-----------------
3 files changed, 47 insertions(+), 37 deletions(-)
diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js
index 827613f..2602f41 100644
--- a/src/display/annotation_layer.js
+++ b/src/display/annotation_layer.js
@@ -42,12 +42,28 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
style.fontFamily = fontFamily + fallbackName;
}
- function getContainer(data) {
+ function getContainer(data, page, viewport) {
var container = document.createElement('section');
- var cstyle = container.style;
var width = data.rect[2] - data.rect[0];
var height = data.rect[3] - data.rect[1];
+ // ID
+ container.setAttribute('data-annotation-id', data.id);
+
+ // Normalize rectangle
+ data.rect = Util.normalizeRect([
+ data.rect[0],
+ page.view[3] - data.rect[1] + page.view[1],
+ data.rect[2],
+ page.view[3] - data.rect[3] + page.view[1]
+ ]);
+
+ // Transform
+ CustomStyle.setProp('transform', container,
+ 'matrix(' + viewport.transform.join(',') + ')');
+ CustomStyle.setProp('transformOrigin', container,
+ -data.rect[0] + 'px ' + -data.rect[1] + 'px');
+
// Border
if (data.borderStyle.width > 0) {
// Border width
@@ -106,12 +122,18 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
}
}
- cstyle.width = width + 'px';
- cstyle.height = height + 'px';
+ // Position
+ container.style.left = data.rect[0] + 'px';
+ container.style.top = data.rect[1] + 'px';
+
+ // Size
+ container.style.width = width + 'px';
+ container.style.height = height + 'px';
+
return container;
}
- function getHtmlElementForTextWidgetAnnotation(item, commonObjs) {
+ function getHtmlElementForTextWidgetAnnotation(item, page) {
var element = document.createElement('div');
var width = item.rect[2] - item.rect[0];
var height = item.rect[3] - item.rect[1];
@@ -127,7 +149,7 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
content.style.display = 'table-cell';
var fontObj = item.fontRefName ?
- commonObjs.getData(item.fontRefName) : null;
+ page.commonObjs.getData(item.fontRefName) : null;
setTextStyles(content, item, fontObj);
element.appendChild(content);
@@ -135,7 +157,7 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
return element;
}
- function getHtmlElementForTextAnnotation(item) {
+ function getHtmlElementForTextAnnotation(item, page, viewport) {
var rect = item.rect;
// sanity check because of OOo-generated PDFs
@@ -146,7 +168,7 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
rect[2] = rect[0] + (rect[3] - rect[1]); // make it square
}
- var container = getContainer(item);
+ var container = getContainer(item, page, viewport);
container.className = 'annotText';
var image = document.createElement('img');
@@ -252,8 +274,8 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
return container;
}
- function getHtmlElementForLinkAnnotation(item) {
- var container = getContainer(item);
+ function getHtmlElementForLinkAnnotation(item, page, viewport) {
+ var container = getContainer(item, page, viewport);
container.className = 'annotLink';
var link = document.createElement('a');
@@ -268,14 +290,14 @@ var AnnotationLayer = (function AnnotationLayerClosure() {
return container;
}
- function getHtmlElement(data, objs) {
+ function getHtmlElement(data, page, viewport) {
switch (data.annotationType) {
case AnnotationType.WIDGET:
- return getHtmlElementForTextWidgetAnnotation(data, objs);
+ return getHtmlElementForTextWidgetAnnotation(data, page);
case AnnotationType.TEXT:
- return getHtmlElementForTextAnnotation(data);
+ return getHtmlElementForTextAnnotation(data, page, viewport);
case AnnotationType.LINK:
- return getHtmlElementForLinkAnnotation(data);
+ return getHtmlElementForLinkAnnotation(data, page, viewport);
default:
throw new Error('Unsupported annotationType: ' + data.annotationType);
}
diff --git a/web/annotations_layer_builder.css b/web/annotations_layer_builder.css
index 19974ac..dc5a161 100644
--- a/web/annotations_layer_builder.css
+++ b/web/annotations_layer_builder.css
@@ -13,6 +13,10 @@
* limitations under the License.
*/
+.annotationLayer section {
+ position: absolute;
+}
+
.annotationLayer .annotLink > a:hover {
opacity: 0.2;
background: #ff0;
diff --git a/web/annotations_layer_builder.js b/web/annotations_layer_builder.js
index 99d05c6..5a72873 100644
--- a/web/annotations_layer_builder.js
+++ b/web/annotations_layer_builder.js
@@ -40,6 +40,7 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
this.div = null;
}
+
AnnotationsLayerBuilder.prototype =
/** @lends AnnotationsLayerBuilder.prototype */ {
@@ -81,8 +82,6 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
pdfPage.getAnnotations(getAnnotationsParams).then(
function (annotationsData) {
viewport = viewport.clone({ dontFlip: true });
- var transform = viewport.transform;
- var transformStr = 'matrix(' + transform.join(',') + ')';
var data, element, i, ii;
if (self.div) {
@@ -91,9 +90,10 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
for (i = 0, ii = annotationsData.length; i < ii; i++) {
data = annotationsData[i];
element = self.div.querySelector(
- '[data-annotation-id="' + data.id + '"]');
+ '[data-annotation-id="' + data.id + '"]');
if (element) {
- CustomStyle.setProp('transform', element, transformStr);
+ CustomStyle.setProp('transform', element,
+ 'matrix(' + viewport.transform.join(',') + ')');
}
}
// See PDFPageView.reset()
@@ -105,29 +105,12 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
continue;
}
- element = PDFJS.AnnotationLayer.getHtmlElement(data,
- pdfPage.commonObjs);
- element.setAttribute('data-annotation-id', data.id);
+ element = PDFJS.AnnotationLayer.getHtmlElement(data, pdfPage,
+ viewport);
if (typeof mozL10n !== 'undefined') {
mozL10n.translate(element);
}
- var rect = data.rect;
- var view = pdfPage.view;
- rect = PDFJS.Util.normalizeRect([
- rect[0],
- view[3] - rect[1] + view[1],
- rect[2],
- view[3] - rect[3] + view[1]
- ]);
- element.style.left = rect[0] + 'px';
- element.style.top = rect[1] + 'px';
- element.style.position = 'absolute';
-
- CustomStyle.setProp('transform', element, transformStr);
- var transformOriginStr = -rect[0] + 'px ' + -rect[1] + 'px';
- CustomStyle.setProp('transformOrigin', element, transformOriginStr);
-
if (data.subtype === 'Link' && !data.url) {
var link = element.getElementsByTagName('a')[0];
if (link) {
@@ -159,6 +142,7 @@ var AnnotationsLayerBuilder = (function AnnotationsLayerBuilderClosure() {
this.div.setAttribute('hidden', 'true');
}
};
+
return AnnotationsLayerBuilder;
})();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list