Adds types definitions (jsdoc) for the PDFViewer code.
This commit is contained in:
parent
3773972dce
commit
a89bba35b2
77
web/interfaces.js
Normal file
77
web/interfaces.js
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @interface
|
||||||
|
*/
|
||||||
|
function IPDFLinkService() {}
|
||||||
|
IPDFLinkService.prototype = {
|
||||||
|
/**
|
||||||
|
* @returns {number}
|
||||||
|
*/
|
||||||
|
get page() {},
|
||||||
|
/**
|
||||||
|
* @param {number} value
|
||||||
|
*/
|
||||||
|
set page(value) {},
|
||||||
|
/**
|
||||||
|
* @param dest - The PDF destination object.
|
||||||
|
*/
|
||||||
|
navigateTo: function (dest) {},
|
||||||
|
/**
|
||||||
|
* @param dest - The PDF destination object.
|
||||||
|
* @returns {string} The hyperlink to the PDF object.
|
||||||
|
*/
|
||||||
|
getDestinationHash: function (dest) {},
|
||||||
|
/**
|
||||||
|
* @param hash - The PDF parameters/hash.
|
||||||
|
* @returns {string} The hyperlink to the PDF object.
|
||||||
|
*/
|
||||||
|
getAnchorUrl: function (hash) {},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @interface
|
||||||
|
*/
|
||||||
|
function IRenderableView() {}
|
||||||
|
IRenderableView.prototype = {
|
||||||
|
/**
|
||||||
|
* @returns {string} - Unique ID for rendering queue.
|
||||||
|
*/
|
||||||
|
get renderingId() {},
|
||||||
|
/**
|
||||||
|
* @returns {RenderingStates}
|
||||||
|
*/
|
||||||
|
get renderingState() {},
|
||||||
|
/**
|
||||||
|
* @param {function} callback - The draw completion callback.
|
||||||
|
*/
|
||||||
|
draw: function (callback) {},
|
||||||
|
resume: function () {},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @interface
|
||||||
|
*/
|
||||||
|
function ILastScrollSource() {}
|
||||||
|
ILastScrollSource.prototype = {
|
||||||
|
/**
|
||||||
|
* @returns {number}
|
||||||
|
*/
|
||||||
|
get lastScroll() {},
|
||||||
|
};
|
@ -20,6 +20,20 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @param {HTMLDivElement} container - The viewer element.
|
||||||
|
* @param {number} id - The page unique ID (normally its number).
|
||||||
|
* @param {number} scale - The page scale display.
|
||||||
|
* @param {PageViewport} defaultViewport - The page viewport.
|
||||||
|
* @param {IPDFLinkService} linkService - The navigation/linking service.
|
||||||
|
* @param {PDFRenderingQueue} renderingQueue - The rendering queue object.
|
||||||
|
* @param {Cache} cache - The page cache.
|
||||||
|
* @param {PDFPageSource} pageSource
|
||||||
|
* @param {PDFViewer} viewer
|
||||||
|
*
|
||||||
|
* @implements {IRenderableView}
|
||||||
|
*/
|
||||||
var PageView = function pageView(container, id, scale, defaultViewport,
|
var PageView = function pageView(container, id, scale, defaultViewport,
|
||||||
linkService, renderingQueue, cache,
|
linkService, renderingQueue, cache,
|
||||||
pageSource, viewer) {
|
pageSource, viewer) {
|
||||||
|
@ -26,7 +26,14 @@ var RenderingStates = {
|
|||||||
FINISHED: 3
|
FINISHED: 3
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls rendering of the views for pages and thumbnails.
|
||||||
|
* @class
|
||||||
|
*/
|
||||||
var PDFRenderingQueue = (function PDFRenderingQueueClosure() {
|
var PDFRenderingQueue = (function PDFRenderingQueueClosure() {
|
||||||
|
/**
|
||||||
|
* @constructs
|
||||||
|
*/
|
||||||
function PDFRenderingQueue() {
|
function PDFRenderingQueue() {
|
||||||
this.pdfViewer = null;
|
this.pdfViewer = null;
|
||||||
this.pdfThumbnailViewer = null;
|
this.pdfThumbnailViewer = null;
|
||||||
@ -38,16 +45,26 @@ var PDFRenderingQueue = (function PDFRenderingQueueClosure() {
|
|||||||
this.isThumbnailViewEnabled = false;
|
this.isThumbnailViewEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFRenderingQueue.prototype = {
|
PDFRenderingQueue.prototype = /** @lends PDFRenderingQueue.prototype */ {
|
||||||
|
/**
|
||||||
|
* @param {PDFViewer} pdfViewer
|
||||||
|
*/
|
||||||
setViewer: function PDFRenderingQueue_setViewer(pdfViewer) {
|
setViewer: function PDFRenderingQueue_setViewer(pdfViewer) {
|
||||||
this.pdfViewer = pdfViewer;
|
this.pdfViewer = pdfViewer;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {PDFThumbnailViewer} pdfThumbnailViewer
|
||||||
|
*/
|
||||||
setThumbnailViewer:
|
setThumbnailViewer:
|
||||||
function PDFRenderingQueue_setThumbnailViewer(pdfThumbnailViewer) {
|
function PDFRenderingQueue_setThumbnailViewer(pdfThumbnailViewer) {
|
||||||
this.pdfThumbnailViewer = pdfThumbnailViewer;
|
this.pdfThumbnailViewer = pdfThumbnailViewer;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {IRenderableView} view
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
isHighestPriority: function PDFRenderingQueue_isHighestPriority(view) {
|
isHighestPriority: function PDFRenderingQueue_isHighestPriority(view) {
|
||||||
return this.highestPriorityPage === view.renderingId;
|
return this.highestPriorityPage === view.renderingId;
|
||||||
},
|
},
|
||||||
@ -120,13 +137,20 @@ var PDFRenderingQueue = (function PDFRenderingQueueClosure() {
|
|||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {IRenderableView} view
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
isViewFinished: function PDFRenderingQueue_isViewFinished(view) {
|
isViewFinished: function PDFRenderingQueue_isViewFinished(view) {
|
||||||
return view.renderingState === RenderingStates.FINISHED;
|
return view.renderingState === RenderingStates.FINISHED;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Render a page or thumbnail view. This calls the appropriate function
|
/**
|
||||||
// based on the views state. If the view is already rendered it will return
|
* Render a page or thumbnail view. This calls the appropriate function
|
||||||
// false.
|
* based on the views state. If the view is already rendered it will return
|
||||||
|
* false.
|
||||||
|
* @param {IRenderableView} view
|
||||||
|
*/
|
||||||
renderView: function PDFRenderingQueue_renderView(view) {
|
renderView: function PDFRenderingQueue_renderView(view) {
|
||||||
var state = view.renderingState;
|
var state = view.renderingState;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
@ -34,7 +34,26 @@ var IGNORE_CURRENT_POSITION_ON_ZOOM = false;
|
|||||||
//#include page_view.js
|
//#include page_view.js
|
||||||
//#include text_layer_builder.js
|
//#include text_layer_builder.js
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} PDFViewerOptions
|
||||||
|
* @property {HTMLDivElement} container - The container for the viewer element.
|
||||||
|
* @property {HTMLDivElement} viewer - (optional) The viewer element.
|
||||||
|
* @property {IPDFLinkService} linkService - The navigation/linking service.
|
||||||
|
* @property {PDFRenderingQueue} renderingQueue - (optional) The rendering
|
||||||
|
* queue object.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple viewer control to display PDF content/pages.
|
||||||
|
* @class
|
||||||
|
* @implements {ILastScrollSource}
|
||||||
|
* @implements {IRenderableView}
|
||||||
|
*/
|
||||||
var PDFViewer = (function pdfViewer() {
|
var PDFViewer = (function pdfViewer() {
|
||||||
|
/**
|
||||||
|
* @constructs PDFViewer
|
||||||
|
* @param {PDFViewerOptions} options
|
||||||
|
*/
|
||||||
function PDFViewer(options) {
|
function PDFViewer(options) {
|
||||||
this.container = options.container;
|
this.container = options.container;
|
||||||
this.viewer = options.viewer || options.container.firstElementChild;
|
this.viewer = options.viewer || options.container.firstElementChild;
|
||||||
@ -56,7 +75,7 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
this._resetView();
|
this._resetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFViewer.prototype = {
|
PDFViewer.prototype = /** @lends PDFViewer.prototype */{
|
||||||
get pagesCount() {
|
get pagesCount() {
|
||||||
return this.pages.length;
|
return this.pages.length;
|
||||||
},
|
},
|
||||||
@ -496,6 +515,12 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param textLayerDiv {HTMLDivElement}
|
||||||
|
* @param pageIndex {number}
|
||||||
|
* @param viewport {PageViewport}
|
||||||
|
* @returns {TextLayerBuilder}
|
||||||
|
*/
|
||||||
createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {
|
createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {
|
||||||
var isViewerInPresentationMode =
|
var isViewerInPresentationMode =
|
||||||
this.presentationModeState === PresentationModeState.FULLSCREEN;
|
this.presentationModeState === PresentationModeState.FULLSCREEN;
|
||||||
@ -517,13 +542,26 @@ var PDFViewer = (function pdfViewer() {
|
|||||||
return PDFViewer;
|
return PDFViewer;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PDFPage object source.
|
||||||
|
* @class
|
||||||
|
*/
|
||||||
var PDFPageSource = (function PDFPageSourceClosure() {
|
var PDFPageSource = (function PDFPageSourceClosure() {
|
||||||
|
/**
|
||||||
|
* @constructs
|
||||||
|
* @param {PDFDocument} pdfDocument
|
||||||
|
* @param {number} pageNumber
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
function PDFPageSource(pdfDocument, pageNumber) {
|
function PDFPageSource(pdfDocument, pageNumber) {
|
||||||
this.pdfDocument = pdfDocument;
|
this.pdfDocument = pdfDocument;
|
||||||
this.pageNumber = pageNumber;
|
this.pageNumber = pageNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
PDFPageSource.prototype = {
|
PDFPageSource.prototype = /** @lends PDFPageSource.prototype */ {
|
||||||
|
/**
|
||||||
|
* @returns {Promise<PDFPage>}
|
||||||
|
*/
|
||||||
getPage: function () {
|
getPage: function () {
|
||||||
return this.pdfDocument.getPage(this.pageNumber);
|
return this.pdfDocument.getPage(this.pageNumber);
|
||||||
}
|
}
|
||||||
|
@ -28,11 +28,23 @@ function isAllWhitespace(str) {
|
|||||||
return !NonWhitespaceRegexp.test(str);
|
return !NonWhitespaceRegexp.test(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} TextLayerBuilderOptions
|
||||||
|
* @property {HTMLDivElement} textLayerDiv - The text layer container.
|
||||||
|
* @property {number} pageIndex - The page index.
|
||||||
|
* @property {PageViewport} viewport - The viewport of the text layer.
|
||||||
|
* @property {ILastScrollSource} lastScrollSource - The object that records when
|
||||||
|
* last time scroll happened.
|
||||||
|
* @property {boolean} isViewerInPresentationMode
|
||||||
|
* @property {PDFFindController} findController
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TextLayerBuilder provides text-selection functionality for the PDF.
|
* TextLayerBuilder provides text-selection functionality for the PDF.
|
||||||
* It does this by creating overlay divs over the PDF text. These divs
|
* It does this by creating overlay divs over the PDF text. These divs
|
||||||
* contain text that matches the PDF text they are overlaying. This object
|
* contain text that matches the PDF text they are overlaying. This object
|
||||||
* also provides a way to highlight text that is being searched for.
|
* also provides a way to highlight text that is being searched for.
|
||||||
|
* @class
|
||||||
*/
|
*/
|
||||||
var TextLayerBuilder = (function TextLayerBuilderClosure() {
|
var TextLayerBuilder = (function TextLayerBuilderClosure() {
|
||||||
function TextLayerBuilder(options) {
|
function TextLayerBuilder(options) {
|
||||||
|
@ -21,6 +21,17 @@
|
|||||||
|
|
||||||
var THUMBNAIL_SCROLL_MARGIN = -19;
|
var THUMBNAIL_SCROLL_MARGIN = -19;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @constructor
|
||||||
|
* @param container
|
||||||
|
* @param id
|
||||||
|
* @param defaultViewport
|
||||||
|
* @param linkService
|
||||||
|
* @param renderingQueue
|
||||||
|
* @param pageSource
|
||||||
|
*
|
||||||
|
* @implements {IRenderableView}
|
||||||
|
*/
|
||||||
var ThumbnailView = function thumbnailView(container, id, defaultViewport,
|
var ThumbnailView = function thumbnailView(container, id, defaultViewport,
|
||||||
linkService, renderingQueue,
|
linkService, renderingQueue,
|
||||||
pageSource) {
|
pageSource) {
|
||||||
@ -241,7 +252,22 @@ var ThumbnailView = function thumbnailView(container, id, defaultViewport,
|
|||||||
|
|
||||||
ThumbnailView.tempImageCache = null;
|
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() {
|
var PDFThumbnailViewer = (function pdfThumbnailViewer() {
|
||||||
|
/**
|
||||||
|
* @constructs
|
||||||
|
* @param {PDFThumbnailViewerOptions} options
|
||||||
|
*/
|
||||||
function PDFThumbnailViewer(options) {
|
function PDFThumbnailViewer(options) {
|
||||||
this.container = options.container;
|
this.container = options.container;
|
||||||
this.renderingQueue = options.renderingQueue;
|
this.renderingQueue = options.renderingQueue;
|
||||||
|
@ -92,8 +92,11 @@ var PDFView = {
|
|||||||
pdfDocument: null,
|
pdfDocument: null,
|
||||||
sidebarOpen: false,
|
sidebarOpen: false,
|
||||||
printing: false,
|
printing: false,
|
||||||
|
/** @type {PDFViewer} */
|
||||||
pdfViewer: null,
|
pdfViewer: null,
|
||||||
|
/** @type {PDFThumbnailViewer} */
|
||||||
pdfThumbnailViewer: null,
|
pdfThumbnailViewer: null,
|
||||||
|
/** @type {PDFRenderingQueue} */
|
||||||
pdfRenderingQueue: null,
|
pdfRenderingQueue: null,
|
||||||
pageRotation: 0,
|
pageRotation: 0,
|
||||||
updateScaleControls: true,
|
updateScaleControls: true,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user