this.decode = dict.get('Decode', 'D');
- var mask = xref.fetchIfRef(image.dict.get('Mask'));
- var smask = xref.fetchIfRef(image.dict.get('SMask'));
+ var mask = xref.fetchIfRef(dict.get('Mask'));
+ var smask = xref.fetchIfRef(dict.get('SMask'));
if (mask) {
TODO('masked images');
'use strict';
var appPath, browser, canvas, currentTaskIdx, manifest, stdout;
+var inFlightRequests = 0;
function queryParams() {
var qs = window.location.search.substring(1);
if (r.readyState == 4) {
log('done\n');
manifest = JSON.parse(r.responseText);
- currentTaskIdx = 0, nextTask();
+ currentTaskIdx = 0;
+ nextTask();
}
};
r.send(null);
failure = 'load PDF doc : ' + e.toString();
}
- task.pageNum = 1, nextPage(task, failure);
+ task.pageNum = 1;
+ nextPage(task, failure);
}
};
r.send(null);
if (!task.pdfDoc) {
sendTaskResult(canvas.toDataURL('image/png'), task, failure);
log('done' + (failure ? ' (failed !: ' + failure + ')' : '') + '\n');
- ++currentTaskIdx, nextTask();
+ ++currentTaskIdx;
+ nextTask();
return;
}
log(' Round ' + (1 + task.round) + '\n');
task.pageNum = 1;
} else {
- ++currentTaskIdx, nextTask();
+ ++currentTaskIdx;
+ nextTask();
return;
}
}
page.startRendering(
ctx,
function(e) {
- snapshotCurrentPage(page, task, (!failure && e) ?
+ snapshotCurrentPage(task, (!failure && e) ?
('render : ' + e) : failure);
}
);
if (failure) {
// Skip right to snapshotting if there was a failure, since the
// fonts might be in an inconsistent state.
- snapshotCurrentPage(page, task, failure);
+ snapshotCurrentPage(task, failure);
}
}
-function snapshotCurrentPage(page, task, failure) {
+function snapshotCurrentPage(task, failure) {
log('done, snapshotting... ');
sendTaskResult(canvas.toDataURL('image/png'), task, failure);
var backoff = (inFlightRequests > 0) ? inFlightRequests * 10 : 0;
setTimeout(
function() {
- ++task.pageNum, nextPage(task);
+ ++task.pageNum;
+ nextPage(task);
},
backoff
);
}
}
-var inFlightRequests = 0;
function sendTaskResult(snapshot, task, failure) {
var result = { browser: browser,
id: task.id,
if (r.readyState == 4) {
inFlightRequests--;
}
- }
+ };
document.getElementById('inFlightCount').innerHTML = inFlightRequests++;
r.send(JSON.stringify(result));
}
'18': {
name: 'ExpansionFactor'
},
- '9': {
+ '19': {
name: 'initialRandomSeed'
},
'20': {
} else if (value <= 31) {
token = CFFEncodingMap[value];
} else if (value < 247) {
- token = parseInt(value) - 139;
+ token = parseInt(value, 10) - 139;
} else if (value < 251) {
token = ((value - 247) * 256) + aString[i++] + 108;
} else if (value < 255) {
while (!parsed) {
var byte = aString[i++];
- var nibbles = [parseInt(byte / 16), parseInt(byte % 16)];
+ var nibbles = [parseInt(byte / 16, 10), parseInt(byte % 16, 10)];
for (var j = 0; j < nibbles.length; j++) {
var nibble = nibbles[j];
switch (nibble) {
} else if (value <= 31) {
token = aMap[value];
} else if (value <= 246) {
- token = parseInt(value) - 139;
+ token = parseInt(value, 10) - 139;
} else if (value <= 250) {
token = ((value - 247) * 256) + aString[i++] + 108;
} else if (value <= 254) {
}
error(offsize + ' is not a valid offset size');
return null;
- };
+ }
var offsets = [];
for (var i = 0; i < count + 1; i++)
function dump(aStr) {
if (debug)
log(aStr);
- };
+ }
function parseAsToken(aString, aMap) {
var decoded = readFontDictData(aString, aMap);
}
}
}
- };
+ }
this.parse = function(aStream) {
font.set('major', aStream.getByte());
aStream.pos = charsetEntry;
var charset = readCharset(aStream, charStrings);
}
- }
+ };
};
/*
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+'use strict';
+
// Checking if the typed arrays are supported
(function() {
if (typeof Uint8Array !== 'undefined')
return this.slice(start, end);
}
- function set_(array, offset) {
- if (arguments.length < 2) offset = 0;
+ function set_function(array, offset) {
+ if (arguments.length < 2)
+ offset = 0;
for (var i = 0, n = array.length; i < n; ++i, ++offset)
this[offset] = array[i] & 0xFF;
}
function TypedArray(arg1) {
var result;
if (typeof arg1 === 'number') {
- result = new Array(arg1);
- for (var i = 0; i < arg1; ++i)
- result[i] = 0;
+ result = [];
+ for (var i = 0; i < arg1; ++i)
+ result[i] = 0;
} else
- result = arg1.slice(0);
+ result = arg1.slice(0);
+
result.subarray = subarray;
result.buffer = result;
result.byteLength = result.length;
- result.set = set_;
+ result.set = set_function;
+
if (typeof arg1 === 'object' && arg1.buffer)
result.buffer = arg1.buffer;
},
get page() {
- return parseInt(document.location.hash.substring(1)) || 1;
+ return parseInt(document.location.hash.substring(1), 10) || 1;
},
open: function(url, scale) {
}
this.setScale(scale || kDefaultScale, true);
- this.page = parseInt(document.location.hash.substring(1)) || 1;
+ this.page = parseInt(document.location.hash.substring(1), 10) || 1;
this.pagesRefMap = pagesRefMap;
this.destinations = pdf.catalog.destinations;
if (pdf.catalog.documentOutline) {
var currentHeight = kBottomMargin;
var windowTop = window.pageYOffset;
- for (var i = 1; i <= pages.length; i++) {
+ for (var i = 1; i <= pages.length; ++i) {
var page = pages[i - 1];
var pageHeight = page.height * page.scale + kBottomMargin;
if (currentHeight + pageHeight > windowTop)
}
var windowBottom = window.pageYOffset + window.innerHeight;
- for (; i <= pages.length && currentHeight < windowBottom; i++) {
- var page = pages[i - 1];
- visiblePages.push({ id: page.id, y: currentHeight, view: page });
- currentHeight += page.height * page.scale + kBottomMargin;
+ for (; i <= pages.length && currentHeight < windowBottom; ++i) {
+ var singlePage = pages[i - 1];
+ visiblePages.push({ id: singlePage.id, y: currentHeight,
+ view: singlePage });
+ currentHeight += singlePage.height * singlePage.scale + kBottomMargin;
}
return visiblePages;
div.removeAttribute('data-loaded');
};
- function setupLinks(canvas, content, scale) {
+ function setupLinks(content, scale) {
function bindLink(link, dest) {
link.onclick = function() {
if (dest)
PDFView.navigateTo(dest);
return false;
- }
+ };
}
var links = content.getLinks();
for (var i = 0; i < links.length; i++) {
var width = 0, height = 0, widthScale, heightScale;
var scale = 0;
switch (dest[1].name) {
- default:
- return;
case 'XYZ':
x = dest[2];
y = dest[3];
height / kCssUnits;
scale = Math.min(widthScale, heightScale);
break;
+ default:
+ return;
}
var boundingRect = [
stats.begin = Date.now();
this.content.startRendering(ctx, this.updateStats);
- setupLinks(canvas, this.content, this.scale);
+ setupLinks(this.content, this.scale);
div.setAttribute('data-loaded', true);
return true;
cmdQueue.push(['$createLinearGradient', [x0, y0, x1, y1]]);
this.addColorStop = function(i, rgba) {
cmdQueue.push(['$addColorStop', [i, rgba]]);
- }
+ };
}
// Really simple PatternProxy.
throw 'CanvasProxy can only provide a 2d context.';
}
return ctx;
- }
+ };
// Expose only the minimum of the canvas object - there is no dom to do
// more here.
return function() {
// console.log("funcCall", name)
cmdQueue.push([name, Array.prototype.slice.call(arguments)]);
- }
+ };
}
var name;
for (var i = 0; i < ctxFunc.length; i++) {
ctx.createPattern = function(object, kind) {
return new PatternProxy(cmdQueue, object, kind);
- }
+ };
ctx.createLinearGradient = function(x0, y0, x1, y1) {
return new GradientProxy(cmdQueue, x0, y0, x1, y1);
- }
+ };
ctx.getImageData = function(x, y, w, h) {
return {
height: h,
data: Uint8ClampedArray(w * h * 4)
};
- }
+ };
ctx.putImageData = function(data, x, y, width, height) {
cmdQueue.push(['$putImageData', [data, x, y, width, height]]);
- }
+ };
ctx.drawImage = function(image, x, y, width, height,
sx, sy, swidth, sheight) {
} else {
throw 'unkown type to drawImage';
}
- }
+ };
// Setup property access to `ctx`.
var ctxProp = {
function buildGetter(name) {
return function() {
return ctx['$' + name];
- }
+ };
}
function buildSetter(name) {
return function(value) {
cmdQueue.push(['$', name, value]);
- return ctx['$' + name] = value;
- }
+ return (ctx['$' + name] = value);
+ };
}
// Setting the value to `stroke|fillStyle` needs special handling, as it
cmdQueue.push(['$' + name + 'Pattern', [value.id]]);
} else {
cmdQueue.push(['$', name, value]);
- return ctx['$' + name] = value;
+ return (ctx['$' + name] = value);
}
- }
+ };
}
for (var name in ctxProp) {
'fonts': function(data) {
// console.log("got processed fonts from worker", Object.keys(data));
- for (name in data) {
+ for (var name in data) {
// Update the encoding property.
var font = Fonts.lookup(name);
font.properties = {
// Copy over the imageData.
var len = imageRealData.length;
while (len--)
- imgRealData[len] = imageRealData[len];
+ imgRealData[len] = imageRealData[len];
this.putImageData(imgData, x, y);
},
},
'pdf_num_pages': function(data) {
- this.numPages = parseInt(data);
+ this.numPages = parseInt(data, 10);
if (this.loadCallback) {
this.loadCallback();
}
'setup_page': function(data) {
var size = data.split(',');
var canvas = this.canvas, ctx = this.ctx;
- canvas.width = parseInt(size[0]);
- canvas.height = parseInt(size[1]);
+ canvas.width = parseInt(size[0], 10);
+ canvas.height = parseInt(size[1], 10);
},
'fonts': function(data) {
};
WorkerPDFDoc.prototype.showPage = function(numPage) {
- this.numPage = parseInt(numPage);
+ this.numPage = parseInt(numPage, 10);
console.log('=== start rendering page ' + numPage + ' ===');
console.time('>>> total page display time:');
this.worker.postMessage(numPage);
};
WorkerPDFDoc.prototype.nextPage = function() {
- if (this.numPage == this.numPages) return;
- this.showPage(++this.numPage);
+ if (this.numPage != this.numPages)
+ this.showPage(++this.numPage);
};
WorkerPDFDoc.prototype.prevPage = function() {
- if (this.numPage == 1) return;
- this.showPage(--this.numPage);
+ if (this.numPage != 1)
+ this.showPage(--this.numPage);
};
+
this.log('Timer:', name, Date.now() - time);
}
};
+
throw 'Unkown action from worker: ' + data.action;
}
};
+
console.time('compile');
// Let's try to render the first page...
- var page = pdfDocument.getPage(parseInt(data));
+ var page = pdfDocument.getPage(parseInt(data, 10));
var pdfToCssUnitsCoef = 96.0 / 72.0;
var pageWidth = (page.mediaBox[2] - page.mediaBox[0]) * pdfToCssUnitsCoef;