diff --git a/web/annotations_layer_builder.css b/web/annotations_layer_builder.css new file mode 100644 index 000000000..a3490eac0 --- /dev/null +++ b/web/annotations_layer_builder.css @@ -0,0 +1,65 @@ +/* Copyright 2014 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.annotationLayer .annotLink > a:hover { + opacity: 0.2; + background: #ff0; + box-shadow: 0px 2px 10px #ff0; +} + +.annotationLayer .annotText > img { + position: absolute; + cursor: pointer; +} + +.annotationLayer .annotTextContentWrapper { + position: absolute; + width: 20em; +} + +.annotationLayer .annotTextContent { + z-index: 200; + float: left; + max-width: 20em; + background-color: #FFFF99; + box-shadow: 0px 2px 5px #333; + border-radius: 2px; + padding: 0.6em; + cursor: pointer; +} + +.annotationLayer .annotTextContent > h1 { + font-size: 1em; + border-bottom: 1px solid #000000; + padding-bottom: 0.2em; +} + +.annotationLayer .annotTextContent > p { + padding-top: 0.2em; +} + +.annotationLayer .annotLink > a { + position: absolute; + font-size: 1em; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationLayer .annotLink > a /* -ms-a */ { + background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAA\ + LAAAAAABAAEAAAIBRAA7") 0 0 repeat; +} diff --git a/web/annotations_layer_builder.js b/web/annotations_layer_builder.js index b5ef814ec..8b4e66cb1 100644 --- a/web/annotations_layer_builder.js +++ b/web/annotations_layer_builder.js @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/*globals PDFJS, CustomStyle, mozL10n */ +/*globals PDFJS, CustomStyle, mozL10n, SimpleLinkService */ 'use strict'; @@ -171,7 +171,8 @@ DefaultAnnotationsLayerFactory.prototype = { createAnnotationsLayerBuilder: function (pageDiv, pdfPage) { return new AnnotationsLayerBuilder({ pageDiv: pageDiv, - pdfPage: pdfPage + pdfPage: pdfPage, + linkService: new SimpleLinkService(), }); } }; diff --git a/web/pdf_viewer.css b/web/pdf_viewer.css index 47f2450b6..130047e34 100644 --- a/web/pdf_viewer.css +++ b/web/pdf_viewer.css @@ -13,6 +13,7 @@ * limitations under the License. */ @import url(text_layer_builder.css); +@import url(annotations_layer_builder.css); .pdfViewer .canvasWrapper { overflow: hidden; @@ -51,12 +52,6 @@ background: url('images/loading-icon.gif') center no-repeat; } -.pdfViewer .page .annotLink > a:hover { - opacity: 0.2; - background: #ff0; - box-shadow: 0px 2px 10px #ff0; -} - .pdfPresentationMode:-webkit-full-screen .pdfViewer .page { margin-bottom: 100%; border: 0; @@ -76,48 +71,3 @@ margin-bottom: 100%; border: 0; } - -.pdfViewer .page .annotText > img { - position: absolute; - cursor: pointer; -} - -.pdfViewer .page .annotTextContentWrapper { - position: absolute; - width: 20em; -} - -.pdfViewer .page .annotTextContent { - z-index: 200; - float: left; - max-width: 20em; - background-color: #FFFF99; - box-shadow: 0px 2px 5px #333; - border-radius: 2px; - padding: 0.6em; - cursor: pointer; -} - -.pdfViewer .page .annotTextContent > h1 { - font-size: 1em; - border-bottom: 1px solid #000000; - padding-bottom: 0.2em; -} - -.pdfViewer .page .annotTextContent > p { - padding-top: 0.2em; -} - -.pdfViewer .page .annotLink > a { - position: absolute; - font-size: 1em; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.pdfViewer .page .annotLink > a /* -ms-a */ { - background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAA\ - LAAAAAABAAEAAAIBRAA7") 0 0 repeat; -} diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 861687626..4b847782d 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -93,7 +93,7 @@ var PDFViewer = (function pdfViewer() { function PDFViewer(options) { this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; - this.linkService = options.linkService || new SimpleLinkService(this); + this.linkService = options.linkService || new SimpleLinkService(); this.removePageBorders = options.removePageBorders || false; this.defaultRenderingQueue = !options.renderingQueue; @@ -468,14 +468,14 @@ var PDFViewer = (function pdfViewer() { var pageView = this._pages[pageNumber - 1]; if (this.isInPresentationMode) { - if (this.linkService.page !== pageView.id) { + if (this._currentPageNumber !== pageView.id) { // Avoid breaking getVisiblePages in presentation mode. - this.linkService.page = pageView.id; + this.currentPageNumber = pageView.id; return; } dest = null; // Fixes the case when PDF has different page sizes. - this._setScale(this.currentScaleValue, true); + this._setScale(this._currentScaleValue, true); } if (!dest) { scrollIntoView(pageView.div); @@ -523,13 +523,12 @@ var PDFViewer = (function pdfViewer() { y = dest[3]; width = dest[4] - x; height = dest[5] - y; - var viewerContainer = this.container; var hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING; var vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING; - widthScale = (viewerContainer.clientWidth - hPadding) / + widthScale = (this.container.clientWidth - hPadding) / width / CSS_UNITS; - heightScale = (viewerContainer.clientHeight - vPadding) / + heightScale = (this.container.clientHeight - vPadding) / height / CSS_UNITS; scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); break; @@ -758,22 +757,19 @@ var PDFViewer = (function pdfViewer() { })(); var SimpleLinkService = (function SimpleLinkServiceClosure() { - function SimpleLinkService(pdfViewer) { - this.pdfViewer = pdfViewer; - } + function SimpleLinkService() {} + SimpleLinkService.prototype = { /** * @returns {number} */ get page() { - return this.pdfViewer.currentPageNumber; + return 0; }, /** * @param {number} value */ - set page(value) { - this.pdfViewer.currentPageNumber = value; - }, + set page(value) {}, /** * @param dest - The PDF destination object. */