[Pkg-javascript-commits] [pdf.js] 08/116: Refactors Cache into PDFPageViewBuffer
David Prévot
taffit at moszumanska.debian.org
Fri Mar 6 16:19:55 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 b930228788c64414d6040bca6941cc734158df31
Author: Yury Delendik <ydelendik at mozilla.com>
Date: Mon Sep 29 11:32:45 2014 -0500
Refactors Cache into PDFPageViewBuffer
---
web/pdf_page_view.js | 12 ++++++------
web/pdf_viewer.js | 38 ++++++++++++++++++++++++++++++++------
web/ui_utils.js | 21 ---------------------
3 files changed, 38 insertions(+), 33 deletions(-)
diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js
index 3ebe414..6c8ea8c 100644
--- a/web/pdf_page_view.js
+++ b/web/pdf_page_view.js
@@ -25,7 +25,6 @@
* @property {number} scale - The page scale display.
* @property {PageViewport} defaultViewport - The page viewport.
* @property {PDFRenderingQueue} renderingQueue - The rendering queue object.
- * @property {Cache} cache - The page cache.
* @property {IPDFTextLayerFactory} textLayerFactory
* @property {IPDFAnnotationsLayerFactory} annotationsLayerFactory
*/
@@ -45,7 +44,6 @@ var PDFPageView = (function PDFPageViewClosure() {
var scale = options.scale;
var defaultViewport = options.defaultViewport;
var renderingQueue = options.renderingQueue;
- var cache = options.cache;
var textLayerFactory = options.textLayerFactory;
var annotationsLayerFactory = options.annotationsLayerFactory;
@@ -59,13 +57,15 @@ var PDFPageView = (function PDFPageViewClosure() {
this.hasRestrictedScaling = false;
this.renderingQueue = renderingQueue;
- this.cache = cache;
this.textLayerFactory = textLayerFactory;
this.annotationsLayerFactory = annotationsLayerFactory;
this.renderingState = RenderingStates.INITIAL;
this.resume = null;
+ this.onBeforeDraw = null;
+ this.onAfterDraw = null;
+
this.textLayer = null;
this.zoomLayer = null;
@@ -447,9 +447,9 @@ var PDFPageView = (function PDFPageViewClosure() {
}
div.setAttribute('data-loaded', true);
- // Add the page to the cache at the start of drawing. That way it can be
- // evicted from the cache and destroyed even if we pause its rendering.
- this.cache.push(this);
+ if (self.onBeforeDraw) {
+ self.onBeforeDraw();
+ }
},
beforePrint: function PDFPageView_beforePrint() {
diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js
index 42e9efa..1ad1c0c 100644
--- a/web/pdf_viewer.js
+++ b/web/pdf_viewer.js
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- /*globals watchScroll, Cache, DEFAULT_CACHE_SIZE, PDFPageView, UNKNOWN_SCALE,
+ /*globals watchScroll, PDFPageView, UNKNOWN_SCALE,
SCROLLBAR_PADDING, VERTICAL_PADDING, MAX_AUTO_SCALE, CSS_UNITS,
DEFAULT_SCALE, scrollIntoView, getVisibleElements, RenderingStates,
PDFJS, Promise, TextLayerBuilder, PDFRenderingQueue,
@@ -30,6 +30,7 @@ var PresentationModeState = {
};
var IGNORE_CURRENT_POSITION_ON_ZOOM = false;
+var DEFAULT_CACHE_SIZE = 10;
//#include pdf_rendering_queue.js
//#include pdf_page_view.js
@@ -52,6 +53,26 @@ var IGNORE_CURRENT_POSITION_ON_ZOOM = false;
* @implements {IRenderableView}
*/
var PDFViewer = (function pdfViewer() {
+ function PDFPageViewBuffer(size) {
+ var data = [];
+ this.push = function cachePush(view) {
+ var i = data.indexOf(view);
+ if (i >= 0) {
+ data.splice(i, 1);
+ }
+ data.push(view);
+ if (data.length > size) {
+ data.shift().destroy();
+ }
+ };
+ this.resize = function (newSize) {
+ size = newSize;
+ while (data.length > size) {
+ data.shift().destroy();
+ }
+ };
+ }
+
/**
* @constructs PDFViewer
* @param {PDFViewerOptions} options
@@ -212,7 +233,13 @@ var PDFViewer = (function pdfViewer() {
});
this.onePageRendered = onePageRendered;
- var bindOnAfterDraw = function (pageView) {
+ var bindOnAfterAndBeforeDraw = function (pageView) {
+ pageView.onBeforeDraw = function pdfViewLoadOnBeforeDraw() {
+ // Add the page to the buffer at the start of drawing. That way it can
+ // be evicted from the buffer and destroyed even if we pause its
+ // rendering.
+ self._buffer.push(this);
+ };
// when page is painted, using the image as thumbnail base
pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() {
if (!isOnePageRenderedResolved) {
@@ -246,11 +273,10 @@ var PDFViewer = (function pdfViewer() {
scale: scale,
defaultViewport: viewport.clone(),
renderingQueue: this.renderingQueue,
- cache: this.cache,
textLayerFactory: textLayerFactory,
annotationsLayerFactory: this
});
- bindOnAfterDraw(pageView);
+ bindOnAfterAndBeforeDraw(pageView);
this.pages.push(pageView);
}
@@ -291,11 +317,11 @@ var PDFViewer = (function pdfViewer() {
},
_resetView: function () {
- this.cache = new Cache(DEFAULT_CACHE_SIZE);
this.pages = [];
this._currentPageNumber = 1;
this._currentScale = UNKNOWN_SCALE;
this._currentScaleValue = null;
+ this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);
this.location = null;
this._pagesRotation = 0;
this._pagesRequests = [];
@@ -538,7 +564,7 @@ var PDFViewer = (function pdfViewer() {
var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE,
2 * visiblePages.length + 1);
- this.cache.resize(suggestedCacheSize);
+ this._buffer.resize(suggestedCacheSize);
this.renderingQueue.renderHighestPriority(visible);
diff --git a/web/ui_utils.js b/web/ui_utils.js
index b4f2d73..3c32c59 100644
--- a/web/ui_utils.js
+++ b/web/ui_utils.js
@@ -22,7 +22,6 @@ var UNKNOWN_SCALE = 0;
var MAX_AUTO_SCALE = 1.25;
var SCROLLBAR_PADDING = 40;
var VERTICAL_PADDING = 5;
-var DEFAULT_CACHE_SIZE = 10;
// optimised CSS custom property getter/setter
var CustomStyle = (function CustomStyleClosure() {
@@ -349,23 +348,3 @@ var ProgressBar = (function ProgressBarClosure() {
return ProgressBar;
})();
-
-var Cache = function cacheCache(size) {
- var data = [];
- this.push = function cachePush(view) {
- var i = data.indexOf(view);
- if (i >= 0) {
- data.splice(i, 1);
- }
- data.push(view);
- if (data.length > size) {
- data.shift().destroy();
- }
- };
- this.resize = function (newSize) {
- size = newSize;
- while (data.length > size) {
- data.shift().destroy();
- }
- };
-};
--
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