|
@@ -27,23 +27,36 @@ var _pdf_rendering_queue = require('./pdf_rendering_queue');
|
|
|
|
|
|
var THUMBNAIL_WIDTH = 98;
|
|
var THUMBNAIL_WIDTH = 98;
|
|
var THUMBNAIL_CANVAS_BORDER_WIDTH = 1;
|
|
var THUMBNAIL_CANVAS_BORDER_WIDTH = 1;
|
|
-var PDFThumbnailView = function PDFThumbnailViewClosure() {
|
|
|
|
- function getTempCanvas(width, height) {
|
|
|
|
- var tempCanvas = PDFThumbnailView.tempImageCache;
|
|
|
|
- if (!tempCanvas) {
|
|
|
|
- tempCanvas = document.createElement('canvas');
|
|
|
|
- PDFThumbnailView.tempImageCache = tempCanvas;
|
|
|
|
|
|
+var TempImageFactory = function TempImageFactoryClosure() {
|
|
|
|
+ var tempCanvasCache = null;
|
|
|
|
+ return {
|
|
|
|
+ getCanvas: function getCanvas(width, height) {
|
|
|
|
+ var tempCanvas = tempCanvasCache;
|
|
|
|
+ if (!tempCanvas) {
|
|
|
|
+ tempCanvas = document.createElement('canvas');
|
|
|
|
+ tempCanvasCache = tempCanvas;
|
|
|
|
+ }
|
|
|
|
+ tempCanvas.width = width;
|
|
|
|
+ tempCanvas.height = height;
|
|
|
|
+ tempCanvas.mozOpaque = true;
|
|
|
|
+ var ctx = tempCanvas.getContext('2d', { alpha: false });
|
|
|
|
+ ctx.save();
|
|
|
|
+ ctx.fillStyle = 'rgb(255, 255, 255)';
|
|
|
|
+ ctx.fillRect(0, 0, width, height);
|
|
|
|
+ ctx.restore();
|
|
|
|
+ return tempCanvas;
|
|
|
|
+ },
|
|
|
|
+ destroyCanvas: function destroyCanvas() {
|
|
|
|
+ var tempCanvas = tempCanvasCache;
|
|
|
|
+ if (tempCanvas) {
|
|
|
|
+ tempCanvas.width = 0;
|
|
|
|
+ tempCanvas.height = 0;
|
|
|
|
+ }
|
|
|
|
+ tempCanvasCache = null;
|
|
}
|
|
}
|
|
- tempCanvas.width = width;
|
|
|
|
- tempCanvas.height = height;
|
|
|
|
- tempCanvas.mozOpaque = true;
|
|
|
|
- var ctx = tempCanvas.getContext('2d', { alpha: false });
|
|
|
|
- ctx.save();
|
|
|
|
- ctx.fillStyle = 'rgb(255, 255, 255)';
|
|
|
|
- ctx.fillRect(0, 0, width, height);
|
|
|
|
- ctx.restore();
|
|
|
|
- return tempCanvas;
|
|
|
|
- }
|
|
|
|
|
|
+ };
|
|
|
|
+}();
|
|
|
|
+var PDFThumbnailView = function PDFThumbnailViewClosure() {
|
|
function PDFThumbnailView(options) {
|
|
function PDFThumbnailView(options) {
|
|
var container = options.container;
|
|
var container = options.container;
|
|
var id = options.id;
|
|
var id = options.id;
|
|
@@ -269,7 +282,7 @@ var PDFThumbnailView = function PDFThumbnailViewClosure() {
|
|
var MAX_NUM_SCALING_STEPS = 3;
|
|
var MAX_NUM_SCALING_STEPS = 3;
|
|
var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;
|
|
var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;
|
|
var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;
|
|
var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;
|
|
- var reducedImage = getTempCanvas(reducedWidth, reducedHeight);
|
|
|
|
|
|
+ var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight);
|
|
var reducedImageCtx = reducedImage.getContext('2d');
|
|
var reducedImageCtx = reducedImage.getContext('2d');
|
|
while (reducedWidth > img.width || reducedHeight > img.height) {
|
|
while (reducedWidth > img.width || reducedHeight > img.height) {
|
|
reducedWidth >>= 1;
|
|
reducedWidth >>= 1;
|
|
@@ -301,7 +314,9 @@ var PDFThumbnailView = function PDFThumbnailViewClosure() {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
+ PDFThumbnailView.cleanup = function () {
|
|
|
|
+ TempImageFactory.destroyCanvas();
|
|
|
|
+ };
|
|
return PDFThumbnailView;
|
|
return PDFThumbnailView;
|
|
}();
|
|
}();
|
|
-PDFThumbnailView.tempImageCache = null;
|
|
|
|
exports.PDFThumbnailView = PDFThumbnailView;
|
|
exports.PDFThumbnailView = PDFThumbnailView;
|