[Pkg-javascript-commits] [pdf.js] 63/116: Move PDFThumbnailViewer to its own file
David Prévot
taffit at moszumanska.debian.org
Fri Mar 6 16:20:01 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 c55dcf19a02b7fc718c25ddcef2139c1469a5a17
Author: Jonas Jenwald <jonas.jenwald at gmail.com>
Date: Sat Jan 24 13:51:55 2015 +0100
Move PDFThumbnailViewer to its own file
---
web/pdf_thumbnail_viewer.js | 180 ++++++++++++++++++++++++++++++++++++++++++++
web/thumbnail_view.js | 160 +--------------------------------------
web/viewer.html | 1 +
web/viewer.js | 2 +-
4 files changed, 183 insertions(+), 160 deletions(-)
diff --git a/web/pdf_thumbnail_viewer.js b/web/pdf_thumbnail_viewer.js
new file mode 100644
index 0000000..570fbb3
--- /dev/null
+++ b/web/pdf_thumbnail_viewer.js
@@ -0,0 +1,180 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+/* Copyright 2012 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.
+ */
+/* globals watchScroll, getVisibleElements, scrollIntoView, ThumbnailView,
+ Promise */
+
+'use strict';
+
+var THUMBNAIL_SCROLL_MARGIN = -19;
+
+//#include thumbnail_view.js
+
+/**
+ * @typedef {Object} PDFThumbnailViewerOptions
+ * @property {HTMLDivElement} container - The container for the thumbs elements.
+ * @property {IPDFLinkService} linkService - The navigation/linking service.
+ * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.
+ */
+
+/**
+ * Simple viewer control to display thumbs for pages.
+ * @class
+ */
+var PDFThumbnailViewer = (function pdfThumbnailViewer() {
+ /**
+ * @constructs
+ * @param {PDFThumbnailViewerOptions} options
+ */
+ function PDFThumbnailViewer(options) {
+ this.container = options.container;
+ this.renderingQueue = options.renderingQueue;
+ this.linkService = options.linkService;
+
+ this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));
+ this._resetView();
+ }
+
+ PDFThumbnailViewer.prototype = {
+ _scrollUpdated: function PDFThumbnailViewer_scrollUpdated() {
+ this.renderingQueue.renderHighestPriority();
+ },
+
+ getThumbnail: function PDFThumbnailViewer_getThumbnail(index) {
+ return this.thumbnails[index];
+ },
+
+ _getVisibleThumbs: function PDFThumbnailViewer_getVisibleThumbs() {
+ return getVisibleElements(this.container, this.thumbnails);
+ },
+
+ scrollThumbnailIntoView: function (page) {
+ var selected = document.querySelector('.thumbnail.selected');
+ if (selected) {
+ selected.classList.remove('selected');
+ }
+ var thumbnail = document.getElementById('thumbnailContainer' + page);
+ thumbnail.classList.add('selected');
+ var visibleThumbs = this._getVisibleThumbs();
+ var numVisibleThumbs = visibleThumbs.views.length;
+
+ // If the thumbnail isn't currently visible, scroll it into view.
+ if (numVisibleThumbs > 0) {
+ var first = visibleThumbs.first.id;
+ // Account for only one thumbnail being visible.
+ var last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first);
+ if (page <= first || page >= last) {
+ scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN });
+ }
+ }
+ },
+
+ get pagesRotation() {
+ return this._pagesRotation;
+ },
+
+ set pagesRotation(rotation) {
+ this._pagesRotation = rotation;
+ for (var i = 0, l = this.thumbnails.length; i < l; i++) {
+ var thumb = this.thumbnails[i];
+ thumb.update(rotation);
+ }
+ },
+
+ cleanup: function PDFThumbnailViewer_cleanup() {
+ ThumbnailView.tempImageCache = null;
+ },
+
+ _resetView: function () {
+ this.thumbnails = [];
+ this._pagesRotation = 0;
+ this._pagesRequests = [];
+ },
+
+ setDocument: function (pdfDocument) {
+ if (this.pdfDocument) {
+ // cleanup of the elements and views
+ var thumbsView = this.container;
+ while (thumbsView.hasChildNodes()) {
+ thumbsView.removeChild(thumbsView.lastChild);
+ }
+ this._resetView();
+ }
+
+ this.pdfDocument = pdfDocument;
+ if (!pdfDocument) {
+ return Promise.resolve();
+ }
+
+ return pdfDocument.getPage(1).then(function (firstPage) {
+ var pagesCount = pdfDocument.numPages;
+ var viewport = firstPage.getViewport(1.0);
+ for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
+ var thumbnail = new ThumbnailView(this.container, pageNum,
+ viewport.clone(), this.linkService,
+ this.renderingQueue);
+ this.thumbnails.push(thumbnail);
+ }
+ }.bind(this));
+ },
+
+ /**
+ * @param {PDFPageView} pageView
+ * @returns {PDFPage}
+ * @private
+ */
+ _ensurePdfPageLoaded: function (thumbView) {
+ if (thumbView.pdfPage) {
+ return Promise.resolve(thumbView.pdfPage);
+ }
+ var pageNumber = thumbView.id;
+ if (this._pagesRequests[pageNumber]) {
+ return this._pagesRequests[pageNumber];
+ }
+ var promise = this.pdfDocument.getPage(pageNumber).then(
+ function (pdfPage) {
+ thumbView.setPdfPage(pdfPage);
+ this._pagesRequests[pageNumber] = null;
+ return pdfPage;
+ }.bind(this));
+ this._pagesRequests[pageNumber] = promise;
+ return promise;
+ },
+
+ ensureThumbnailVisible:
+ function PDFThumbnailViewer_ensureThumbnailVisible(page) {
+ // Ensure that the thumbnail of the current page is visible
+ // when switching from another view.
+ scrollIntoView(document.getElementById('thumbnailContainer' + page));
+ },
+
+ forceRendering: function () {
+ var visibleThumbs = this._getVisibleThumbs();
+ var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs,
+ this.thumbnails,
+ this.scroll.down);
+ if (thumbView) {
+ this._ensurePdfPageLoaded(thumbView).then(function () {
+ this.renderingQueue.renderView(thumbView);
+ }.bind(this));
+ return true;
+ }
+ return false;
+ }
+ };
+
+ return PDFThumbnailViewer;
+})();
diff --git a/web/thumbnail_view.js b/web/thumbnail_view.js
index 9dacb68..ee304a8 100644
--- a/web/thumbnail_view.js
+++ b/web/thumbnail_view.js
@@ -14,12 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* globals mozL10n, RenderingStates, Promise, scrollIntoView,
- watchScroll, getVisibleElements */
+/* globals mozL10n, RenderingStates, Promise */
'use strict';
-var THUMBNAIL_SCROLL_MARGIN = -19;
var THUMBNAIL_CANVAS_BORDER_WIDTH = 1;
/**
@@ -252,159 +250,3 @@ var ThumbnailView = function thumbnailView(container, id, defaultViewport,
};
ThumbnailView.tempImageCache = null;
-
-/**
- * @typedef {Object} PDFThumbnailViewerOptions
- * @property {HTMLDivElement} container - The container for the thumbs elements.
- * @property {IPDFLinkService} linkService - The navigation/linking service.
- * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.
- */
-
-/**
- * Simple viewer control to display thumbs for pages.
- * @class
- */
-var PDFThumbnailViewer = (function pdfThumbnailViewer() {
- /**
- * @constructs
- * @param {PDFThumbnailViewerOptions} options
- */
- function PDFThumbnailViewer(options) {
- this.container = options.container;
- this.renderingQueue = options.renderingQueue;
- this.linkService = options.linkService;
-
- this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));
- this._resetView();
- }
-
- PDFThumbnailViewer.prototype = {
- _scrollUpdated: function PDFThumbnailViewer_scrollUpdated() {
- this.renderingQueue.renderHighestPriority();
- },
-
- getThumbnail: function PDFThumbnailViewer_getThumbnail(index) {
- return this.thumbnails[index];
- },
-
- _getVisibleThumbs: function PDFThumbnailViewer_getVisibleThumbs() {
- return getVisibleElements(this.container, this.thumbnails);
- },
-
- scrollThumbnailIntoView: function (page) {
- var selected = document.querySelector('.thumbnail.selected');
- if (selected) {
- selected.classList.remove('selected');
- }
- var thumbnail = document.getElementById('thumbnailContainer' + page);
- thumbnail.classList.add('selected');
- var visibleThumbs = this._getVisibleThumbs();
- var numVisibleThumbs = visibleThumbs.views.length;
-
- // If the thumbnail isn't currently visible, scroll it into view.
- if (numVisibleThumbs > 0) {
- var first = visibleThumbs.first.id;
- // Account for only one thumbnail being visible.
- var last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first);
- if (page <= first || page >= last) {
- scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN });
- }
- }
- },
-
- get pagesRotation() {
- return this._pagesRotation;
- },
-
- set pagesRotation(rotation) {
- this._pagesRotation = rotation;
- for (var i = 0, l = this.thumbnails.length; i < l; i++) {
- var thumb = this.thumbnails[i];
- thumb.update(rotation);
- }
- },
-
- cleanup: function PDFThumbnailViewer_cleanup() {
- ThumbnailView.tempImageCache = null;
- },
-
- _resetView: function () {
- this.thumbnails = [];
- this._pagesRotation = 0;
- this._pagesRequests = [];
- },
-
- setDocument: function (pdfDocument) {
- if (this.pdfDocument) {
- // cleanup of the elements and views
- var thumbsView = this.container;
- while (thumbsView.hasChildNodes()) {
- thumbsView.removeChild(thumbsView.lastChild);
- }
- this._resetView();
- }
-
- this.pdfDocument = pdfDocument;
- if (!pdfDocument) {
- return Promise.resolve();
- }
-
- return pdfDocument.getPage(1).then(function (firstPage) {
- var pagesCount = pdfDocument.numPages;
- var viewport = firstPage.getViewport(1.0);
- for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) {
- var thumbnail = new ThumbnailView(this.container, pageNum,
- viewport.clone(), this.linkService,
- this.renderingQueue);
- this.thumbnails.push(thumbnail);
- }
- }.bind(this));
- },
-
- /**
- * @param {PDFPageView} pageView
- * @returns {PDFPage}
- * @private
- */
- _ensurePdfPageLoaded: function (thumbView) {
- if (thumbView.pdfPage) {
- return Promise.resolve(thumbView.pdfPage);
- }
- var pageNumber = thumbView.id;
- if (this._pagesRequests[pageNumber]) {
- return this._pagesRequests[pageNumber];
- }
- var promise = this.pdfDocument.getPage(pageNumber).then(
- function (pdfPage) {
- thumbView.setPdfPage(pdfPage);
- this._pagesRequests[pageNumber] = null;
- return pdfPage;
- }.bind(this));
- this._pagesRequests[pageNumber] = promise;
- return promise;
- },
-
- ensureThumbnailVisible:
- function PDFThumbnailViewer_ensureThumbnailVisible(page) {
- // Ensure that the thumbnail of the current page is visible
- // when switching from another view.
- scrollIntoView(document.getElementById('thumbnailContainer' + page));
- },
-
- forceRendering: function () {
- var visibleThumbs = this._getVisibleThumbs();
- var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs,
- this.thumbnails,
- this.scroll.down);
- if (thumbView) {
- this._ensurePdfPageLoaded(thumbView).then(function () {
- this.renderingQueue.renderView(thumbView);
- }.bind(this));
- return true;
- }
- return false;
- }
- };
-
- return PDFThumbnailViewer;
-})();
diff --git a/web/viewer.html b/web/viewer.html
index d6588d9..8940589 100644
--- a/web/viewer.html
+++ b/web/viewer.html
@@ -74,6 +74,7 @@ http://sourceforge.net/adobe/cmap/wiki/License/
<script src="annotations_layer_builder.js"></script>
<script src="pdf_viewer.js"></script>
<script src="thumbnail_view.js"></script>
+ <script src="pdf_thumbnail_viewer.js"></script>
<script src="document_outline_view.js"></script>
<script src="document_attachments_view.js"></script>
<script src="pdf_find_bar.js"></script>
diff --git a/web/viewer.js b/web/viewer.js
index 806c9f0..d47962d 100644
--- a/web/viewer.js
+++ b/web/viewer.js
@@ -85,6 +85,7 @@ var mozL10n = document.mozL10n || document.webL10n;
//#include password_prompt.js
//#include document_properties.js
//#include pdf_viewer.js
+//#include pdf_thumbnail_viewer.js
var PDFViewerApplication = {
initialBookmark: document.location.hash.substring(1),
@@ -1389,7 +1390,6 @@ var PDFViewerApplication = {
window.PDFView = PDFViewerApplication; // obsolete name, using it as an alias
//#endif
-//#include thumbnail_view.js
//#include document_outline_view.js
//#include document_attachments_view.js
--
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