|
|
@ -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() { |
|
|
|
var TempImageFactory = function TempImageFactoryClosure() { |
|
|
|
function getTempCanvas(width, height) { |
|
|
|
var tempCanvasCache = null; |
|
|
|
var tempCanvas = PDFThumbnailView.tempImageCache; |
|
|
|
return { |
|
|
|
if (!tempCanvas) { |
|
|
|
getCanvas: function getCanvas(width, height) { |
|
|
|
tempCanvas = document.createElement('canvas'); |
|
|
|
var tempCanvas = tempCanvasCache; |
|
|
|
PDFThumbnailView.tempImageCache = tempCanvas; |
|
|
|
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 PDFThumbnailView = function PDFThumbnailViewClosure() { |
|
|
|
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; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
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; |