Merge remote-tracking branch 'mozilla/master' into mergexref-1

Conflicts:
	src/core.js
	src/evaluator.js
	src/obj.js
This commit is contained in:
Yury Delendik 2012-04-05 10:03:49 -05:00
commit cea388201d
18 changed files with 1581 additions and 1589 deletions

View File

@ -122,41 +122,14 @@ Our Github contributors so far:
You can add your name to it! :) You can add your name to it! :)
# Running the tests # Running the tests
pdf.js comes with browser-level regression tests that allow one to probe pdf.js comes with browser-level regression tests that allow one to probe
whether it's able to successfully parse PDFs, as well as compare its output whether it's able to successfully parse PDFs, as well as compare its output
against reference images, pixel-by-pixel. against reference images, pixel-by-pixel.
To run the tests, first configure the browser manifest file at: More information about running the tests can be found on the
[contributor wiki page](https://github.com/mozilla/pdf.js/wiki/Contributing).
test/resources/browser_manifests/browser_manifest.json
Sample manifests for different platforms are provided in that directory.
To run all the bundled tests, type:
$ make test
and cross your fingers. Different types of tests are available, see the test
manifest file at:
test/test_manifest.json
The test type `eq` tests whether the output images are identical to reference
images. The test type `load` simply tests whether the file loads without
raising any errors.
### Running tests through our bot
If you are a reviewer, you can use our remote bot to issue comprehensive tests
against reference images before merging pull requests.
See the bot repo for details:
+ https://github.com/mozilla/pdf.js-bot
# Additional resources # Additional resources

View File

@ -20,7 +20,7 @@
<em:bootstrap>true</em:bootstrap> <em:bootstrap>true</em:bootstrap>
<em:creator>Mozilla</em:creator> <em:creator>Mozilla</em:creator>
<em:description>Uses HTML5 to display PDF files directly in Firefox.</em:description> <em:description>Uses HTML5 to display PDF files directly in Firefox.</em:description>
<em:homepageURL>http://support.mozilla.org/kb/using-mozilla-pdf-viewer</em:homepageURL> <em:homepageURL>https://support.mozilla.org/kb/Opening%20PDF%20files%20within%20Firefox</em:homepageURL>
<em:type>2</em:type> <em:type>2</em:type>
</Description> </Description>
</RDF> </RDF>

View File

@ -20,56 +20,6 @@ var TextRenderingMode = {
// Minimal font size that would be used during canvas fillText operations. // Minimal font size that would be used during canvas fillText operations.
var MIN_FONT_SIZE = 1; var MIN_FONT_SIZE = 1;
var CanvasExtraState = (function CanvasExtraStateClosure() {
function CanvasExtraState(old) {
// Are soft masks and alpha values shapes or opacities?
this.alphaIsShape = false;
this.fontSize = 0;
this.fontSizeScale = 1;
this.textMatrix = IDENTITY_MATRIX;
this.fontMatrix = IDENTITY_MATRIX;
this.leading = 0;
// Current point (in user coordinates)
this.x = 0;
this.y = 0;
// Start of text line (in text coordinates)
this.lineX = 0;
this.lineY = 0;
// Character and word spacing
this.charSpacing = 0;
this.wordSpacing = 0;
this.textHScale = 1;
this.textRenderingMode = TextRenderingMode.FILL;
// Color spaces
this.fillColorSpace = new DeviceGrayCS();
this.fillColorSpaceObj = null;
this.strokeColorSpace = new DeviceGrayCS();
this.strokeColorSpaceObj = null;
this.fillColorObj = null;
this.strokeColorObj = null;
// Default fore and background colors
this.fillColor = '#000000';
this.strokeColor = '#000000';
// Note: fill alpha applies to all non-stroking operations
this.fillAlpha = 1;
this.strokeAlpha = 1;
this.lineWidth = 1;
this.old = old;
}
CanvasExtraState.prototype = {
clone: function canvasextra_clone() {
return Object.create(this);
},
setCurrentPoint: function canvasextra_setCurrentPoint(x, y) {
this.x = x;
this.y = y;
}
};
return CanvasExtraState;
})();
function createScratchCanvas(width, height) { function createScratchCanvas(width, height) {
var canvas = document.createElement('canvas'); var canvas = document.createElement('canvas');
canvas.width = width; canvas.width = width;
@ -187,6 +137,56 @@ function addContextCurrentTransform(ctx) {
} }
} }
var CanvasExtraState = (function CanvasExtraStateClosure() {
function CanvasExtraState(old) {
// Are soft masks and alpha values shapes or opacities?
this.alphaIsShape = false;
this.fontSize = 0;
this.fontSizeScale = 1;
this.textMatrix = IDENTITY_MATRIX;
this.fontMatrix = IDENTITY_MATRIX;
this.leading = 0;
// Current point (in user coordinates)
this.x = 0;
this.y = 0;
// Start of text line (in text coordinates)
this.lineX = 0;
this.lineY = 0;
// Character and word spacing
this.charSpacing = 0;
this.wordSpacing = 0;
this.textHScale = 1;
this.textRenderingMode = TextRenderingMode.FILL;
// Color spaces
this.fillColorSpace = new DeviceGrayCS();
this.fillColorSpaceObj = null;
this.strokeColorSpace = new DeviceGrayCS();
this.strokeColorSpaceObj = null;
this.fillColorObj = null;
this.strokeColorObj = null;
// Default fore and background colors
this.fillColor = '#000000';
this.strokeColor = '#000000';
// Note: fill alpha applies to all non-stroking operations
this.fillAlpha = 1;
this.strokeAlpha = 1;
this.lineWidth = 1;
this.old = old;
}
CanvasExtraState.prototype = {
clone: function CanvasExtraState_clone() {
return Object.create(this);
},
setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
this.x = x;
this.y = y;
}
};
return CanvasExtraState;
})();
var CanvasGraphics = (function CanvasGraphicsClosure() { var CanvasGraphics = (function CanvasGraphicsClosure() {
// Defines the time the executeOperatorList is going to be executing // Defines the time the executeOperatorList is going to be executing
// before it stops and shedules a continue of execution. // before it stops and shedules a continue of execution.
@ -241,7 +241,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
'shadingFill': true 'shadingFill': true
}, },
beginDrawing: function canvasGraphicsBeginDrawing(mediaBox) { beginDrawing: function CanvasGraphics_beginDrawing(mediaBox) {
var cw = this.ctx.canvas.width, ch = this.ctx.canvas.height; var cw = this.ctx.canvas.width, ch = this.ctx.canvas.height;
this.ctx.save(); this.ctx.save();
switch (mediaBox.rotate) { switch (mediaBox.rotate) {
@ -267,7 +267,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.textLayer.beginLayout(); this.textLayer.beginLayout();
}, },
executeOperatorList: function canvasGraphicsExecuteOperatorList( executeOperatorList: function CanvasGraphics_executeOperatorList(
operatorList, operatorList,
executionStartIdx, continueCallback, executionStartIdx, continueCallback,
stepper) { stepper) {
@ -332,7 +332,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
} }
}, },
endDrawing: function canvasGraphicsEndDrawing() { endDrawing: function CanvasGraphics_endDrawing() {
this.ctx.restore(); this.ctx.restore();
if (this.textLayer) if (this.textLayer)
@ -340,32 +340,32 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
}, },
// Graphics state // Graphics state
setLineWidth: function canvasGraphicsSetLineWidth(width) { setLineWidth: function CanvasGraphics_setLineWidth(width) {
this.current.lineWidth = width; this.current.lineWidth = width;
this.ctx.lineWidth = width; this.ctx.lineWidth = width;
}, },
setLineCap: function canvasGraphicsSetLineCap(style) { setLineCap: function CanvasGraphics_setLineCap(style) {
this.ctx.lineCap = LINE_CAP_STYLES[style]; this.ctx.lineCap = LINE_CAP_STYLES[style];
}, },
setLineJoin: function canvasGraphicsSetLineJoin(style) { setLineJoin: function CanvasGraphics_setLineJoin(style) {
this.ctx.lineJoin = LINE_JOIN_STYLES[style]; this.ctx.lineJoin = LINE_JOIN_STYLES[style];
}, },
setMiterLimit: function canvasGraphicsSetMiterLimit(limit) { setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
this.ctx.miterLimit = limit; this.ctx.miterLimit = limit;
}, },
setDash: function canvasGraphicsSetDash(dashArray, dashPhase) { setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
this.ctx.mozDash = dashArray; this.ctx.mozDash = dashArray;
this.ctx.mozDashOffset = dashPhase; this.ctx.mozDashOffset = dashPhase;
this.ctx.webkitLineDash = dashArray; this.ctx.webkitLineDash = dashArray;
this.ctx.webkitLineDashOffset = dashPhase; this.ctx.webkitLineDashOffset = dashPhase;
}, },
setRenderingIntent: function canvasGraphicsSetRenderingIntent(intent) { setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {
TODO('set rendering intent: ' + intent); TODO('set rendering intent: ' + intent);
}, },
setFlatness: function canvasGraphicsSetFlatness(flatness) { setFlatness: function CanvasGraphics_setFlatness(flatness) {
TODO('set flatness: ' + flatness); TODO('set flatness: ' + flatness);
}, },
setGState: function canvasGraphicsSetGState(states) { setGState: function CanvasGraphics_setGState(states) {
for (var i = 0, ii = states.length; i < ii; i++) { for (var i = 0, ii = states.length; i < ii; i++) {
var state = states[i]; var state = states[i];
var key = state[0]; var key = state[0];
@ -406,52 +406,52 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
} }
} }
}, },
save: function canvasGraphicsSave() { save: function CanvasGraphics_save() {
this.ctx.save(); this.ctx.save();
var old = this.current; var old = this.current;
this.stateStack.push(old); this.stateStack.push(old);
this.current = old.clone(); this.current = old.clone();
}, },
restore: function canvasGraphicsRestore() { restore: function CanvasGraphics_restore() {
var prev = this.stateStack.pop(); var prev = this.stateStack.pop();
if (prev) { if (prev) {
this.current = prev; this.current = prev;
this.ctx.restore(); this.ctx.restore();
} }
}, },
transform: function canvasGraphicsTransform(a, b, c, d, e, f) { transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
this.ctx.transform(a, b, c, d, e, f); this.ctx.transform(a, b, c, d, e, f);
}, },
// Path // Path
moveTo: function canvasGraphicsMoveTo(x, y) { moveTo: function CanvasGraphics_moveTo(x, y) {
this.ctx.moveTo(x, y); this.ctx.moveTo(x, y);
this.current.setCurrentPoint(x, y); this.current.setCurrentPoint(x, y);
}, },
lineTo: function canvasGraphicsLineTo(x, y) { lineTo: function CanvasGraphics_lineTo(x, y) {
this.ctx.lineTo(x, y); this.ctx.lineTo(x, y);
this.current.setCurrentPoint(x, y); this.current.setCurrentPoint(x, y);
}, },
curveTo: function canvasGraphicsCurveTo(x1, y1, x2, y2, x3, y3) { curveTo: function CanvasGraphics_curveTo(x1, y1, x2, y2, x3, y3) {
this.ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3); this.ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
this.current.setCurrentPoint(x3, y3); this.current.setCurrentPoint(x3, y3);
}, },
curveTo2: function canvasGraphicsCurveTo2(x2, y2, x3, y3) { curveTo2: function CanvasGraphics_curveTo2(x2, y2, x3, y3) {
var current = this.current; var current = this.current;
this.ctx.bezierCurveTo(current.x, current.y, x2, y2, x3, y3); this.ctx.bezierCurveTo(current.x, current.y, x2, y2, x3, y3);
current.setCurrentPoint(x3, y3); current.setCurrentPoint(x3, y3);
}, },
curveTo3: function canvasGraphicsCurveTo3(x1, y1, x3, y3) { curveTo3: function CanvasGraphics_curveTo3(x1, y1, x3, y3) {
this.curveTo(x1, y1, x3, y3, x3, y3); this.curveTo(x1, y1, x3, y3, x3, y3);
this.current.setCurrentPoint(x3, y3); this.current.setCurrentPoint(x3, y3);
}, },
closePath: function canvasGraphicsClosePath() { closePath: function CanvasGraphics_closePath() {
this.ctx.closePath(); this.ctx.closePath();
}, },
rectangle: function canvasGraphicsRectangle(x, y, width, height) { rectangle: function CanvasGraphics_rectangle(x, y, width, height) {
this.ctx.rect(x, y, width, height); this.ctx.rect(x, y, width, height);
}, },
stroke: function canvasGraphicsStroke(consumePath) { stroke: function CanvasGraphics_stroke(consumePath) {
consumePath = typeof consumePath !== 'undefined' ? consumePath : true; consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
var ctx = this.ctx; var ctx = this.ctx;
var strokeColor = this.current.strokeColor; var strokeColor = this.current.strokeColor;
@ -476,11 +476,11 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
// Restore the global alpha to the fill alpha // Restore the global alpha to the fill alpha
ctx.globalAlpha = this.current.fillAlpha; ctx.globalAlpha = this.current.fillAlpha;
}, },
closeStroke: function canvasGraphicsCloseStroke() { closeStroke: function CanvasGraphics_closeStroke() {
this.closePath(); this.closePath();
this.stroke(); this.stroke();
}, },
fill: function canvasGraphicsFill(consumePath) { fill: function CanvasGraphics_fill(consumePath) {
consumePath = typeof consumePath !== 'undefined' ? consumePath : true; consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
var ctx = this.ctx; var ctx = this.ctx;
var fillColor = this.current.fillColor; var fillColor = this.current.fillColor;
@ -497,65 +497,65 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
if (consumePath) if (consumePath)
this.consumePath(); this.consumePath();
}, },
eoFill: function canvasGraphicsEoFill() { eoFill: function CanvasGraphics_eoFill() {
var savedFillRule = this.setEOFillRule(); var savedFillRule = this.setEOFillRule();
this.fill(); this.fill();
this.restoreFillRule(savedFillRule); this.restoreFillRule(savedFillRule);
}, },
fillStroke: function canvasGraphicsFillStroke() { fillStroke: function CanvasGraphics_fillStroke() {
this.fill(false); this.fill(false);
this.stroke(false); this.stroke(false);
this.consumePath(); this.consumePath();
}, },
eoFillStroke: function canvasGraphicsEoFillStroke() { eoFillStroke: function CanvasGraphics_eoFillStroke() {
var savedFillRule = this.setEOFillRule(); var savedFillRule = this.setEOFillRule();
this.fillStroke(); this.fillStroke();
this.restoreFillRule(savedFillRule); this.restoreFillRule(savedFillRule);
}, },
closeFillStroke: function canvasGraphicsCloseFillStroke() { closeFillStroke: function CanvasGraphics_closeFillStroke() {
this.closePath(); this.closePath();
this.fillStroke(); this.fillStroke();
}, },
closeEOFillStroke: function canvasGraphicsCloseEOFillStroke() { closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
var savedFillRule = this.setEOFillRule(); var savedFillRule = this.setEOFillRule();
this.closePath(); this.closePath();
this.fillStroke(); this.fillStroke();
this.restoreFillRule(savedFillRule); this.restoreFillRule(savedFillRule);
}, },
endPath: function canvasGraphicsEndPath() { endPath: function CanvasGraphics_endPath() {
this.consumePath(); this.consumePath();
}, },
// Clipping // Clipping
clip: function canvasGraphicsClip() { clip: function CanvasGraphics_clip() {
this.pendingClip = NORMAL_CLIP; this.pendingClip = NORMAL_CLIP;
}, },
eoClip: function canvasGraphicsEoClip() { eoClip: function CanvasGraphics_eoClip() {
this.pendingClip = EO_CLIP; this.pendingClip = EO_CLIP;
}, },
// Text // Text
beginText: function canvasGraphicsBeginText() { beginText: function CanvasGraphics_beginText() {
this.current.textMatrix = IDENTITY_MATRIX; this.current.textMatrix = IDENTITY_MATRIX;
this.current.x = this.current.lineX = 0; this.current.x = this.current.lineX = 0;
this.current.y = this.current.lineY = 0; this.current.y = this.current.lineY = 0;
}, },
endText: function canvasGraphicsEndText() { endText: function CanvasGraphics_endText() {
}, },
setCharSpacing: function canvasGraphicsSetCharSpacing(spacing) { setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
this.current.charSpacing = spacing; this.current.charSpacing = spacing;
}, },
setWordSpacing: function canvasGraphicsSetWordSpacing(spacing) { setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
this.current.wordSpacing = spacing; this.current.wordSpacing = spacing;
}, },
setHScale: function canvasGraphicsSetHScale(scale) { setHScale: function CanvasGraphics_setHScale(scale) {
this.current.textHScale = scale / 100; this.current.textHScale = scale / 100;
}, },
setLeading: function canvasGraphicsSetLeading(leading) { setLeading: function CanvasGraphics_setLeading(leading) {
this.current.leading = -leading; this.current.leading = -leading;
}, },
setFont: function canvasGraphicsSetFont(fontRefName, size) { setFont: function CanvasGraphics_setFont(fontRefName, size) {
var fontObj = this.objs.get(fontRefName); var fontObj = this.objs.get(fontRefName);
var current = this.current; var current = this.current;
@ -609,32 +609,32 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;
this.ctx.font = rule; this.ctx.font = rule;
}, },
setTextRenderingMode: function canvasGraphicsSetTextRenderingMode(mode) { setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
if (mode >= TextRenderingMode.FILL_ADD_TO_PATH) if (mode >= TextRenderingMode.FILL_ADD_TO_PATH)
TODO('unsupported text rendering mode: ' + mode); TODO('unsupported text rendering mode: ' + mode);
this.current.textRenderingMode = mode; this.current.textRenderingMode = mode;
}, },
setTextRise: function canvasGraphicsSetTextRise(rise) { setTextRise: function CanvasGraphics_setTextRise(rise) {
TODO('text rise: ' + rise); TODO('text rise: ' + rise);
}, },
moveText: function canvasGraphicsMoveText(x, y) { moveText: function CanvasGraphics_moveText(x, y) {
this.current.x = this.current.lineX += x; this.current.x = this.current.lineX += x;
this.current.y = this.current.lineY += y; this.current.y = this.current.lineY += y;
}, },
setLeadingMoveText: function canvasGraphicsSetLeadingMoveText(x, y) { setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
this.setLeading(-y); this.setLeading(-y);
this.moveText(x, y); this.moveText(x, y);
}, },
setTextMatrix: function canvasGraphicsSetTextMatrix(a, b, c, d, e, f) { setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
this.current.textMatrix = [a, b, c, d, e, f]; this.current.textMatrix = [a, b, c, d, e, f];
this.current.x = this.current.lineX = 0; this.current.x = this.current.lineX = 0;
this.current.y = this.current.lineY = 0; this.current.y = this.current.lineY = 0;
}, },
nextLine: function canvasGraphicsNextLine() { nextLine: function CanvasGraphics_nextLine() {
this.moveText(0, this.current.leading); this.moveText(0, this.current.leading);
}, },
applyTextTransforms: function canvasApplyTransforms() { applyTextTransforms: function CanvasGraphics_applyTextTransforms() {
var ctx = this.ctx; var ctx = this.ctx;
var current = this.current; var current = this.current;
var textHScale = current.textHScale; var textHScale = current.textHScale;
@ -646,7 +646,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
ctx.transform.apply(ctx, fontMatrix); ctx.transform.apply(ctx, fontMatrix);
ctx.scale(textHScale, 1); ctx.scale(textHScale, 1);
}, },
getTextGeometry: function canvasGetTextGeometry() { getTextGeometry: function CanvasGraphics_getTextGeometry() {
var geometry = {}; var geometry = {};
var ctx = this.ctx; var ctx = this.ctx;
var font = this.current.font; var font = this.current.font;
@ -663,7 +663,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
return geometry; return geometry;
}, },
showText: function canvasGraphicsShowText(str, skipTextSelection) { showText: function CanvasGraphics_showText(str, skipTextSelection) {
var ctx = this.ctx; var ctx = this.ctx;
var current = this.current; var current = this.current;
var font = current.font; var font = current.font;
@ -801,7 +801,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
return text; return text;
}, },
showSpacedText: function canvasGraphicsShowSpacedText(arr) { showSpacedText: function CanvasGraphics_showSpacedText(arr) {
var ctx = this.ctx; var ctx = this.ctx;
var current = this.current; var current = this.current;
var font = current.font; var font = current.font;
@ -865,25 +865,25 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
if (textSelection) if (textSelection)
this.textLayer.appendText(text, font.loadedName, fontSize); this.textLayer.appendText(text, font.loadedName, fontSize);
}, },
nextLineShowText: function canvasGraphicsNextLineShowText(text) { nextLineShowText: function CanvasGraphics_nextLineShowText(text) {
this.nextLine(); this.nextLine();
this.showText(text); this.showText(text);
}, },
nextLineSetSpacingShowText: nextLineSetSpacingShowText:
function canvasGraphicsNextLineSetSpacingShowText(wordSpacing, function CanvasGraphics_nextLineSetSpacingShowText(wordSpacing,
charSpacing, charSpacing,
text) { text) {
this.setWordSpacing(wordSpacing); this.setWordSpacing(wordSpacing);
this.setCharSpacing(charSpacing); this.setCharSpacing(charSpacing);
this.nextLineShowText(text); this.nextLineShowText(text);
}, },
// Type3 fonts // Type3 fonts
setCharWidth: function canvasGraphicsSetCharWidth(xWidth, yWidth) { setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {
// We can safely ignore this since the width should be the same // We can safely ignore this since the width should be the same
// as the width in the Widths array. // as the width in the Widths array.
}, },
setCharWidthAndBounds: function canvasGraphicsSetCharWidthAndBounds(xWidth, setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,
yWidth, yWidth,
llx, llx,
lly, lly,
@ -897,20 +897,20 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
}, },
// Color // Color
setStrokeColorSpace: function canvasGraphicsSetStrokeColorSpace(raw) { setStrokeColorSpace: function CanvasGraphics_setStrokeColorSpace(raw) {
this.current.strokeColorSpace = ColorSpace.fromIR(raw); this.current.strokeColorSpace = ColorSpace.fromIR(raw);
}, },
setFillColorSpace: function canvasGraphicsSetFillColorSpace(raw) { setFillColorSpace: function CanvasGraphics_setFillColorSpace(raw) {
this.current.fillColorSpace = ColorSpace.fromIR(raw); this.current.fillColorSpace = ColorSpace.fromIR(raw);
}, },
setStrokeColor: function canvasGraphicsSetStrokeColor(/*...*/) { setStrokeColor: function CanvasGraphics_setStrokeColor(/*...*/) {
var cs = this.current.strokeColorSpace; var cs = this.current.strokeColorSpace;
var rgbColor = cs.getRgb(arguments); var rgbColor = cs.getRgb(arguments);
var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
this.ctx.strokeStyle = color; this.ctx.strokeStyle = color;
this.current.strokeColor = color; this.current.strokeColor = color;
}, },
getColorN_Pattern: function canvasGraphicsGetColorN_Pattern(IR, cs) { getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR, cs) {
if (IR[0] == 'TilingPattern') { if (IR[0] == 'TilingPattern') {
var args = IR[1]; var args = IR[1];
var base = cs.base; var base = cs.base;
@ -932,7 +932,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
} }
return pattern; return pattern;
}, },
setStrokeColorN: function canvasGraphicsSetStrokeColorN(/*...*/) { setStrokeColorN: function CanvasGraphics_setStrokeColorN(/*...*/) {
var cs = this.current.strokeColorSpace; var cs = this.current.strokeColorSpace;
if (cs.name == 'Pattern') { if (cs.name == 'Pattern') {
@ -941,14 +941,14 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.setStrokeColor.apply(this, arguments); this.setStrokeColor.apply(this, arguments);
} }
}, },
setFillColor: function canvasGraphicsSetFillColor(/*...*/) { setFillColor: function CanvasGraphics_setFillColor(/*...*/) {
var cs = this.current.fillColorSpace; var cs = this.current.fillColorSpace;
var rgbColor = cs.getRgb(arguments); var rgbColor = cs.getRgb(arguments);
var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); var color = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
this.ctx.fillStyle = color; this.ctx.fillStyle = color;
this.current.fillColor = color; this.current.fillColor = color;
}, },
setFillColorN: function canvasGraphicsSetFillColorN(/*...*/) { setFillColorN: function CanvasGraphics_setFillColorN(/*...*/) {
var cs = this.current.fillColorSpace; var cs = this.current.fillColorSpace;
if (cs.name == 'Pattern') { if (cs.name == 'Pattern') {
@ -957,7 +957,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.setFillColor.apply(this, arguments); this.setFillColor.apply(this, arguments);
} }
}, },
setStrokeGray: function canvasGraphicsSetStrokeGray(gray) { setStrokeGray: function CanvasGraphics_setStrokeGray(gray) {
if (!(this.current.strokeColorSpace instanceof DeviceGrayCS)) if (!(this.current.strokeColorSpace instanceof DeviceGrayCS))
this.current.strokeColorSpace = new DeviceGrayCS(); this.current.strokeColorSpace = new DeviceGrayCS();
@ -965,7 +965,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.ctx.strokeStyle = color; this.ctx.strokeStyle = color;
this.current.strokeColor = color; this.current.strokeColor = color;
}, },
setFillGray: function canvasGraphicsSetFillGray(gray) { setFillGray: function CanvasGraphics_setFillGray(gray) {
if (!(this.current.fillColorSpace instanceof DeviceGrayCS)) if (!(this.current.fillColorSpace instanceof DeviceGrayCS))
this.current.fillColorSpace = new DeviceGrayCS(); this.current.fillColorSpace = new DeviceGrayCS();
@ -973,7 +973,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.ctx.fillStyle = color; this.ctx.fillStyle = color;
this.current.fillColor = color; this.current.fillColor = color;
}, },
setStrokeRGBColor: function canvasGraphicsSetStrokeRGBColor(r, g, b) { setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
if (!(this.current.strokeColorSpace instanceof DeviceRgbCS)) if (!(this.current.strokeColorSpace instanceof DeviceRgbCS))
this.current.strokeColorSpace = new DeviceRgbCS(); this.current.strokeColorSpace = new DeviceRgbCS();
@ -981,7 +981,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.ctx.strokeStyle = color; this.ctx.strokeStyle = color;
this.current.strokeColor = color; this.current.strokeColor = color;
}, },
setFillRGBColor: function canvasGraphicsSetFillRGBColor(r, g, b) { setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
if (!(this.current.fillColorSpace instanceof DeviceRgbCS)) if (!(this.current.fillColorSpace instanceof DeviceRgbCS))
this.current.fillColorSpace = new DeviceRgbCS(); this.current.fillColorSpace = new DeviceRgbCS();
@ -989,7 +989,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.ctx.fillStyle = color; this.ctx.fillStyle = color;
this.current.fillColor = color; this.current.fillColor = color;
}, },
setStrokeCMYKColor: function canvasGraphicsSetStrokeCMYKColor(c, m, y, k) { setStrokeCMYKColor: function CanvasGraphics_setStrokeCMYKColor(c, m, y, k) {
if (!(this.current.strokeColorSpace instanceof DeviceCmykCS)) if (!(this.current.strokeColorSpace instanceof DeviceCmykCS))
this.current.strokeColorSpace = new DeviceCmykCS(); this.current.strokeColorSpace = new DeviceCmykCS();
@ -997,7 +997,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.ctx.strokeStyle = color; this.ctx.strokeStyle = color;
this.current.strokeColor = color; this.current.strokeColor = color;
}, },
setFillCMYKColor: function canvasGraphicsSetFillCMYKColor(c, m, y, k) { setFillCMYKColor: function CanvasGraphics_setFillCMYKColor(c, m, y, k) {
if (!(this.current.fillColorSpace instanceof DeviceCmykCS)) if (!(this.current.fillColorSpace instanceof DeviceCmykCS))
this.current.fillColorSpace = new DeviceCmykCS(); this.current.fillColorSpace = new DeviceCmykCS();
@ -1006,7 +1006,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.current.fillColor = color; this.current.fillColor = color;
}, },
shadingFill: function canvasGraphicsShadingFill(patternIR) { shadingFill: function CanvasGraphics_shadingFill(patternIR) {
var ctx = this.ctx; var ctx = this.ctx;
this.save(); this.save();
@ -1043,14 +1043,14 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
}, },
// Images // Images
beginInlineImage: function canvasGraphicsBeginInlineImage() { beginInlineImage: function CanvasGraphics_beginInlineImage() {
error('Should not call beginInlineImage'); error('Should not call beginInlineImage');
}, },
beginImageData: function canvasGraphicsBeginImageData() { beginImageData: function CanvasGraphics_beginImageData() {
error('Should not call beginImageData'); error('Should not call beginImageData');
}, },
paintFormXObjectBegin: function canvasGraphicsPaintFormXObjectBegin(matrix, paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,
bbox) { bbox) {
this.save(); this.save();
@ -1066,11 +1066,11 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
} }
}, },
paintFormXObjectEnd: function canvasGraphicsPaintFormXObjectEnd() { paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
this.restore(); this.restore();
}, },
paintJpegXObject: function canvasGraphicsPaintJpegXObject(objId, w, h) { paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
var domImage = this.objs.get(objId); var domImage = this.objs.get(objId);
if (!domImage) { if (!domImage) {
error('Dependent image isn\'t ready yet'); error('Dependent image isn\'t ready yet');
@ -1088,7 +1088,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.restore(); this.restore();
}, },
paintImageMaskXObject: function canvasGraphicsPaintImageMaskXObject( paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(
imgArray, inverseDecode, width, height) { imgArray, inverseDecode, width, height) {
function applyStencilMask(buffer, inverseDecode) { function applyStencilMask(buffer, inverseDecode) {
var imgArrayPos = 0; var imgArrayPos = 0;
@ -1137,7 +1137,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.restore(); this.restore();
}, },
paintImageXObject: function canvasGraphicsPaintImageXObject(objId) { paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
var imgData = this.objs.get(objId); var imgData = this.objs.get(objId);
if (!imgData) if (!imgData)
error('Dependent image isn\'t ready yet'); error('Dependent image isn\'t ready yet');
@ -1157,41 +1157,41 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
this.restore(); this.restore();
}, },
putBinaryImageData: function canvasPutBinaryImageData() { putBinaryImageData: function CanvasGraphics_putBinaryImageData() {
// //
}, },
// Marked content // Marked content
markPoint: function canvasGraphicsMarkPoint(tag) { markPoint: function CanvasGraphics_markPoint(tag) {
TODO('Marked content'); TODO('Marked content');
}, },
markPointProps: function canvasGraphicsMarkPointProps(tag, properties) { markPointProps: function CanvasGraphics_markPointProps(tag, properties) {
TODO('Marked content'); TODO('Marked content');
}, },
beginMarkedContent: function canvasGraphicsBeginMarkedContent(tag) { beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {
TODO('Marked content'); TODO('Marked content');
}, },
beginMarkedContentProps: beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(
function canvasGraphicsBeginMarkedContentProps(tag, properties) { tag, properties) {
TODO('Marked content'); TODO('Marked content');
}, },
endMarkedContent: function canvasGraphicsEndMarkedContent() { endMarkedContent: function CanvasGraphics_endMarkedContent() {
TODO('Marked content'); TODO('Marked content');
}, },
// Compatibility // Compatibility
beginCompat: function canvasGraphicsBeginCompat() { beginCompat: function CanvasGraphics_beginCompat() {
TODO('ignore undefined operators (should we do that anyway?)'); TODO('ignore undefined operators (should we do that anyway?)');
}, },
endCompat: function canvasGraphicsEndCompat() { endCompat: function CanvasGraphics_endCompat() {
TODO('stop ignoring undefined operators'); TODO('stop ignoring undefined operators');
}, },
// Helper functions // Helper functions
consumePath: function canvasGraphicsConsumePath() { consumePath: function CanvasGraphics_consumePath() {
if (this.pendingClip) { if (this.pendingClip) {
var savedFillRule = null; var savedFillRule = null;
if (this.pendingClip == EO_CLIP) if (this.pendingClip == EO_CLIP)
@ -1208,15 +1208,15 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
// We generally keep the canvas context set for // We generally keep the canvas context set for
// nonzero-winding, and just set evenodd for the operations // nonzero-winding, and just set evenodd for the operations
// that need them. // that need them.
setEOFillRule: function canvasGraphicsSetEOFillRule() { setEOFillRule: function CanvasGraphics_setEOFillRule() {
var savedFillRule = this.ctx.mozFillRule; var savedFillRule = this.ctx.mozFillRule;
this.ctx.mozFillRule = 'evenodd'; this.ctx.mozFillRule = 'evenodd';
return savedFillRule; return savedFillRule;
}, },
restoreFillRule: function canvasGraphicsRestoreFillRule(rule) { restoreFillRule: function CanvasGraphics_restoreFillRule(rule) {
this.ctx.mozFillRule = rule; this.ctx.mozFillRule = rule;
}, },
getSinglePixelWidth: function getSinglePixelWidth(scale) { getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {
var inverse = this.ctx.mozCurrentTransformInverse; var inverse = this.ctx.mozCurrentTransformInverse;
return Math.abs(inverse[0] + inverse[2]); return Math.abs(inverse[0] + inverse[2]);
} }

View File

@ -12,17 +12,17 @@ var ColorSpace = (function ColorSpaceClosure() {
ColorSpace.prototype = { ColorSpace.prototype = {
// Input: array of size numComps representing color component values // Input: array of size numComps representing color component values
// Output: array of rgb values, each value ranging from [0.1] // Output: array of rgb values, each value ranging from [0.1]
getRgb: function colorSpaceGetRgb(color) { getRgb: function ColorSpace_getRgb(color) {
error('Should not call ColorSpace.getRgb: ' + color); error('Should not call ColorSpace.getRgb: ' + color);
}, },
// Input: Uint8Array of component values, each value scaled to [0,255] // Input: Uint8Array of component values, each value scaled to [0,255]
// Output: Uint8Array of rgb values, each value scaled to [0,255] // Output: Uint8Array of rgb values, each value scaled to [0,255]
getRgbBuffer: function colorSpaceGetRgbBuffer(input) { getRgbBuffer: function ColorSpace_getRgbBuffer(input) {
error('Should not call ColorSpace.getRgbBuffer: ' + input); error('Should not call ColorSpace.getRgbBuffer: ' + input);
} }
}; };
ColorSpace.parse = function colorSpaceParse(cs, xref, res) { ColorSpace.parse = function ColorSpace_parse(cs, xref, res) {
var IR = ColorSpace.parseToIR(cs, xref, res); var IR = ColorSpace.parseToIR(cs, xref, res);
if (IR instanceof AlternateCS) if (IR instanceof AlternateCS)
return IR; return IR;
@ -30,7 +30,7 @@ var ColorSpace = (function ColorSpaceClosure() {
return ColorSpace.fromIR(IR); return ColorSpace.fromIR(IR);
}; };
ColorSpace.fromIR = function colorSpaceFromIR(IR) { ColorSpace.fromIR = function ColorSpace_fromIR(IR) {
var name = isArray(IR) ? IR[0] : IR; var name = isArray(IR) ? IR[0] : IR;
switch (name) { switch (name) {
@ -68,7 +68,7 @@ var ColorSpace = (function ColorSpaceClosure() {
return null; return null;
}; };
ColorSpace.parseToIR = function colorSpaceParseToIR(cs, xref, res) { ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) {
if (isName(cs)) { if (isName(cs)) {
var colorSpaces = res.get('ColorSpace'); var colorSpaces = res.get('ColorSpace');
if (isDict(colorSpaces)) { if (isDict(colorSpaces)) {
@ -171,7 +171,7 @@ var ColorSpace = (function ColorSpaceClosure() {
* @param {Array} decode Decode map (usually from an image). * @param {Array} decode Decode map (usually from an image).
* @param {Number} n Number of components the color space has. * @param {Number} n Number of components the color space has.
*/ */
ColorSpace.isDefaultDecode = function colorSpaceIsDefaultDecode(decode, n) { ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) {
if (!decode) if (!decode)
return true; return true;
@ -207,11 +207,11 @@ var AlternateCS = (function AlternateCSClosure() {
} }
AlternateCS.prototype = { AlternateCS.prototype = {
getRgb: function altcs_getRgb(color) { getRgb: function AlternateCS_getRgb(color) {
var tinted = this.tintFn(color); var tinted = this.tintFn(color);
return this.base.getRgb(tinted); return this.base.getRgb(tinted);
}, },
getRgbBuffer: function altcs_getRgbBuffer(input, bits) { getRgbBuffer: function AlternateCS_getRgbBuffer(input, bits) {
var tintFn = this.tintFn; var tintFn = this.tintFn;
var base = this.base; var base = this.base;
var scale = 1 / ((1 << bits) - 1); var scale = 1 / ((1 << bits) - 1);
@ -232,7 +232,7 @@ var AlternateCS = (function AlternateCSClosure() {
} }
return base.getRgbBuffer(baseBuf, 8); return base.getRgbBuffer(baseBuf, 8);
}, },
isDefaultDecode: function altcs_isDefaultDecode(decodeMap) { isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) {
return ColorSpace.isDefaultDecode(decodeMap, this.numComps); return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
} }
}; };
@ -275,7 +275,7 @@ var IndexedCS = (function IndexedCSClosure() {
} }
IndexedCS.prototype = { IndexedCS.prototype = {
getRgb: function indexcs_getRgb(color) { getRgb: function IndexedCS_getRgb(color) {
var numComps = this.base.numComps; var numComps = this.base.numComps;
var start = color[0] * numComps; var start = color[0] * numComps;
var c = []; var c = [];
@ -285,7 +285,7 @@ var IndexedCS = (function IndexedCSClosure() {
return this.base.getRgb(c); return this.base.getRgb(c);
}, },
getRgbBuffer: function indexcs_getRgbBuffer(input) { getRgbBuffer: function IndexedCS_getRgbBuffer(input) {
var base = this.base; var base = this.base;
var numComps = base.numComps; var numComps = base.numComps;
var lookup = this.lookup; var lookup = this.lookup;
@ -302,7 +302,7 @@ var IndexedCS = (function IndexedCSClosure() {
return base.getRgbBuffer(baseBuf, 8); return base.getRgbBuffer(baseBuf, 8);
}, },
isDefaultDecode: function indexcs_isDefaultDecode(decodeMap) { isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) {
// indexed color maps shouldn't be changed // indexed color maps shouldn't be changed
return true; return true;
} }
@ -318,11 +318,11 @@ var DeviceGrayCS = (function DeviceGrayCSClosure() {
} }
DeviceGrayCS.prototype = { DeviceGrayCS.prototype = {
getRgb: function graycs_getRgb(color) { getRgb: function DeviceGrayCS_getRgb(color) {
var c = color[0]; var c = color[0];
return [c, c, c]; return [c, c, c];
}, },
getRgbBuffer: function graycs_getRgbBuffer(input, bits) { getRgbBuffer: function DeviceGrayCS_getRgbBuffer(input, bits) {
var scale = 255 / ((1 << bits) - 1); var scale = 255 / ((1 << bits) - 1);
var length = input.length; var length = input.length;
var rgbBuf = new Uint8Array(length * 3); var rgbBuf = new Uint8Array(length * 3);
@ -334,7 +334,7 @@ var DeviceGrayCS = (function DeviceGrayCSClosure() {
} }
return rgbBuf; return rgbBuf;
}, },
isDefaultDecode: function graycs_isDefaultDecode(decodeMap) { isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) {
return ColorSpace.isDefaultDecode(decodeMap, this.numComps); return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
} }
}; };
@ -348,10 +348,10 @@ var DeviceRgbCS = (function DeviceRgbCSClosure() {
this.defaultColor = [0, 0, 0]; this.defaultColor = [0, 0, 0];
} }
DeviceRgbCS.prototype = { DeviceRgbCS.prototype = {
getRgb: function rgbcs_getRgb(color) { getRgb: function DeviceRgbCS_getRgb(color) {
return color; return color;
}, },
getRgbBuffer: function rgbcs_getRgbBuffer(input, bits) { getRgbBuffer: function DeviceRgbCS_getRgbBuffer(input, bits) {
if (bits == 8) if (bits == 8)
return input; return input;
var scale = 255 / ((1 << bits) - 1); var scale = 255 / ((1 << bits) - 1);
@ -361,7 +361,7 @@ var DeviceRgbCS = (function DeviceRgbCSClosure() {
rgbBuf[i] = (scale * input[i]) | 0; rgbBuf[i] = (scale * input[i]) | 0;
return rgbBuf; return rgbBuf;
}, },
isDefaultDecode: function rgbcs_isDefaultDecode(decodeMap) { isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) {
return ColorSpace.isDefaultDecode(decodeMap, this.numComps); return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
} }
}; };
@ -375,7 +375,7 @@ var DeviceCmykCS = (function DeviceCmykCSClosure() {
this.defaultColor = [0, 0, 0, 1]; this.defaultColor = [0, 0, 0, 1];
} }
DeviceCmykCS.prototype = { DeviceCmykCS.prototype = {
getRgb: function cmykcs_getRgb(color) { getRgb: function DeviceCmykCS_getRgb(color) {
var c = color[0], m = color[1], y = color[2], k = color[3]; var c = color[0], m = color[1], y = color[2], k = color[3];
// CMYK -> CMY: http://www.easyrgb.com/index.php?X=MATH&H=14#text14 // CMYK -> CMY: http://www.easyrgb.com/index.php?X=MATH&H=14#text14
@ -390,7 +390,7 @@ var DeviceCmykCS = (function DeviceCmykCSClosure() {
return [r, g, b]; return [r, g, b];
}, },
getRgbBuffer: function cmykcs_getRgbBuffer(colorBuf, bits) { getRgbBuffer: function DeviceCmykCS_getRgbBuffer(colorBuf, bits) {
var scale = 1 / ((1 << bits) - 1); var scale = 1 / ((1 << bits) - 1);
var length = colorBuf.length / 4; var length = colorBuf.length / 4;
var rgbBuf = new Uint8Array(length * 3); var rgbBuf = new Uint8Array(length * 3);
@ -409,7 +409,7 @@ var DeviceCmykCS = (function DeviceCmykCSClosure() {
return rgbBuf; return rgbBuf;
}, },
isDefaultDecode: function cmykcs_isDefaultDecode(decodeMap) { isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) {
return ColorSpace.isDefaultDecode(decodeMap, this.numComps); return ColorSpace.isDefaultDecode(decodeMap, this.numComps);
} }
}; };
@ -473,7 +473,7 @@ var LabCS = (function LabCSClosure() {
} }
LabCS.prototype = { LabCS.prototype = {
getRgb: function labcs_getRgb(color) { getRgb: function LabCS_getRgb(color) {
// Ls,as,bs <---> L*,a*,b* in the spec // Ls,as,bs <---> L*,a*,b* in the spec
var Ls = color[0], as = color[1], bs = color[2]; var Ls = color[0], as = color[1], bs = color[2];
@ -499,7 +499,7 @@ var LabCS = (function LabCSClosure() {
return Util.apply3dTransform(XYZtoRGB, [X, Y, Z]); return Util.apply3dTransform(XYZtoRGB, [X, Y, Z]);
}, },
getRgbBuffer: function labcs_getRgbBuffer(input, bits) { getRgbBuffer: function LabCS_getRgbBuffer(input, bits) {
if (bits == 8) if (bits == 8)
return input; return input;
var scale = 255 / ((1 << bits) - 1); var scale = 255 / ((1 << bits) - 1);
@ -517,7 +517,7 @@ var LabCS = (function LabCSClosure() {
return rgbBuf; return rgbBuf;
}, },
isDefaultDecode: function labcs_isDefaultDecode(decodeMap) { isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) {
// From Table 90 in Adobe's: // From Table 90 in Adobe's:
// "Document management - Portable document format", 1st ed, 2008 // "Document management - Portable document format", 1st ed, 2008
if (decodeMap[0] === 0 && decodeMap[1] === 100 && if (decodeMap[0] === 0 && decodeMap[1] === 100 &&

View File

@ -72,10 +72,10 @@ var Page = (function PageClosure() {
} }
Page.prototype = { Page.prototype = {
getPageProp: function pageGetPageProp(key) { getPageProp: function Page_getPageProp(key) {
return this.pageDict.get(key); return this.pageDict.get(key);
}, },
inheritPageProp: function pageInheritPageProp(key) { inheritPageProp: function Page_inheritPageProp(key) {
var dict = this.pageDict; var dict = this.pageDict;
var obj = dict.get(key); var obj = dict.get(key);
while (obj === undefined) { while (obj === undefined) {
@ -170,8 +170,8 @@ var Page = (function PageClosure() {
return shadow(this, 'rotate', rotate); return shadow(this, 'rotate', rotate);
}, },
startRenderingFromOperatorList: function pageStartRenderingFromOperatorList( startRenderingFromOperatorList:
operatorList, fonts) { function Page_startRenderingFromOperatorList(operatorList, fonts) {
var self = this; var self = this;
this.operatorList = operatorList; this.operatorList = operatorList;
@ -190,7 +190,7 @@ var Page = (function PageClosure() {
); );
}, },
getOperatorList: function pageGetOperatorList(handler, dependency) { getOperatorList: function Page_getOperatorList(handler, dependency) {
if (this.operatorList) { if (this.operatorList) {
// content was compiled // content was compiled
return this.operatorList; return this.operatorList;
@ -220,7 +220,7 @@ var Page = (function PageClosure() {
return this.operatorList; return this.operatorList;
}, },
ensureFonts: function pageEnsureFonts(fonts, callback) { ensureFonts: function Page_ensureFonts(fonts, callback) {
this.stats.time('Font Loading'); this.stats.time('Font Loading');
// Convert the font names to the corresponding font obj. // Convert the font names to the corresponding font obj.
for (var i = 0, ii = fonts.length; i < ii; i++) { for (var i = 0, ii = fonts.length; i < ii; i++) {
@ -238,7 +238,7 @@ var Page = (function PageClosure() {
); );
}, },
display: function pageDisplay(gfx, callback) { display: function Page_display(gfx, callback) {
var stats = this.stats; var stats = this.stats;
stats.time('Rendering'); stats.time('Rendering');
var xref = this.xref; var xref = this.xref;
@ -276,7 +276,7 @@ var Page = (function PageClosure() {
} }
next(); next();
}, },
rotatePoint: function pageRotatePoint(x, y, reverse) { rotatePoint: function Page_rotatePoint(x, y, reverse) {
var rotate = reverse ? (360 - this.rotate) : this.rotate; var rotate = reverse ? (360 - this.rotate) : this.rotate;
switch (rotate) { switch (rotate) {
case 180: case 180:
@ -291,7 +291,7 @@ var Page = (function PageClosure() {
return {x: x, y: this.height - y}; return {x: x, y: this.height - y};
} }
}, },
getLinks: function pageGetLinks() { getLinks: function Page_getLinks() {
var links = []; var links = [];
var annotations = pageGetAnnotations(); var annotations = pageGetAnnotations();
var i, n = annotations.length; var i, n = annotations.length;
@ -302,7 +302,7 @@ var Page = (function PageClosure() {
} }
return links; return links;
}, },
getAnnotations: function pageGetAnnotations() { getAnnotations: function Page_getAnnotations() {
var xref = this.xref; var xref = this.xref;
function getInheritableProperty(annotation, name) { function getInheritableProperty(annotation, name) {
var item = annotation; var item = annotation;
@ -434,7 +434,7 @@ var Page = (function PageClosure() {
} }
return items; return items;
}, },
startRendering: function pageStartRendering(ctx, callback, textLayer) { startRendering: function Page_startRendering(ctx, callback, textLayer) {
var stats = this.stats; var stats = this.stats;
stats.time('Overall'); stats.time('Overall');
// If there is no displayReadyPromise yet, then the operatorList was never // If there is no displayReadyPromise yet, then the operatorList was never
@ -571,7 +571,7 @@ var PDFDocModel = (function PDFDocModelClosure() {
}, },
// Find the header, remove leading garbage and setup the stream // Find the header, remove leading garbage and setup the stream
// starting from the header. // starting from the header.
checkHeader: function pdfDocCheckHeader() { checkHeader: function PDFDocModel_checkHeader() {
var stream = this.stream; var stream = this.stream;
stream.reset(); stream.reset();
if (find(stream, '%PDF-', 1024)) { if (find(stream, '%PDF-', 1024)) {
@ -581,7 +581,7 @@ var PDFDocModel = (function PDFDocModelClosure() {
} }
// May not be a PDF file, continue anyway. // May not be a PDF file, continue anyway.
}, },
setup: function pdfDocSetup(ownerPassword, userPassword) { setup: function PDFDocModel_setup(ownerPassword, userPassword) {
this.checkHeader(); this.checkHeader();
var xref = new XRef(this.stream, var xref = new XRef(this.stream,
this.startXRef, this.startXRef,
@ -595,14 +595,14 @@ var PDFDocModel = (function PDFDocModelClosure() {
// shadow the prototype getter // shadow the prototype getter
return shadow(this, 'numPages', num); return shadow(this, 'numPages', num);
}, },
getDocumentInfo: function pdfDocGetDocumentInfo() { getDocumentInfo: function PDFDocModel_getDocumentInfo() {
var info; var info;
if (this.xref.trailer.has('Info')) if (this.xref.trailer.has('Info'))
info = this.xref.trailer.get('Info'); info = this.xref.trailer.get('Info');
return shadow(this, 'getDocumentInfo', info); return shadow(this, 'getDocumentInfo', info);
}, },
getFingerprint: function pdfDocGetFingerprint() { getFingerprint: function PDFDocModel_getFingerprint() {
var xref = this.xref, fileID; var xref = this.xref, fileID;
if (xref.trailer.has('ID')) { if (xref.trailer.has('ID')) {
fileID = ''; fileID = '';
@ -623,7 +623,7 @@ var PDFDocModel = (function PDFDocModelClosure() {
return shadow(this, 'getFingerprint', fileID); return shadow(this, 'getFingerprint', fileID);
}, },
getPage: function pdfDocGetPage(n) { getPage: function PDFDocModel_getPage(n) {
return this.catalog.getPage(n); return this.catalog.getPage(n);
} }
}; };
@ -712,13 +712,13 @@ var PDFDoc = (function PDFDocClosure() {
} }
PDFDoc.prototype = { PDFDoc.prototype = {
setupFakeWorker: function() { setupFakeWorker: function PDFDoc_setupFakeWorker() {
// If we don't use a worker, just post/sendMessage to the main thread. // If we don't use a worker, just post/sendMessage to the main thread.
var fakeWorker = { var fakeWorker = {
postMessage: function pdfDocPostMessage(obj) { postMessage: function PDFDoc_postMessage(obj) {
fakeWorker.onmessage({data: obj}); fakeWorker.onmessage({data: obj});
}, },
terminate: function pdfDocTerminate() {} terminate: function PDFDoc_terminate() {}
}; };
var messageHandler = new MessageHandler('main', fakeWorker); var messageHandler = new MessageHandler('main', fakeWorker);
@ -730,7 +730,7 @@ var PDFDoc = (function PDFDocClosure() {
}, },
setupMessageHandler: function(messageHandler) { setupMessageHandler: function PDFDoc_setupMessageHandler(messageHandler) {
this.messageHandler = messageHandler; this.messageHandler = messageHandler;
messageHandler.on('page', function pdfDocPage(data) { messageHandler.on('page', function pdfDocPage(data) {
@ -829,7 +829,7 @@ var PDFDoc = (function PDFDocClosure() {
return this.pdfModel.numPages; return this.pdfModel.numPages;
}, },
startRendering: function pdfDocStartRendering(page) { startRendering: function PDFDoc_startRendering(page) {
// The worker might not be ready to receive the page request yet. // The worker might not be ready to receive the page request yet.
this.workerReadyPromise.then(function pdfDocStartRenderingThen() { this.workerReadyPromise.then(function pdfDocStartRenderingThen() {
page.stats.time('Page Request'); page.stats.time('Page Request');
@ -837,7 +837,7 @@ var PDFDoc = (function PDFDocClosure() {
}.bind(this)); }.bind(this));
}, },
getPage: function pdfDocGetPage(n) { getPage: function PDFDoc_getPage(n) {
if (this.pageCache[n]) if (this.pageCache[n])
return this.pageCache[n]; return this.pageCache[n];
@ -849,7 +849,7 @@ var PDFDoc = (function PDFDocClosure() {
return (this.pageCache[n] = page); return (this.pageCache[n] = page);
}, },
destroy: function pdfDocDestroy() { destroy: function PDFDoc_destroy() {
if (this.worker) if (this.worker)
this.worker.terminate(); this.worker.terminate();

View File

@ -21,7 +21,7 @@ var ARCFourCipher = (function ARCFourCipherClosure() {
} }
ARCFourCipher.prototype = { ARCFourCipher.prototype = {
encryptBlock: function arcFourCipherEncryptBlock(data) { encryptBlock: function ARCFourCipher_encryptBlock(data) {
var i, n = data.length, tmp, tmp2; var i, n = data.length, tmp, tmp2;
var a = this.a, b = this.b, s = this.s; var a = this.a, b = this.b, s = this.s;
var output = new Uint8Array(n); var output = new Uint8Array(n);
@ -133,7 +133,7 @@ var NullCipher = (function NullCipherClosure() {
} }
NullCipher.prototype = { NullCipher.prototype = {
decryptBlock: function nullCipherDecryptBlock(data) { decryptBlock: function NullCipher_decryptBlock(data) {
return data; return data;
} }
}; };
@ -371,7 +371,7 @@ var AES128Cipher = (function AES128CipherClosure() {
} }
AES128Cipher.prototype = { AES128Cipher.prototype = {
decryptBlock: function aes128CipherDecryptBlock(data) { decryptBlock: function AES128Cipher_decryptBlock(data) {
var i, sourceLength = data.length; var i, sourceLength = data.length;
var buffer = this.buffer, bufferLength = this.bufferPosition; var buffer = this.buffer, bufferLength = this.bufferPosition;
// waiting for IV values -- they are at the start of the stream // waiting for IV values -- they are at the start of the stream
@ -400,7 +400,7 @@ var CipherTransform = (function CipherTransformClosure() {
this.streamCipherConstructor = streamCipherConstructor; this.streamCipherConstructor = streamCipherConstructor;
} }
CipherTransform.prototype = { CipherTransform.prototype = {
createStream: function cipherTransformCreateStream(stream) { createStream: function CipherTransform_createStream(stream) {
var cipher = new this.streamCipherConstructor(); var cipher = new this.streamCipherConstructor();
return new DecryptStream(stream, return new DecryptStream(stream,
function cipherTransformDecryptStream(data) { function cipherTransformDecryptStream(data) {
@ -408,7 +408,7 @@ var CipherTransform = (function CipherTransformClosure() {
} }
); );
}, },
decryptString: function cipherTransformDecryptString(s) { decryptString: function CipherTransform_decryptString(s) {
var cipher = new this.stringCipherConstructor(); var cipher = new this.stringCipherConstructor();
var data = stringToBytes(s); var data = stringToBytes(s);
data = cipher.decryptBlock(data); data = cipher.decryptBlock(data);
@ -573,8 +573,8 @@ var CipherTransformFactory = (function CipherTransformFactoryClosure() {
} }
CipherTransformFactory.prototype = { CipherTransformFactory.prototype = {
createCipherTransform: function buildCipherCreateCipherTransform(num, createCipherTransform:
gen) { function CipherTransformFactory_createCipherTransform(num, gen) {
if (this.algorithm == 4) { if (this.algorithm == 4) {
return new CipherTransform( return new CipherTransform(
buildCipherConstructor(this.cf, this.stmf, buildCipherConstructor(this.cf, this.stmf,

View File

@ -112,8 +112,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
}; };
PartialEvaluator.prototype = { PartialEvaluator.prototype = {
getOperatorList: function partialEvaluatorGetOperatorList(stream, resources, getOperatorList: function PartialEvaluator_getOperatorList(stream,
dependency, queue) { resources,
dependency,
queue) {
var self = this; var self = this;
var xref = this.xref; var xref = this.xref;
@ -518,8 +520,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
properties.hasEncoding = hasEncoding; properties.hasEncoding = hasEncoding;
}, },
readToUnicode: readToUnicode: function PartialEvaluator_readToUnicode(toUnicode, xref) {
function partialEvaluatorReadToUnicode(toUnicode, xref) {
var cmapObj = toUnicode; var cmapObj = toUnicode;
var charToUnicode = []; var charToUnicode = [];
if (isName(cmapObj)) { if (isName(cmapObj)) {
@ -638,8 +639,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
} }
return charToUnicode; return charToUnicode;
}, },
readCidToGidMap: readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {
function partialEvaluatorReadCidToGidMap(cidToGidStream) {
// Extract the encoding from the CIDToGIDMap // Extract the encoding from the CIDToGIDMap
var glyphsData = cidToGidStream.getBytes(); var glyphsData = cidToGidStream.getBytes();
@ -656,7 +656,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
return result; return result;
}, },
extractWidths: function partialEvaluatorWidths(dict, extractWidths: function PartialEvaluator_extractWidths(dict,
xref, xref,
descriptor, descriptor,
properties) { properties) {
@ -708,7 +708,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
properties.widths = glyphsWidths; properties.widths = glyphsWidths;
}, },
getBaseFontMetrics: function getBaseFontMetrics(name) { getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {
var defaultWidth = 0, widths = []; var defaultWidth = 0, widths = [];
var glyphWidths = Metrics[stdFontMap[name] || name]; var glyphWidths = Metrics[stdFontMap[name] || name];
if (isNum(glyphWidths)) { if (isNum(glyphWidths)) {
@ -723,8 +723,10 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
}; };
}, },
translateFont: function partialEvaluatorTranslateFont(dict, xref, resources, translateFont: function PartialEvaluator_translateFont(dict,
dependency) { xref,
resources,
dependency) {
var baseDict = dict; var baseDict = dict;
var type = dict.get('Subtype'); var type = dict.get('Subtype');
assertWellFormed(isName(type), 'invalid font Subtype'); assertWellFormed(isName(type), 'invalid font Subtype');

View File

@ -1267,7 +1267,7 @@ var Font = (function FontClosure() {
mimetype: null, mimetype: null,
encoding: null, encoding: null,
checkAndRepair: function font_checkAndRepair(name, font, properties) { checkAndRepair: function Font_checkAndRepair(name, font, properties) {
function readTableEntry(file) { function readTableEntry(file) {
var tag = file.getBytes(4); var tag = file.getBytes(4);
tag = String.fromCharCode(tag[0]) + tag = String.fromCharCode(tag[0]) +
@ -2122,7 +2122,7 @@ var Font = (function FontClosure() {
return stringToArray(ttf.file); return stringToArray(ttf.file);
}, },
convert: function font_convert(fontName, font, properties) { convert: function Font_convert(fontName, font, properties) {
function isFixedPitch(glyphs) { function isFixedPitch(glyphs) {
for (var i = 0, ii = glyphs.length - 1; i < ii; i++) { for (var i = 0, ii = glyphs.length - 1; i < ii; i++) {
if (glyphs[i] != glyphs[i + 1]) if (glyphs[i] != glyphs[i + 1])
@ -2264,7 +2264,7 @@ var Font = (function FontClosure() {
return stringToArray(otf.file); return stringToArray(otf.file);
}, },
buildToFontChar: function font_buildToFontChar(toUnicode) { buildToFontChar: function Font_buildToFontChar(toUnicode) {
var result = []; var result = [];
var unusedUnicode = kCmapGlyphOffset; var unusedUnicode = kCmapGlyphOffset;
for (var i = 0, ii = toUnicode.length; i < ii; i++) { for (var i = 0, ii = toUnicode.length; i < ii; i++) {
@ -2277,7 +2277,7 @@ var Font = (function FontClosure() {
return result; return result;
}, },
rebuildToUnicode: function font_rebuildToUnicode(properties) { rebuildToUnicode: function Font_rebuildToUnicode(properties) {
var firstChar = properties.firstChar, lastChar = properties.lastChar; var firstChar = properties.firstChar, lastChar = properties.lastChar;
var map = []; var map = [];
if (properties.composite) { if (properties.composite) {
@ -2299,7 +2299,7 @@ var Font = (function FontClosure() {
this.toUnicode = map; this.toUnicode = map;
}, },
loadCidToUnicode: function font_loadCidToUnicode(properties) { loadCidToUnicode: function Font_loadCidToUnicode(properties) {
if (!properties.cidSystemInfo) if (!properties.cidSystemInfo)
return; return;
@ -2348,7 +2348,7 @@ var Font = (function FontClosure() {
} }
}, },
bindDOM: function font_bindDom(data) { bindDOM: function Font_bindDOM(data) {
var fontName = this.loadedName; var fontName = this.loadedName;
// Add the font-face rule to the document // Add the font-face rule to the document
@ -2400,7 +2400,7 @@ var Font = (function FontClosure() {
return shadow(this, 'spaceWidth', width); return shadow(this, 'spaceWidth', width);
}, },
charToGlyph: function fonts_charToGlyph(charcode) { charToGlyph: function Font_charToGlyph(charcode) {
var fontCharCode, width, operatorList, disabled; var fontCharCode, width, operatorList, disabled;
var width = this.widths[charcode]; var width = this.widths[charcode];
@ -2486,7 +2486,7 @@ var Font = (function FontClosure() {
}; };
}, },
charsToGlyphs: function fonts_charsToGlyphs(chars) { charsToGlyphs: function Font_charsToGlyphs(chars) {
var charsCache = this.charsCache; var charsCache = this.charsCache;
var glyphs; var glyphs;
@ -2850,7 +2850,7 @@ var Type1Parser = function type1Parser() {
return c == ' ' || c == '\n' || c == '\x0d'; return c == ' ' || c == '\n' || c == '\x0d';
} }
this.extractFontProgram = function t1_extractFontProgram(stream) { this.extractFontProgram = function Type1Parser_extractFontProgram(stream) {
var eexec = decrypt(stream, kEexecEncryptionKey, 4); var eexec = decrypt(stream, kEexecEncryptionKey, 4);
var eexecStr = ''; var eexecStr = '';
for (var i = 0, ii = eexec.length; i < ii; i++) for (var i = 0, ii = eexec.length; i < ii; i++)
@ -2975,7 +2975,8 @@ var Type1Parser = function type1Parser() {
return program; return program;
}; };
this.extractFontHeader = function t1_extractFontHeader(stream, properties) { this.extractFontHeader = function Type1Parser_extractFontHeader(stream,
properties) {
var headerString = ''; var headerString = '';
for (var i = 0, ii = stream.length; i < ii; i++) for (var i = 0, ii = stream.length; i < ii; i++)
headerString += String.fromCharCode(stream[i]); headerString += String.fromCharCode(stream[i]);
@ -3143,7 +3144,8 @@ var Type1Font = function Type1Font(name, file, properties) {
}; };
Type1Font.prototype = { Type1Font.prototype = {
createCFFIndexHeader: function createCFFIndexHeader(objects, isByte) { createCFFIndexHeader: function Type1Font_createCFFIndexHeader(objects,
isByte) {
// First 2 bytes contains the number of objects contained into this index // First 2 bytes contains the number of objects contained into this index
var count = objects.length; var count = objects.length;
@ -3179,7 +3181,7 @@ Type1Font.prototype = {
return data; return data;
}, },
encodeNumber: function encodeNumber(value) { encodeNumber: function Type1Font_encodeNumber(value) {
// some of the fonts has ouf-of-range values // some of the fonts has ouf-of-range values
// they are just arithmetic overflows // they are just arithmetic overflows
// make sanitizer happy // make sanitizer happy
@ -3197,7 +3199,7 @@ Type1Font.prototype = {
} }
}, },
getOrderedCharStrings: function type1Font_getOrderedCharStrings(glyphs, getOrderedCharStrings: function Type1Font_getOrderedCharStrings(glyphs,
properties) { properties) {
var charstrings = []; var charstrings = [];
var i, length, glyphName; var i, length, glyphName;
@ -3223,7 +3225,8 @@ Type1Font.prototype = {
return charstrings; return charstrings;
}, },
getType2Charstrings: function getType2Charstrings(type1Charstrings) { getType2Charstrings: function Type1Font_getType2Charstrings(
type1Charstrings) {
var type2Charstrings = []; var type2Charstrings = [];
var count = type1Charstrings.length; var count = type1Charstrings.length;
for (var i = 0; i < count; i++) { for (var i = 0; i < count; i++) {
@ -3234,7 +3237,7 @@ Type1Font.prototype = {
return type2Charstrings; return type2Charstrings;
}, },
getType2Subrs: function getType2Subrs(type1Subrs) { getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {
var bias = 0; var bias = 0;
var count = type1Subrs.length; var count = type1Subrs.length;
if (count < 1240) if (count < 1240)
@ -3286,7 +3289,7 @@ Type1Font.prototype = {
'hvcurveto': 31 'hvcurveto': 31
}, },
flattenCharstring: function flattenCharstring(charstring, map) { flattenCharstring: function Type1Font_flattenCharstring(charstring, map) {
// charstring changes size - can't cache .length in loop // charstring changes size - can't cache .length in loop
for (var i = 0; i < charstring.length; i++) { for (var i = 0; i < charstring.length; i++) {
var command = charstring[i]; var command = charstring[i];
@ -3313,7 +3316,7 @@ Type1Font.prototype = {
return charstring; return charstring;
}, },
wrap: function wrap(name, glyphs, charstrings, subrs, properties) { wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) {
var fields = { var fields = {
// major version, minor version, header size, offset size // major version, minor version, header size, offset size
'header': '\x01\x00\x04\x04', 'header': '\x01\x00\x04\x04',
@ -3470,7 +3473,7 @@ var CFFFont = (function CFFFontClosure() {
} }
CFFFont.prototype = { CFFFont.prototype = {
readExtra: function readExtra(cff) { readExtra: function CFFFont_readExtra(cff) {
// charstrings contains info about glyphs (one element per glyph // charstrings contains info about glyphs (one element per glyph
// containing mappings for {unicode, width}) // containing mappings for {unicode, width})
var charset = cff.charset.charset; var charset = cff.charset.charset;
@ -3485,7 +3488,7 @@ var CFFFont = (function CFFFontClosure() {
this.charstrings = charstrings; this.charstrings = charstrings;
this.glyphIds = glyphIds; this.glyphIds = glyphIds;
}, },
getCharStrings: function getCharStrings(charsets, encoding) { getCharStrings: function CFFFont_getCharStrings(charsets, encoding) {
var charstrings = []; var charstrings = [];
var unicodeUsed = []; var unicodeUsed = [];
var unassignedUnicodeItems = []; var unassignedUnicodeItems = [];
@ -3547,7 +3550,7 @@ var CFFParser = (function CFFParserClosure() {
this.properties = properties; this.properties = properties;
} }
CFFParser.prototype = { CFFParser.prototype = {
parse: function parse() { parse: function CFFParser_parse() {
var properties = this.properties; var properties = this.properties;
var cff = new CFF(); var cff = new CFF();
this.cff = cff; this.cff = cff;
@ -3604,7 +3607,7 @@ var CFFParser = (function CFFParserClosure() {
return cff; return cff;
}, },
parseHeader: function parseHeader() { parseHeader: function CFFParser_parseHeader() {
var bytes = this.bytes; var bytes = this.bytes;
var offset = 0; var offset = 0;
@ -3623,7 +3626,7 @@ var CFFParser = (function CFFParserClosure() {
var header = new CFFHeader(major, minor, hdrSize, offSize); var header = new CFFHeader(major, minor, hdrSize, offSize);
return {obj: header, endPos: hdrSize}; return {obj: header, endPos: hdrSize};
}, },
parseDict: function parseDict(dict) { parseDict: function CFFParser_parseDict(dict) {
var pos = 0; var pos = 0;
function parseOperand() { function parseOperand() {
@ -3693,7 +3696,7 @@ var CFFParser = (function CFFParserClosure() {
} }
return entries; return entries;
}, },
parseIndex: function parseIndex(pos) { parseIndex: function CFFParser_parseIndex(pos) {
var cffIndex = new CFFIndex(); var cffIndex = new CFFIndex();
var bytes = this.bytes; var bytes = this.bytes;
var count = (bytes[pos++] << 8) | bytes[pos++]; var count = (bytes[pos++] << 8) | bytes[pos++];
@ -3723,7 +3726,7 @@ var CFFParser = (function CFFParserClosure() {
} }
return {obj: cffIndex, endPos: end}; return {obj: cffIndex, endPos: end};
}, },
parseNameIndex: function parseNameIndex(index) { parseNameIndex: function CFFParser_parseNameIndex(index) {
var names = []; var names = [];
for (var i = 0, ii = index.count; i < ii; ++i) { for (var i = 0, ii = index.count; i < ii; ++i) {
var name = index.get(i); var name = index.get(i);
@ -3750,7 +3753,7 @@ var CFFParser = (function CFFParserClosure() {
} }
return names; return names;
}, },
parseStringIndex: function parseStringIndex(index) { parseStringIndex: function CFFParser_parseStringIndex(index) {
var strings = new CFFStrings(); var strings = new CFFStrings();
for (var i = 0, ii = index.count; i < ii; ++i) { for (var i = 0, ii = index.count; i < ii; ++i) {
var data = index.get(i); var data = index.get(i);
@ -3758,7 +3761,7 @@ var CFFParser = (function CFFParserClosure() {
} }
return strings; return strings;
}, },
createDict: function createDict(type, dict, strings) { createDict: function CFFParser_createDict(type, dict, strings) {
var cffDict = new type(strings); var cffDict = new type(strings);
var types = cffDict.types; var types = cffDict.types;
@ -3770,7 +3773,7 @@ var CFFParser = (function CFFParserClosure() {
} }
return cffDict; return cffDict;
}, },
parseCharStrings: function parseCharStrings(charStringOffset) { parseCharStrings: function CFFParser_parseCharStrings(charStringOffset) {
var charStrings = this.parseIndex(charStringOffset).obj; var charStrings = this.parseIndex(charStringOffset).obj;
// The CFF specification state that the 'dotsection' command // The CFF specification state that the 'dotsection' command
// (12, 0) is deprecated and treated as a no-op, but all Type2 // (12, 0) is deprecated and treated as a no-op, but all Type2
@ -3799,7 +3802,7 @@ var CFFParser = (function CFFParserClosure() {
} }
return charStrings; return charStrings;
}, },
parsePrivateDict: function parsePrivateDict(parentDict) { parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {
// no private dict, do nothing // no private dict, do nothing
if (!parentDict.hasName('Private')) if (!parentDict.hasName('Private'))
return; return;
@ -3837,7 +3840,7 @@ var CFFParser = (function CFFParserClosure() {
var subrsIndex = this.parseIndex(relativeOffset); var subrsIndex = this.parseIndex(relativeOffset);
privateDict.subrsIndex = subrsIndex.obj; privateDict.subrsIndex = subrsIndex.obj;
}, },
parseCharsets: function parsecharsets(pos, length, strings, cid) { parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {
if (pos == 0) { if (pos == 0) {
return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE,
ISOAdobeCharset); ISOAdobeCharset);
@ -3889,7 +3892,10 @@ var CFFParser = (function CFFParserClosure() {
return new CFFCharset(false, format, charset, raw); return new CFFCharset(false, format, charset, raw);
}, },
parseEncoding: function parseEncoding(pos, properties, strings, charset) { parseEncoding: function CFFParser_parseEncoding(pos,
properties,
strings,
charset) {
var encoding = {}; var encoding = {};
var bytes = this.bytes; var bytes = this.bytes;
var predefined = false; var predefined = false;
@ -3958,7 +3964,7 @@ var CFFParser = (function CFFParserClosure() {
format = format & 0x7f; format = format & 0x7f;
return new CFFEncoding(predefined, format, encoding, raw); return new CFFEncoding(predefined, format, encoding, raw);
}, },
parseFDSelect: function parseFDSelect(pos, length) { parseFDSelect: function CFFParser_parseFDSelect(pos, length) {
var start = pos; var start = pos;
var bytes = this.bytes; var bytes = this.bytes;
var format = bytes[pos++]; var format = bytes[pos++];
@ -4030,14 +4036,14 @@ var CFFStrings = (function CFFStringsClosure() {
this.strings = []; this.strings = [];
} }
CFFStrings.prototype = { CFFStrings.prototype = {
get: function get(index) { get: function CFFStrings_get(index) {
if (index >= 0 && index <= 390) if (index >= 0 && index <= 390)
return CFFStandardStrings[index]; return CFFStandardStrings[index];
if (index - 391 <= this.strings.length) if (index - 391 <= this.strings.length)
return this.strings[index - 391]; return this.strings[index - 391];
return CFFStandardStrings[0]; return CFFStandardStrings[0];
}, },
add: function add(value) { add: function CFFStrings_add(value) {
this.strings.push(value); this.strings.push(value);
}, },
get count() { get count() {
@ -4053,11 +4059,11 @@ var CFFIndex = (function CFFIndexClosure() {
this.length = 0; this.length = 0;
} }
CFFIndex.prototype = { CFFIndex.prototype = {
add: function add(data) { add: function CFFIndex_add(data) {
this.length += data.length; this.length += data.length;
this.objects.push(data); this.objects.push(data);
}, },
get: function get(index) { get: function CFFIndex_get(index) {
return this.objects[index]; return this.objects[index];
}, },
get count() { get count() {
@ -4080,7 +4086,7 @@ var CFFDict = (function CFFDictClosure() {
} }
CFFDict.prototype = { CFFDict.prototype = {
// value should always be an array // value should always be an array
setByKey: function setByKey(key, value) { setByKey: function CFFDict_setByKey(key, value) {
if (!(key in this.keyToNameMap)) if (!(key in this.keyToNameMap))
return false; return false;
// ignore empty values // ignore empty values
@ -4093,10 +4099,10 @@ var CFFDict = (function CFFDictClosure() {
this.values[key] = value; this.values[key] = value;
return true; return true;
}, },
hasName: function hasName(name) { hasName: function CFFDict_hasName(name) {
return this.nameToKeyMap[name] in this.values; return this.nameToKeyMap[name] in this.values;
}, },
getByName: function getByName(name) { getByName: function CFFDict_getByName(name) {
if (!(name in this.nameToKeyMap)) if (!(name in this.nameToKeyMap))
error('Invalid dictionary name "' + name + '"'); error('Invalid dictionary name "' + name + '"');
var key = this.nameToKeyMap[name]; var key = this.nameToKeyMap[name];
@ -4104,11 +4110,11 @@ var CFFDict = (function CFFDictClosure() {
return this.defaults[key]; return this.defaults[key];
return this.values[key]; return this.values[key];
}, },
removeByName: function removeByName(name) { removeByName: function CFFDict_removeByName(name) {
delete this.values[this.nameToKeyMap[name]]; delete this.values[this.nameToKeyMap[name]];
} }
}; };
CFFDict.createTables = function createTables(layout) { CFFDict.createTables = function CFFDict_createTables(layout) {
var tables = { var tables = {
keyToNameMap: {}, keyToNameMap: {},
nameToKeyMap: {}, nameToKeyMap: {},
@ -4265,20 +4271,22 @@ var CFFOffsetTracker = (function CFFOffsetTrackerClosure() {
this.offsets = {}; this.offsets = {};
} }
CFFOffsetTracker.prototype = { CFFOffsetTracker.prototype = {
isTracking: function isTracking(key) { isTracking: function CFFOffsetTracker_isTracking(key) {
return key in this.offsets; return key in this.offsets;
}, },
track: function track(key, location) { track: function CFFOffsetTracker_track(key, location) {
if (key in this.offsets) if (key in this.offsets)
error('Already tracking location of ' + key); error('Already tracking location of ' + key);
this.offsets[key] = location; this.offsets[key] = location;
}, },
offset: function offset(value) { offset: function CFFOffsetTracker_offset(value) {
for (var key in this.offsets) { for (var key in this.offsets) {
this.offsets[key] += value; this.offsets[key] += value;
} }
}, },
setEntryLocation: function setEntryLocation(key, values, output) { setEntryLocation: function CFFOffsetTracker_setEntryLocation(key,
values,
output) {
if (!(key in this.offsets)) if (!(key in this.offsets))
error('Not tracking location of ' + key); error('Not tracking location of ' + key);
var data = output.data; var data = output.data;
@ -4319,12 +4327,12 @@ var CFFCompiler = (function CFFCompilerClosure() {
this.cff = cff; this.cff = cff;
} }
CFFCompiler.prototype = { CFFCompiler.prototype = {
compile: function compile() { compile: function CFFCompiler_compile() {
var cff = this.cff; var cff = this.cff;
var output = { var output = {
data: [], data: [],
length: 0, length: 0,
add: function add(data) { add: function CFFCompiler_add(data) {
this.data = this.data.concat(data); this.data = this.data.concat(data);
this.length = this.data.length; this.length = this.data.length;
} }
@ -4393,13 +4401,13 @@ var CFFCompiler = (function CFFCompilerClosure() {
return output.data; return output.data;
}, },
encodeNumber: function encodeNumber(value) { encodeNumber: function CFFCompiler_encodeNumber(value) {
if (parseFloat(value) == parseInt(value) && !isNaN(value)) // isInt if (parseFloat(value) == parseInt(value) && !isNaN(value)) // isInt
return this.encodeInteger(value); return this.encodeInteger(value);
else else
return this.encodeFloat(value); return this.encodeFloat(value);
}, },
encodeFloat: function encodeFloat(value) { encodeFloat: function CFFCompiler_encodeFloat(value) {
value = value.toString(); value = value.toString();
// Strip off the any leading zeros. // Strip off the any leading zeros.
if (value.substr(0, 2) === '0.') if (value.substr(0, 2) === '0.')
@ -4432,7 +4440,7 @@ var CFFCompiler = (function CFFCompilerClosure() {
out.push(nibbles[i] << 4 | nibbles[i + 1]); out.push(nibbles[i] << 4 | nibbles[i + 1]);
return out; return out;
}, },
encodeInteger: function encodeInteger(value) { encodeInteger: function CFFCompiler_encodeInteger(value) {
var code; var code;
if (value >= -107 && value <= 107) { if (value >= -107 && value <= 107) {
code = [value + 139]; code = [value + 139];
@ -4453,7 +4461,7 @@ var CFFCompiler = (function CFFCompilerClosure() {
} }
return code; return code;
}, },
compileHeader: function compileHeader(header) { compileHeader: function CFFCompiler_compileHeader(header) {
return [ return [
header.major, header.major,
header.minor, header.minor,
@ -4461,13 +4469,13 @@ var CFFCompiler = (function CFFCompilerClosure() {
header.offSize header.offSize
]; ];
}, },
compileNameIndex: function compileNameIndex(names) { compileNameIndex: function CFFCompiler_compileNameIndex(names) {
var nameIndex = new CFFIndex(); var nameIndex = new CFFIndex();
for (var i = 0, ii = names.length; i < ii; ++i) for (var i = 0, ii = names.length; i < ii; ++i)
nameIndex.add(stringToArray(names[i])); nameIndex.add(stringToArray(names[i]));
return this.compileIndex(nameIndex); return this.compileIndex(nameIndex);
}, },
compileTopDicts: function compileTopDicts(dicts, length) { compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length) {
var fontDictTrackers = []; var fontDictTrackers = [];
var fdArrayIndex = new CFFIndex(); var fdArrayIndex = new CFFIndex();
for (var i = 0, ii = dicts.length; i < ii; ++i) { for (var i = 0, ii = dicts.length; i < ii; ++i) {
@ -4484,7 +4492,9 @@ var CFFCompiler = (function CFFCompilerClosure() {
output: fdArrayIndex output: fdArrayIndex
}; };
}, },
compilePrivateDicts: function compilePrivateDicts(dicts, trackers, output) { compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts,
trackers,
output) {
for (var i = 0, ii = dicts.length; i < ii; ++i) { for (var i = 0, ii = dicts.length; i < ii; ++i) {
var fontDict = dicts[i]; var fontDict = dicts[i];
if (!fontDict.privateDict || !fontDict.hasName('Private')) if (!fontDict.privateDict || !fontDict.hasName('Private'))
@ -4507,7 +4517,7 @@ var CFFCompiler = (function CFFCompilerClosure() {
} }
} }
}, },
compileDict: function compileDict(dict, offsetTracker) { compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {
var out = []; var out = [];
// The dictionary keys must be in a certain order. // The dictionary keys must be in a certain order.
var order = dict.order; var order = dict.order;
@ -4558,35 +4568,35 @@ var CFFCompiler = (function CFFCompilerClosure() {
} }
return out; return out;
}, },
compileStringIndex: function compileStringIndex(strings) { compileStringIndex: function CFFCompiler_compileStringIndex(strings) {
var stringIndex = new CFFIndex(); var stringIndex = new CFFIndex();
for (var i = 0, ii = strings.length; i < ii; ++i) for (var i = 0, ii = strings.length; i < ii; ++i)
stringIndex.add(stringToArray(strings[i])); stringIndex.add(stringToArray(strings[i]));
return this.compileIndex(stringIndex); return this.compileIndex(stringIndex);
}, },
compileGlobalSubrIndex: function compileGlobalSubrIndex() { compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {
var globalSubrIndex = this.cff.globalSubrIndex; var globalSubrIndex = this.cff.globalSubrIndex;
this.out.writeByteArray(this.compileIndex(globalSubrIndex)); this.out.writeByteArray(this.compileIndex(globalSubrIndex));
}, },
compileCharStrings: function compileCharStrings(charStrings) { compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {
return this.compileIndex(charStrings); return this.compileIndex(charStrings);
}, },
compileCharset: function compileCharset(charset) { compileCharset: function CFFCompiler_compileCharset(charset) {
return this.compileTypedArray(charset.raw); return this.compileTypedArray(charset.raw);
}, },
compileEncoding: function compileEncoding(encoding) { compileEncoding: function CFFCompiler_compileEncoding(encoding) {
return this.compileTypedArray(encoding.raw); return this.compileTypedArray(encoding.raw);
}, },
compileFDSelect: function compileFDSelect(fdSelect) { compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {
return this.compileTypedArray(fdSelect); return this.compileTypedArray(fdSelect);
}, },
compileTypedArray: function compileTypedArray(data) { compileTypedArray: function CFFCompiler_compileTypedArray(data) {
var out = []; var out = [];
for (var i = 0, ii = data.length; i < ii; ++i) for (var i = 0, ii = data.length; i < ii; ++i)
out[i] = data[i]; out[i] = data[i];
return out; return out;
}, },
compileIndex: function compileIndex(index, trackers) { compileIndex: function CFFCompiler_compileIndex(index, trackers) {
trackers = trackers || []; trackers = trackers || [];
var objects = index.objects; var objects = index.objects;
// First 2 bytes contains the number of objects contained into this index // First 2 bytes contains the number of objects contained into this index

View File

@ -10,7 +10,7 @@ var PDFFunction = (function PDFFunctionClosure() {
var CONSTRUCT_POSTSCRIPT = 4; var CONSTRUCT_POSTSCRIPT = 4;
return { return {
getSampleArray: function pdfFunctionGetSampleArray(size, outputSize, bps, getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps,
str) { str) {
var length = 1; var length = 1;
for (var i = 0, ii = size.length; i < ii; i++) for (var i = 0, ii = size.length; i < ii; i++)
@ -38,7 +38,7 @@ var PDFFunction = (function PDFFunctionClosure() {
return array; return array;
}, },
getIR: function pdfFunctionGetIR(xref, fn) { getIR: function PDFFunction_getIR(xref, fn) {
var dict = fn.dict; var dict = fn.dict;
if (!dict) if (!dict)
dict = fn; dict = fn;
@ -57,7 +57,7 @@ var PDFFunction = (function PDFFunctionClosure() {
return typeFn.call(this, fn, dict, xref); return typeFn.call(this, fn, dict, xref);
}, },
fromIR: function pdfFunctionFromIR(IR) { fromIR: function PDFFunction_fromIR(IR) {
var type = IR[0]; var type = IR[0];
switch (type) { switch (type) {
case CONSTRUCT_SAMPLED: case CONSTRUCT_SAMPLED:
@ -72,12 +72,12 @@ var PDFFunction = (function PDFFunctionClosure() {
} }
}, },
parse: function pdfFunctionParse(xref, fn) { parse: function PDFFunction_parse(xref, fn) {
var IR = this.getIR(xref, fn); var IR = this.getIR(xref, fn);
return this.fromIR(IR); return this.fromIR(IR);
}, },
constructSampled: function pdfFunctionConstructSampled(str, dict) { constructSampled: function PDFFunction_constructSampled(str, dict) {
function toMultiArray(arr) { function toMultiArray(arr) {
var inputLength = arr.length; var inputLength = arr.length;
var outputLength = arr.length / 2; var outputLength = arr.length / 2;
@ -133,7 +133,7 @@ var PDFFunction = (function PDFFunctionClosure() {
]; ];
}, },
constructSampledFromIR: function pdfFunctionConstructSampledFromIR(IR) { constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) {
// See chapter 3, page 109 of the PDF reference // See chapter 3, page 109 of the PDF reference
function interpolate(x, xmin, xmax, ymin, ymax) { function interpolate(x, xmin, xmax, ymin, ymax) {
return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin))); return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin)));
@ -221,8 +221,8 @@ var PDFFunction = (function PDFFunctionClosure() {
} }
}, },
constructInterpolated: constructInterpolated: function PDFFunction_constructInterpolated(str,
function pdfFunctionConstructInterpolated(str, dict) { dict) {
var c0 = dict.get('C0') || [0]; var c0 = dict.get('C0') || [0];
var c1 = dict.get('C1') || [1]; var c1 = dict.get('C1') || [1];
var n = dict.get('N'); var n = dict.get('N');
@ -239,7 +239,7 @@ var PDFFunction = (function PDFFunctionClosure() {
}, },
constructInterpolatedFromIR: constructInterpolatedFromIR:
function pdfFunctionconstructInterpolatedFromIR(IR) { function PDFFunction_constructInterpolatedFromIR(IR) {
var c0 = IR[1]; var c0 = IR[1];
var diff = IR[2]; var diff = IR[2];
var n = IR[3]; var n = IR[3];
@ -258,7 +258,7 @@ var PDFFunction = (function PDFFunctionClosure() {
} }
}, },
constructStiched: function pdfFunctionConstructStiched(fn, dict, xref) { constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
var domain = dict.get('Domain'); var domain = dict.get('Domain');
if (!domain) if (!domain)
@ -279,7 +279,7 @@ var PDFFunction = (function PDFFunctionClosure() {
return [CONSTRUCT_STICHED, domain, bounds, encode, fns]; return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
}, },
constructStichedFromIR: function pdfFunctionConstructStichedFromIR(IR) { constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {
var domain = IR[1]; var domain = IR[1];
var bounds = IR[2]; var bounds = IR[2];
var encode = IR[3]; var encode = IR[3];
@ -325,7 +325,7 @@ var PDFFunction = (function PDFFunctionClosure() {
}; };
}, },
constructPostScript: function pdfFunctionConstructPostScript(fn, dict, constructPostScript: function PDFFunction_constructPostScript(fn, dict,
xref) { xref) {
var domain = dict.get('Domain'); var domain = dict.get('Domain');
var range = dict.get('Range'); var range = dict.get('Range');
@ -343,8 +343,8 @@ var PDFFunction = (function PDFFunctionClosure() {
return [CONSTRUCT_POSTSCRIPT, domain, range, code]; return [CONSTRUCT_POSTSCRIPT, domain, range, code];
}, },
constructPostScriptFromIR: constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR(
function pdfFunctionConstructPostScriptFromIR(IR) { IR) {
var domain = IR[1]; var domain = IR[1];
var range = IR[2]; var range = IR[2];
var code = IR[3]; var code = IR[3];
@ -390,13 +390,13 @@ var FunctionCache = (function FunctionCacheClosure() {
this.total = 0; this.total = 0;
} }
FunctionCache.prototype = { FunctionCache.prototype = {
has: function has(key) { has: function FunctionCache_has(key) {
return key in this.cache; return key in this.cache;
}, },
get: function get(key) { get: function FunctionCache_get(key) {
return this.cache[key]; return this.cache[key];
}, },
set: function set(key, value) { set: function FunctionCache_set(key, value) {
if (this.total < MAX_CACHE_SIZE) { if (this.total < MAX_CACHE_SIZE) {
this.cache[key] = value; this.cache[key] = value;
this.total++; this.total++;
@ -413,28 +413,28 @@ var PostScriptStack = (function PostScriptStackClosure() {
} }
PostScriptStack.prototype = { PostScriptStack.prototype = {
push: function push(value) { push: function PostScriptStack_push(value) {
if (this.stack.length >= MAX_STACK_SIZE) if (this.stack.length >= MAX_STACK_SIZE)
error('PostScript function stack overflow.'); error('PostScript function stack overflow.');
this.stack.push(value); this.stack.push(value);
}, },
pop: function pop() { pop: function PostScriptStack_pop() {
if (this.stack.length <= 0) if (this.stack.length <= 0)
error('PostScript function stack underflow.'); error('PostScript function stack underflow.');
return this.stack.pop(); return this.stack.pop();
}, },
copy: function copy(n) { copy: function PostScriptStack_copy(n) {
if (this.stack.length + n >= MAX_STACK_SIZE) if (this.stack.length + n >= MAX_STACK_SIZE)
error('PostScript function stack overflow.'); error('PostScript function stack overflow.');
var stack = this.stack; var stack = this.stack;
for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++)
stack.push(stack[i]); stack.push(stack[i]);
}, },
index: function index(n) { index: function PostScriptStack_index(n) {
this.push(this.stack[this.stack.length - n - 1]); this.push(this.stack[this.stack.length - n - 1]);
}, },
// rotate the last n stack elements p times // rotate the last n stack elements p times
roll: function roll(n, p) { roll: function PostScriptStack_roll(n, p) {
var stack = this.stack; var stack = this.stack;
var l = stack.length - n; var l = stack.length - n;
var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t; var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t;
@ -457,7 +457,7 @@ var PostScriptEvaluator = (function PostScriptEvaluatorClosure() {
this.operands = operands; this.operands = operands;
} }
PostScriptEvaluator.prototype = { PostScriptEvaluator.prototype = {
execute: function execute(initialStack) { execute: function PostScriptEvaluator_execute(initialStack) {
var stack = new PostScriptStack(initialStack); var stack = new PostScriptStack(initialStack);
var counter = 0; var counter = 0;
var operators = this.operators; var operators = this.operators;
@ -691,31 +691,31 @@ var PostScriptParser = (function PostScriptParserClosure() {
this.prev; this.prev;
} }
PostScriptParser.prototype = { PostScriptParser.prototype = {
nextToken: function nextToken() { nextToken: function PostScriptParser_nextToken() {
this.prev = this.token; this.prev = this.token;
this.token = this.lexer.getToken(); this.token = this.lexer.getToken();
}, },
accept: function accept(type) { accept: function PostScriptParser_accept(type) {
if (this.token.type == type) { if (this.token.type == type) {
this.nextToken(); this.nextToken();
return true; return true;
} }
return false; return false;
}, },
expect: function expect(type) { expect: function PostScriptParser_expect(type) {
if (this.accept(type)) if (this.accept(type))
return true; return true;
error('Unexpected symbol: found ' + this.token.type + ' expected ' + error('Unexpected symbol: found ' + this.token.type + ' expected ' +
type + '.'); type + '.');
}, },
parse: function parse() { parse: function PostScriptParser_parse() {
this.nextToken(); this.nextToken();
this.expect(PostScriptTokenTypes.LBRACE); this.expect(PostScriptTokenTypes.LBRACE);
this.parseBlock(); this.parseBlock();
this.expect(PostScriptTokenTypes.RBRACE); this.expect(PostScriptTokenTypes.RBRACE);
return this.operators; return this.operators;
}, },
parseBlock: function parseBlock() { parseBlock: function PostScriptParser_parseBlock() {
while (true) { while (true) {
if (this.accept(PostScriptTokenTypes.NUMBER)) { if (this.accept(PostScriptTokenTypes.NUMBER)) {
this.operators.push(this.prev.value); this.operators.push(this.prev.value);
@ -728,7 +728,7 @@ var PostScriptParser = (function PostScriptParserClosure() {
} }
} }
}, },
parseCondition: function parseCondition() { parseCondition: function PostScriptParser_parseCondition() {
// Add two place holders that will be updated later // Add two place holders that will be updated later
var conditionLocation = this.operators.length; var conditionLocation = this.operators.length;
this.operators.push(null, null); this.operators.push(null, null);
@ -779,7 +779,7 @@ var PostScriptToken = (function PostScriptTokenClosure() {
var opCache = {}; var opCache = {};
PostScriptToken.getOperator = function getOperator(op) { PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {
var opValue = opCache[op]; var opValue = opCache[op];
if (opValue) if (opValue)
return opValue; return opValue;
@ -802,7 +802,7 @@ var PostScriptLexer = (function PostScriptLexerClosure() {
this.stream = stream; this.stream = stream;
} }
PostScriptLexer.prototype = { PostScriptLexer.prototype = {
getToken: function getToken() { getToken: function PostScriptLexer_getToken() {
var s = ''; var s = '';
var ch; var ch;
var comment = false; var comment = false;
@ -852,7 +852,7 @@ var PostScriptLexer = (function PostScriptLexerClosure() {
return PostScriptToken.getOperator(str); return PostScriptToken.getOperator(str);
} }
}, },
getNumber: function getNumber(ch) { getNumber: function PostScriptLexer_getNumber(ch) {
var str = ch; var str = ch;
var stream = this.stream; var stream = this.stream;
while (true) { while (true) {

View File

@ -106,8 +106,8 @@ var PDFImage = (function PDFImageClosure() {
* Handles processing of image data and calls the callback with an argument * Handles processing of image data and calls the callback with an argument
* of a PDFImage when the image is ready to be used. * of a PDFImage when the image is ready to be used.
*/ */
PDFImage.buildImage = function buildImage(callback, handler, xref, res, PDFImage.buildImage = function PDFImage_buildImage(callback, handler, xref,
image, inline) { res, image, inline) {
var imageDataPromise = new Promise(); var imageDataPromise = new Promise();
var smaskPromise = new Promise(); var smaskPromise = new Promise();
// The image data and smask data may not be ready yet, wait till both are // The image data and smask data may not be ready yet, wait till both are
@ -139,7 +139,8 @@ var PDFImage = (function PDFImageClosure() {
* @param {Number} h2 New height. * @param {Number} h2 New height.
* @return {TypedArray} Resized image data. * @return {TypedArray} Resized image data.
*/ */
PDFImage.resize = function resize(pixels, bpc, components, w1, h1, w2, h2) { PDFImage.resize = function PDFImage_resize(pixels, bpc, components,
w1, h1, w2, h2) {
var length = w2 * h2 * components; var length = w2 * h2 * components;
var temp = bpc <= 8 ? new Uint8Array(length) : var temp = bpc <= 8 ? new Uint8Array(length) :
bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length); bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
@ -177,7 +178,7 @@ var PDFImage = (function PDFImageClosure() {
return this.height; return this.height;
return Math.max(this.height, this.smask.height); return Math.max(this.height, this.smask.height);
}, },
getComponents: function getComponents(buffer) { getComponents: function PDFImage_getComponents(buffer) {
var bpc = this.bpc; var bpc = this.bpc;
var needsDecode = this.needsDecode; var needsDecode = this.needsDecode;
var decodeMap = this.decode; var decodeMap = this.decode;
@ -265,7 +266,7 @@ var PDFImage = (function PDFImageClosure() {
} }
return output; return output;
}, },
getOpacity: function getOpacity(width, height) { getOpacity: function PDFImage_getOpacity(width, height) {
var smask = this.smask; var smask = this.smask;
var originalWidth = this.width; var originalWidth = this.width;
var originalHeight = this.height; var originalHeight = this.height;
@ -285,7 +286,8 @@ var PDFImage = (function PDFImageClosure() {
} }
return buf; return buf;
}, },
applyStencilMask: function applyStencilMask(buffer, inverseDecode) { applyStencilMask: function PDFImage_applyStencilMask(buffer,
inverseDecode) {
var width = this.width, height = this.height; var width = this.width, height = this.height;
var bitStrideLength = (width + 7) >> 3; var bitStrideLength = (width + 7) >> 3;
var imgArray = this.getImageBytes(bitStrideLength * height); var imgArray = this.getImageBytes(bitStrideLength * height);
@ -308,7 +310,7 @@ var PDFImage = (function PDFImageClosure() {
} }
} }
}, },
fillRgbaBuffer: function fillRgbaBuffer(buffer, width, height) { fillRgbaBuffer: function PDFImage_fillRgbaBuffer(buffer, width, height) {
var numComps = this.numComps; var numComps = this.numComps;
var originalWidth = this.width; var originalWidth = this.width;
var originalHeight = this.height; var originalHeight = this.height;
@ -335,7 +337,7 @@ var PDFImage = (function PDFImageClosure() {
buffer[i + 3] = opacity[opacityPos++]; buffer[i + 3] = opacity[opacityPos++];
} }
}, },
fillGrayBuffer: function fillGrayBuffer(buffer) { fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) {
var numComps = this.numComps; var numComps = this.numComps;
if (numComps != 1) if (numComps != 1)
error('Reading gray scale from a color image: ' + numComps); error('Reading gray scale from a color image: ' + numComps);
@ -355,7 +357,7 @@ var PDFImage = (function PDFImageClosure() {
for (var i = 0; i < length; ++i) for (var i = 0; i < length; ++i)
buffer[i] = (scale * comps[i]) | 0; buffer[i] = (scale * comps[i]) | 0;
}, },
getImageBytes: function getImageBytes(length) { getImageBytes: function PDFImage_getImageBytes(length) {
this.image.reset(); this.image.reset();
return this.image.getBytes(length); return this.image.getBytes(length);
} }

2256
src/jpx.js

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@ var Metadata = PDFJS.Metadata = (function MetadataClosure() {
} }
Metadata.prototype = { Metadata.prototype = {
parse: function() { parse: function Metadata_parse() {
var doc = this.metaDocument; var doc = this.metaDocument;
var rdf = doc.documentElement; var rdf = doc.documentElement;
@ -53,11 +53,11 @@ var Metadata = PDFJS.Metadata = (function MetadataClosure() {
} }
}, },
get: function(name) { get: function Metadata_get(name) {
return this.metadata[name] || null; return this.metadata[name] || null;
}, },
has: function(name) { has: function Metadata_has(name) {
return typeof this.metadata[name] !== 'undefined'; return typeof this.metadata[name] !== 'undefined';
} }
}; };

View File

@ -22,7 +22,7 @@ var Cmd = (function CmdClosure() {
var cmdCache = {}; var cmdCache = {};
Cmd.get = function cmdGet(cmd) { Cmd.get = function Cmd_get(cmd) {
var cmdValue = cmdCache[cmd]; var cmdValue = cmdCache[cmd];
if (cmdValue) if (cmdValue)
return cmdValue; return cmdValue;
@ -43,7 +43,7 @@ var Dict = (function DictClosure() {
Dict.prototype = { Dict.prototype = {
// automatically dereferences Ref objects // automatically dereferences Ref objects
get: function dictGet(key1, key2, key3) { get: function Dict_get(key1, key2, key3) {
var value; var value;
var xref = this.xref; var xref = this.xref;
if (typeof (value = this.map[key1]) != 'undefined' || key1 in this.map || if (typeof (value = this.map[key1]) != 'undefined' || key1 in this.map ||
@ -58,26 +58,26 @@ var Dict = (function DictClosure() {
return xref ? this.xref.fetchIfRef(value) : value; return xref ? this.xref.fetchIfRef(value) : value;
}, },
// no dereferencing // no dereferencing
getRaw: function dictGetRaw(key) { getRaw: function Dict_getRaw(key) {
return this.map[key]; return this.map[key];
}, },
// creates new map and dereferences all Refs // creates new map and dereferences all Refs
getAll: function dictGetAll() { getAll: function Dict_getAll() {
var all = {}; var all = {};
for (var key in this.map) for (var key in this.map)
all[key] = this.get(key); all[key] = this.get(key);
return all; return all;
}, },
set: function dictSet(key, value) { set: function Dict_set(key, value) {
this.map[key] = value; this.map[key] = value;
}, },
has: function dictHas(key) { has: function Dict_has(key) {
return key in this.map; return key in this.map;
}, },
forEach: function dictForEach(callback) { forEach: function Dict_forEach(callback) {
for (var key in this.map) { for (var key in this.map) {
callback(key, this.get(key)); callback(key, this.get(key));
} }
@ -106,11 +106,11 @@ var RefSet = (function RefSetClosure() {
} }
RefSet.prototype = { RefSet.prototype = {
has: function refSetHas(ref) { has: function RefSet_has(ref) {
return !!this.dict['R' + ref.num + '.' + ref.gen]; return !!this.dict['R' + ref.num + '.' + ref.gen];
}, },
put: function refSetPut(ref) { put: function RefSet_put(ref) {
this.dict['R' + ref.num + '.' + ref.gen] = ref; this.dict['R' + ref.num + '.' + ref.gen] = ref;
} }
}; };
@ -211,7 +211,7 @@ var Catalog = (function CatalogClosure() {
// shadow the prototype getter // shadow the prototype getter
return shadow(this, 'num', obj); return shadow(this, 'num', obj);
}, },
traverseKids: function catalogTraverseKids(pagesDict) { traverseKids: function Catalog_traverseKids(pagesDict) {
var pageCache = this.pageCache; var pageCache = this.pageCache;
var kids = pagesDict.get('Kids'); var kids = pagesDict.get('Kids');
assertWellFormed(isArray(kids), assertWellFormed(isArray(kids),
@ -280,7 +280,7 @@ var Catalog = (function CatalogClosure() {
} }
return shadow(this, 'destinations', dests); return shadow(this, 'destinations', dests);
}, },
getPage: function catalogGetPage(n) { getPage: function Catalog_getPage(n) {
var pageCache = this.pageCache; var pageCache = this.pageCache;
if (!pageCache) { if (!pageCache) {
pageCache = this.pageCache = []; pageCache = this.pageCache = [];
@ -317,7 +317,7 @@ var XRef = (function XRefClosure() {
} }
XRef.prototype = { XRef.prototype = {
readXRefTable: function readXRefTable(parser) { readXRefTable: function XRef_readXRefTable(parser) {
// Example of cross-reference table: // Example of cross-reference table:
// xref // xref
// 0 1 <-- subsection header (first obj #, obj count) // 0 1 <-- subsection header (first obj #, obj count)
@ -384,7 +384,7 @@ var XRef = (function XRefClosure() {
return dict; return dict;
}, },
readXRefStream: function readXRefStream(stream) { readXRefStream: function XRef_readXRefStream(stream) {
var streamParameters = stream.parameters; var streamParameters = stream.parameters;
var byteWidths = streamParameters.get('W'); var byteWidths = streamParameters.get('W');
var range = streamParameters.get('Index'); var range = streamParameters.get('Index');
@ -435,7 +435,7 @@ var XRef = (function XRefClosure() {
} }
return streamParameters; return streamParameters;
}, },
indexObjects: function indexObjects() { indexObjects: function XRef_indexObjects() {
// Simple scan through the PDF content to find objects, // Simple scan through the PDF content to find objects,
// trailers and XRef streams. // trailers and XRef streams.
function readToken(data, offset) { function readToken(data, offset) {
@ -544,7 +544,7 @@ var XRef = (function XRefClosure() {
// nothing helps // nothing helps
error('Invalid PDF structure'); error('Invalid PDF structure');
}, },
readXRef: function readXref(startXRef) { readXRef: function XRef_readXRef(startXRef) {
var stream = this.stream; var stream = this.stream;
stream.pos = startXRef; stream.pos = startXRef;
@ -597,18 +597,18 @@ var XRef = (function XRefClosure() {
warn('Indexing all PDF objects'); warn('Indexing all PDF objects');
return this.indexObjects(); return this.indexObjects();
}, },
getEntry: function xRefGetEntry(i) { getEntry: function XRef_getEntry(i) {
var e = this.entries[i]; var e = this.entries[i];
if (e === null) if (e === null)
return null; return null;
return e.free ? null : e; // returns null is the entry is free return e.free ? null : e; // returns null is the entry is free
}, },
fetchIfRef: function xRefFetchIfRef(obj) { fetchIfRef: function XRef_fetchIfRef(obj) {
if (!isRef(obj)) if (!isRef(obj))
return obj; return obj;
return this.fetch(obj); return this.fetch(obj);
}, },
fetch: function xRefFetch(ref, suppressEncryption) { fetch: function XRef_fetch(ref, suppressEncryption) {
assertWellFormed(isRef(ref), 'ref object is not a reference'); assertWellFormed(isRef(ref), 'ref object is not a reference');
var num = ref.num; var num = ref.num;
if (num in this.cache) if (num in this.cache)
@ -696,8 +696,8 @@ var XRef = (function XRefClosure() {
} }
return e; return e;
}, },
getCatalogObj: function xRefGetCatalogObj() { getCatalogObj: function XRef_getCatalogObj() {
return this.root; return this.this.root;
} }
}; };
@ -723,7 +723,7 @@ var PDFObjects = (function PDFObjectsClosure() {
* Ensures there is an object defined for `objId`. Stores `data` on the * Ensures there is an object defined for `objId`. Stores `data` on the
* object *if* it is created. * object *if* it is created.
*/ */
ensureObj: function pdfObjectsEnsureObj(objId, data) { ensureObj: function PDFObjects_ensureObj(objId, data) {
if (this.objs[objId]) if (this.objs[objId])
return this.objs[objId]; return this.objs[objId];
return this.objs[objId] = new Promise(objId, data); return this.objs[objId] = new Promise(objId, data);
@ -738,7 +738,7 @@ var PDFObjects = (function PDFObjectsClosure() {
* function and the object is already resolved, the callback gets called * function and the object is already resolved, the callback gets called
* right away. * right away.
*/ */
get: function pdfObjectsGet(objId, callback) { get: function PDFObjects_get(objId, callback) {
// If there is a callback, then the get can be async and the object is // If there is a callback, then the get can be async and the object is
// not required to be resolved right now // not required to be resolved right now
if (callback) { if (callback) {
@ -761,7 +761,7 @@ var PDFObjects = (function PDFObjectsClosure() {
/** /**
* Resolves the object `objId` with optional `data`. * Resolves the object `objId` with optional `data`.
*/ */
resolve: function pdfObjectsResolve(objId, data) { resolve: function PDFObjects_resolve(objId, data) {
var objs = this.objs; var objs = this.objs;
// In case there is a promise already on this object, just resolve it. // In case there is a promise already on this object, just resolve it.
@ -772,11 +772,11 @@ var PDFObjects = (function PDFObjectsClosure() {
} }
}, },
onData: function pdfObjectsOnData(objId, callback) { onData: function PDFObjects_onData(objId, callback) {
this.ensureObj(objId).onData(callback); this.ensureObj(objId).onData(callback);
}, },
isResolved: function pdfObjectsIsResolved(objId) { isResolved: function PDFObjects_isResolved(objId) {
var objs = this.objs; var objs = this.objs;
if (!objs[objId]) { if (!objs[objId]) {
return false; return false;
@ -785,7 +785,7 @@ var PDFObjects = (function PDFObjectsClosure() {
} }
}, },
hasData: function pdfObjectsHasData(objId) { hasData: function PDFObjects_hasData(objId) {
var objs = this.objs; var objs = this.objs;
if (!objs[objId]) { if (!objs[objId]) {
return false; return false;
@ -797,7 +797,7 @@ var PDFObjects = (function PDFObjectsClosure() {
/** /**
* Sets the data of an object but *doesn't* resolve it. * Sets the data of an object but *doesn't* resolve it.
*/ */
setData: function pdfObjectsSetData(objId, data) { setData: function PDFObjects_setData(objId, data) {
// Watchout! If you call `this.ensureObj(objId, data)` you're going to // Watchout! If you call `this.ensureObj(objId, data)` you're going to
// create a *resolved* promise which shouldn't be the case! // create a *resolved* promise which shouldn't be the case!
this.ensureObj(objId).data = data; this.ensureObj(objId).data = data;

View File

@ -19,11 +19,11 @@ var Parser = (function ParserClosure() {
} }
Parser.prototype = { Parser.prototype = {
refill: function parserRefill() { refill: function Parser_refill() {
this.buf1 = this.lexer.getObj(); this.buf1 = this.lexer.getObj();
this.buf2 = this.lexer.getObj(); this.buf2 = this.lexer.getObj();
}, },
shift: function parserShift() { shift: function Parser_shift() {
if (isCmd(this.buf2, 'ID')) { if (isCmd(this.buf2, 'ID')) {
this.buf1 = this.buf2; this.buf1 = this.buf2;
this.buf2 = null; this.buf2 = null;
@ -34,7 +34,7 @@ var Parser = (function ParserClosure() {
this.buf2 = this.lexer.getObj(); this.buf2 = this.lexer.getObj();
} }
}, },
getObj: function parserGetObj(cipherTransform) { getObj: function Parser_getObj(cipherTransform) {
if (isCmd(this.buf1, 'BI')) { // inline image if (isCmd(this.buf1, 'BI')) { // inline image
this.shift(); this.shift();
return this.makeInlineImage(cipherTransform); return this.makeInlineImage(cipherTransform);
@ -98,7 +98,7 @@ var Parser = (function ParserClosure() {
this.shift(); this.shift();
return obj; return obj;
}, },
makeInlineImage: function parserMakeInlineImage(cipherTransform) { makeInlineImage: function Parser_makeInlineImage(cipherTransform) {
var lexer = this.lexer; var lexer = this.lexer;
var stream = lexer.stream; var stream = lexer.stream;
@ -160,11 +160,11 @@ var Parser = (function ParserClosure() {
return imageStream; return imageStream;
}, },
fetchIfRef: function parserFetchIfRef(obj) { fetchIfRef: function Parser_fetchIfRef(obj) {
// not relying on the xref.fetchIfRef -- xref might not be set // not relying on the xref.fetchIfRef -- xref might not be set
return isRef(obj) ? this.xref.fetch(obj) : obj; return isRef(obj) ? this.xref.fetch(obj) : obj;
}, },
makeStream: function parserMakeStream(dict, cipherTransform) { makeStream: function Parser_makeStream(dict, cipherTransform) {
var lexer = this.lexer; var lexer = this.lexer;
var stream = lexer.stream; var stream = lexer.stream;
@ -192,7 +192,7 @@ var Parser = (function ParserClosure() {
stream.parameters = dict; stream.parameters = dict;
return stream; return stream;
}, },
filter: function parserFilter(stream, dict, length) { filter: function Parser_filter(stream, dict, length) {
var filter = this.fetchIfRef(dict.get('Filter', 'F')); var filter = this.fetchIfRef(dict.get('Filter', 'F'));
var params = this.fetchIfRef(dict.get('DecodeParms', 'DP')); var params = this.fetchIfRef(dict.get('DecodeParms', 'DP'));
if (isName(filter)) if (isName(filter))
@ -215,7 +215,7 @@ var Parser = (function ParserClosure() {
} }
return stream; return stream;
}, },
makeFilter: function parserMakeFilter(stream, name, length, params) { makeFilter: function Parser_makeFilter(stream, name, length, params) {
if (name == 'FlateDecode' || name == 'Fl') { if (name == 'FlateDecode' || name == 'Fl') {
if (params) { if (params) {
return new PredictorStream(new FlateStream(stream), params); return new PredictorStream(new FlateStream(stream), params);
@ -265,7 +265,7 @@ var Lexer = (function LexerClosure() {
this.stream = stream; this.stream = stream;
} }
Lexer.isSpace = function lexerIsSpace(ch) { Lexer.isSpace = function Lexer_isSpace(ch) {
return ch == ' ' || ch == '\t' || ch == '\x0d' || ch == '\x0a'; return ch == ' ' || ch == '\t' || ch == '\x0d' || ch == '\x0a';
}; };
@ -300,7 +300,7 @@ var Lexer = (function LexerClosure() {
} }
Lexer.prototype = { Lexer.prototype = {
getNumber: function lexerGetNumber(ch) { getNumber: function Lexer_getNumber(ch) {
var floating = false; var floating = false;
var str = ch; var str = ch;
var stream = this.stream; var stream = this.stream;
@ -328,7 +328,7 @@ var Lexer = (function LexerClosure() {
error('Invalid floating point number: ' + value); error('Invalid floating point number: ' + value);
return value; return value;
}, },
getString: function lexerGetString() { getString: function Lexer_getString() {
var numParen = 1; var numParen = 1;
var done = false; var done = false;
var str = ''; var str = '';
@ -412,7 +412,7 @@ var Lexer = (function LexerClosure() {
} while (!done); } while (!done);
return str; return str;
}, },
getName: function lexerGetName(ch) { getName: function Lexer_getName(ch) {
var str = ''; var str = '';
var stream = this.stream; var stream = this.stream;
while (!!(ch = stream.lookChar()) && !specialChars[ch.charCodeAt(0)]) { while (!!(ch = stream.lookChar()) && !specialChars[ch.charCodeAt(0)]) {
@ -439,7 +439,7 @@ var Lexer = (function LexerClosure() {
str.length); str.length);
return new Name(str); return new Name(str);
}, },
getHexString: function lexerGetHexString(ch) { getHexString: function Lexer_getHexString(ch) {
var str = ''; var str = '';
var stream = this.stream; var stream = this.stream;
for (;;) { for (;;) {
@ -468,7 +468,7 @@ var Lexer = (function LexerClosure() {
} }
return str; return str;
}, },
getObj: function lexerGetObj() { getObj: function Lexer_getObj() {
// skip whitespace and comments // skip whitespace and comments
var comment = false; var comment = false;
var stream = this.stream; var stream = this.stream;
@ -541,7 +541,7 @@ var Lexer = (function LexerClosure() {
return null; return null;
return Cmd.get(str); return Cmd.get(str);
}, },
skipToNextLine: function lexerSkipToNextLine() { skipToNextLine: function Lexer_skipToNextLine() {
var stream = this.stream; var stream = this.stream;
while (true) { while (true) {
var ch = stream.getChar(); var ch = stream.getChar();
@ -554,7 +554,7 @@ var Lexer = (function LexerClosure() {
} }
} }
}, },
skip: function lexerSkip() { skip: function Lexer_skip() {
this.stream.skip(); this.stream.skip();
} }
}; };
@ -578,7 +578,7 @@ var Linearization = (function LinearizationClosure() {
} }
Linearization.prototype = { Linearization.prototype = {
getInt: function linearizationGetInt(name) { getInt: function Linearization_getInt(name) {
var linDict = this.linDict; var linDict = this.linDict;
var obj; var obj;
if (isDict(linDict) && if (isDict(linDict) &&
@ -588,7 +588,7 @@ var Linearization = (function LinearizationClosure() {
} }
error('"' + name + '" field in linearization table is invalid'); error('"' + name + '" field in linearization table is invalid');
}, },
getHint: function linearizationGetHint(index) { getHint: function Linearization_getHint(index) {
var linDict = this.linDict; var linDict = this.linDict;
var obj1, obj2; var obj1, obj2;
if (isDict(linDict) && if (isDict(linDict) &&

View File

@ -17,16 +17,16 @@ var Pattern = (function PatternClosure() {
Pattern.prototype = { Pattern.prototype = {
// Input: current Canvas context // Input: current Canvas context
// Output: the appropriate fillStyle or strokeStyle // Output: the appropriate fillStyle or strokeStyle
getPattern: function pattern_getStyle(ctx) { getPattern: function Pattern_getPattern(ctx) {
error('Should not call Pattern.getStyle: ' + ctx); error('Should not call Pattern.getStyle: ' + ctx);
} }
}; };
Pattern.shadingFromIR = function pattern_shadingFromIR(ctx, raw) { Pattern.shadingFromIR = function Pattern_shadingFromIR(ctx, raw) {
return Shadings[raw[0]].fromIR(ctx, raw); return Shadings[raw[0]].fromIR(ctx, raw);
}; };
Pattern.parseShading = function pattern_shading(shading, matrix, xref, Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref,
res, ctx) { res, ctx) {
var dict = isStream(shading) ? shading.dict : shading; var dict = isStream(shading) ? shading.dict : shading;
@ -101,7 +101,7 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
this.colorStops = colorStops; this.colorStops = colorStops;
} }
RadialAxial.fromIR = function radialAxialShadingGetIR(ctx, raw) { RadialAxial.fromIR = function RadialAxial_fromIR(ctx, raw) {
var type = raw[1]; var type = raw[1];
var colorStops = raw[2]; var colorStops = raw[2];
var p0 = raw[3]; var p0 = raw[3];
@ -134,7 +134,7 @@ Shadings.RadialAxial = (function RadialAxialClosure() {
}; };
RadialAxial.prototype = { RadialAxial.prototype = {
getIR: function radialAxialShadingGetIR() { getIR: function RadialAxial_getIR() {
var coordsArr = this.coordsArr; var coordsArr = this.coordsArr;
var type = this.shadingType; var type = this.shadingType;
if (type == PatternType.AXIAL) { if (type == PatternType.AXIAL) {
@ -169,12 +169,12 @@ Shadings.Dummy = (function DummyClosure() {
this.type = 'Pattern'; this.type = 'Pattern';
} }
Dummy.fromIR = function dummyShadingFromIR() { Dummy.fromIR = function Dummy_fromIR() {
return 'hotpink'; return 'hotpink';
}; };
Dummy.prototype = { Dummy.prototype = {
getIR: function dummyShadingGetIR() { getIR: function Dummy_getIR() {
return ['Dummy']; return ['Dummy'];
} }
}; };
@ -263,7 +263,7 @@ var TilingPattern = (function TilingPatternClosure() {
this.canvas = tmpCanvas; this.canvas = tmpCanvas;
} }
TilingPattern.getIR = function tiling_getIR(operatorList, dict, args) { TilingPattern.getIR = function TilingPattern_getIR(operatorList, dict, args) {
var matrix = dict.get('Matrix'); var matrix = dict.get('Matrix');
var bbox = dict.get('BBox'); var bbox = dict.get('BBox');
var xstep = dict.get('XStep'); var xstep = dict.get('XStep');
@ -276,7 +276,7 @@ var TilingPattern = (function TilingPatternClosure() {
}; };
TilingPattern.prototype = { TilingPattern.prototype = {
getPattern: function tiling_getPattern() { getPattern: function TilingPattern_getPattern() {
var matrix = this.matrix; var matrix = this.matrix;
var curMatrix = this.curMatrix; var curMatrix = this.curMatrix;
var ctx = this.ctx; var ctx = this.ctx;

View File

@ -18,14 +18,14 @@ var Stream = (function StreamClosure() {
get length() { get length() {
return this.end - this.start; return this.end - this.start;
}, },
getByte: function stream_getByte() { getByte: function Stream_getByte() {
if (this.pos >= this.end) if (this.pos >= this.end)
return null; return null;
return this.bytes[this.pos++]; return this.bytes[this.pos++];
}, },
// returns subarray of original buffer // returns subarray of original buffer
// should only be read // should only be read
getBytes: function stream_getBytes(length) { getBytes: function Stream_getBytes(length) {
var bytes = this.bytes; var bytes = this.bytes;
var pos = this.pos; var pos = this.pos;
var strEnd = this.end; var strEnd = this.end;
@ -40,28 +40,28 @@ var Stream = (function StreamClosure() {
this.pos = end; this.pos = end;
return bytes.subarray(pos, end); return bytes.subarray(pos, end);
}, },
lookChar: function stream_lookChar() { lookChar: function Stream_lookChar() {
if (this.pos >= this.end) if (this.pos >= this.end)
return null; return null;
return String.fromCharCode(this.bytes[this.pos]); return String.fromCharCode(this.bytes[this.pos]);
}, },
getChar: function stream_getChar() { getChar: function Stream_getChar() {
if (this.pos >= this.end) if (this.pos >= this.end)
return null; return null;
return String.fromCharCode(this.bytes[this.pos++]); return String.fromCharCode(this.bytes[this.pos++]);
}, },
skip: function stream_skip(n) { skip: function Stream_skip(n) {
if (!n) if (!n)
n = 1; n = 1;
this.pos += n; this.pos += n;
}, },
reset: function stream_reset() { reset: function Stream_reset() {
this.pos = this.start; this.pos = this.start;
}, },
moveStart: function stream_moveStart() { moveStart: function Stream_moveStart() {
this.start = this.pos; this.start = this.pos;
}, },
makeSubStream: function stream_makeSubstream(start, length, dict) { makeSubStream: function Stream_makeSubStream(start, length, dict) {
return new Stream(this.bytes.buffer, start, length, dict); return new Stream(this.bytes.buffer, start, length, dict);
}, },
isStream: true isStream: true
@ -94,7 +94,7 @@ var DecodeStream = (function DecodeStreamClosure() {
} }
DecodeStream.prototype = { DecodeStream.prototype = {
ensureBuffer: function decodestream_ensureBuffer(requested) { ensureBuffer: function DecodeStream_ensureBuffer(requested) {
var buffer = this.buffer; var buffer = this.buffer;
var current = buffer ? buffer.byteLength : 0; var current = buffer ? buffer.byteLength : 0;
if (requested < current) if (requested < current)
@ -107,7 +107,7 @@ var DecodeStream = (function DecodeStreamClosure() {
buffer2[i] = buffer[i]; buffer2[i] = buffer[i];
return (this.buffer = buffer2); return (this.buffer = buffer2);
}, },
getByte: function decodestream_getByte() { getByte: function DecodeStream_getByte() {
var pos = this.pos; var pos = this.pos;
while (this.bufferLength <= pos) { while (this.bufferLength <= pos) {
if (this.eof) if (this.eof)
@ -116,7 +116,7 @@ var DecodeStream = (function DecodeStreamClosure() {
} }
return this.buffer[this.pos++]; return this.buffer[this.pos++];
}, },
getBytes: function decodestream_getBytes(length) { getBytes: function DecodeStream_getBytes(length) {
var end, pos = this.pos; var end, pos = this.pos;
if (length) { if (length) {
@ -144,7 +144,7 @@ var DecodeStream = (function DecodeStreamClosure() {
this.pos = end; this.pos = end;
return this.buffer.subarray(pos, end); return this.buffer.subarray(pos, end);
}, },
lookChar: function decodestream_lookChar() { lookChar: function DecodeStream_lookChar() {
var pos = this.pos; var pos = this.pos;
while (this.bufferLength <= pos) { while (this.bufferLength <= pos) {
if (this.eof) if (this.eof)
@ -153,7 +153,7 @@ var DecodeStream = (function DecodeStreamClosure() {
} }
return String.fromCharCode(this.buffer[this.pos]); return String.fromCharCode(this.buffer[this.pos]);
}, },
getChar: function decodestream_getChar() { getChar: function DecodeStream_getChar() {
var pos = this.pos; var pos = this.pos;
while (this.bufferLength <= pos) { while (this.bufferLength <= pos) {
if (this.eof) if (this.eof)
@ -162,18 +162,18 @@ var DecodeStream = (function DecodeStreamClosure() {
} }
return String.fromCharCode(this.buffer[this.pos++]); return String.fromCharCode(this.buffer[this.pos++]);
}, },
makeSubStream: function decodestream_makeSubstream(start, length, dict) { makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {
var end = start + length; var end = start + length;
while (this.bufferLength <= end && !this.eof) while (this.bufferLength <= end && !this.eof)
this.readBlock(); this.readBlock();
return new Stream(this.buffer, start, length, dict); return new Stream(this.buffer, start, length, dict);
}, },
skip: function decodestream_skip(n) { skip: function DecodeStream_skip(n) {
if (!n) if (!n)
n = 1; n = 1;
this.pos += n; this.pos += n;
}, },
reset: function decodestream_reset() { reset: function DecodeStream_reset() {
this.pos = 0; this.pos = 0;
} }
}; };
@ -188,14 +188,14 @@ var FakeStream = (function FakeStreamClosure() {
} }
FakeStream.prototype = Object.create(DecodeStream.prototype); FakeStream.prototype = Object.create(DecodeStream.prototype);
FakeStream.prototype.readBlock = function fakeStreamReadBlock() { FakeStream.prototype.readBlock = function FakeStream_readBlock() {
var bufferLength = this.bufferLength; var bufferLength = this.bufferLength;
bufferLength += 1024; bufferLength += 1024;
var buffer = this.ensureBuffer(bufferLength); var buffer = this.ensureBuffer(bufferLength);
this.bufferLength = bufferLength; this.bufferLength = bufferLength;
}; };
FakeStream.prototype.getBytes = function fakeStreamGetBytes(length) { FakeStream.prototype.getBytes = function FakeStream_getBytes(length) {
var end, pos = this.pos; var end, pos = this.pos;
if (length) { if (length) {
@ -368,7 +368,7 @@ var FlateStream = (function FlateStreamClosure() {
FlateStream.prototype = Object.create(DecodeStream.prototype); FlateStream.prototype = Object.create(DecodeStream.prototype);
FlateStream.prototype.getBits = function flateStreamGetBits(bits) { FlateStream.prototype.getBits = function FlateStream_getBits(bits) {
var codeSize = this.codeSize; var codeSize = this.codeSize;
var codeBuf = this.codeBuf; var codeBuf = this.codeBuf;
var bytes = this.bytes; var bytes = this.bytes;
@ -388,7 +388,7 @@ var FlateStream = (function FlateStreamClosure() {
return b; return b;
}; };
FlateStream.prototype.getCode = function flateStreamGetCode(table) { FlateStream.prototype.getCode = function FlateStream_getCode(table) {
var codes = table[0]; var codes = table[0];
var maxLen = table[1]; var maxLen = table[1];
var codeSize = this.codeSize; var codeSize = this.codeSize;
@ -453,7 +453,7 @@ var FlateStream = (function FlateStreamClosure() {
return [codes, maxLen]; return [codes, maxLen];
}; };
FlateStream.prototype.readBlock = function flateStreamReadBlock() { FlateStream.prototype.readBlock = function FlateStream_readBlock() {
// read block header // read block header
var hdr = this.getBits(3); var hdr = this.getBits(3);
if (hdr & 1) if (hdr & 1)
@ -823,7 +823,7 @@ var JpegStream = (function JpegStreamClosure() {
JpegStream.prototype = Object.create(DecodeStream.prototype); JpegStream.prototype = Object.create(DecodeStream.prototype);
JpegStream.prototype.ensureBuffer = function jpegStreamEnsureBuffer(req) { JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) {
if (this.bufferLength) if (this.bufferLength)
return; return;
try { try {
@ -840,18 +840,18 @@ var JpegStream = (function JpegStreamClosure() {
error('JPEG error: ' + e); error('JPEG error: ' + e);
} }
}; };
JpegStream.prototype.getIR = function jpegStreamGetIR() { JpegStream.prototype.getIR = function JpegStream_getIR() {
return bytesToString(this.bytes); return bytesToString(this.bytes);
}; };
JpegStream.prototype.getChar = function jpegStreamGetChar() { JpegStream.prototype.getChar = function JpegStream_getChar() {
error('internal error: getChar is not valid on JpegStream'); error('internal error: getChar is not valid on JpegStream');
}; };
/** /**
* Checks if the image can be decoded and displayed by the browser without any * Checks if the image can be decoded and displayed by the browser without any
* further processing such as color space conversions. * further processing such as color space conversions.
*/ */
JpegStream.prototype.isNativelySupported = function isNativelySupported(xref, JpegStream.prototype.isNativelySupported =
res) { function JpegStream_isNativelySupported(xref, res) {
var cs = ColorSpace.parse(this.dict.get('ColorSpace'), xref, res); var cs = ColorSpace.parse(this.dict.get('ColorSpace'), xref, res);
// when bug 674619 lands, let's check if browser can do // when bug 674619 lands, let's check if browser can do
// normal cmyk and then we won't need to decode in JS // normal cmyk and then we won't need to decode in JS
@ -865,8 +865,8 @@ var JpegStream = (function JpegStreamClosure() {
/** /**
* Checks if the image can be decoded by the browser. * Checks if the image can be decoded by the browser.
*/ */
JpegStream.prototype.isNativelyDecodable = function isNativelyDecodable(xref, JpegStream.prototype.isNativelyDecodable =
res) { function JpegStream_isNativelyDecodable(xref, res) {
var cs = ColorSpace.parse(this.dict.get('ColorSpace'), xref, res); var cs = ColorSpace.parse(this.dict.get('ColorSpace'), xref, res);
var numComps = cs.numComps; var numComps = cs.numComps;
if (numComps == 1 || numComps == 3) if (numComps == 1 || numComps == 3)
@ -892,7 +892,7 @@ var JpxStream = (function JpxStreamClosure() {
JpxStream.prototype = Object.create(DecodeStream.prototype); JpxStream.prototype = Object.create(DecodeStream.prototype);
JpxStream.prototype.ensureBuffer = function jpxStreamEnsureBuffer(req) { JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) {
if (this.bufferLength) if (this.bufferLength)
return; return;
@ -972,7 +972,7 @@ var JpxStream = (function JpxStreamClosure() {
this.buffer = data; this.buffer = data;
this.bufferLength = data.length; this.bufferLength = data.length;
}; };
JpxStream.prototype.getChar = function jpxStreamGetChar() { JpxStream.prototype.getChar = function JpxStream_getChar() {
error('internal error: getChar is not valid on JpxStream'); error('internal error: getChar is not valid on JpxStream');
}; };
@ -992,7 +992,7 @@ var DecryptStream = (function DecryptStreamClosure() {
DecryptStream.prototype = Object.create(DecodeStream.prototype); DecryptStream.prototype = Object.create(DecodeStream.prototype);
DecryptStream.prototype.readBlock = function decryptStreamReadBlock() { DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {
var chunk = this.str.getBytes(chunkSize); var chunk = this.str.getBytes(chunkSize);
if (!chunk || chunk.length == 0) { if (!chunk || chunk.length == 0) {
this.eof = true; this.eof = true;
@ -1023,7 +1023,7 @@ var Ascii85Stream = (function Ascii85StreamClosure() {
Ascii85Stream.prototype = Object.create(DecodeStream.prototype); Ascii85Stream.prototype = Object.create(DecodeStream.prototype);
Ascii85Stream.prototype.readBlock = function ascii85StreamReadBlock() { Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {
var tildaCode = '~'.charCodeAt(0); var tildaCode = '~'.charCodeAt(0);
var zCode = 'z'.charCodeAt(0); var zCode = 'z'.charCodeAt(0);
var str = this.str; var str = this.str;
@ -1118,7 +1118,7 @@ var AsciiHexStream = (function AsciiHexStreamClosure() {
AsciiHexStream.prototype = Object.create(DecodeStream.prototype); AsciiHexStream.prototype = Object.create(DecodeStream.prototype);
AsciiHexStream.prototype.readBlock = function asciiHexStreamReadBlock() { AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {
var gtCode = '>'.charCodeAt(0), bytes = this.str.getBytes(), c, n, var gtCode = '>'.charCodeAt(0), bytes = this.str.getBytes(), c, n,
decodeLength, buffer, bufferLength, i, length; decodeLength, buffer, bufferLength, i, length;
@ -1161,7 +1161,7 @@ var RunLengthStream = (function RunLengthStreamClosure() {
RunLengthStream.prototype = Object.create(DecodeStream.prototype); RunLengthStream.prototype = Object.create(DecodeStream.prototype);
RunLengthStream.prototype.readBlock = function runLengthStreamReadBlock() { RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {
// The repeatHeader has following format. The first byte defines type of run // The repeatHeader has following format. The first byte defines type of run
// and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes
// (in addition to the second byte from the header), n = 129 through 255 - // (in addition to the second byte from the header), n = 129 through 255 -
@ -1671,7 +1671,7 @@ var CCITTFaxStream = (function CCITTFaxStreamClosure() {
CCITTFaxStream.prototype = Object.create(DecodeStream.prototype); CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);
CCITTFaxStream.prototype.readBlock = function ccittFaxStreamReadBlock() { CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() {
while (!this.eof) { while (!this.eof) {
var c = this.lookChar(); var c = this.lookChar();
this.buf = EOF; this.buf = EOF;
@ -1729,7 +1729,7 @@ var CCITTFaxStream = (function CCITTFaxStreamClosure() {
this.codingPos = codingPos; this.codingPos = codingPos;
}; };
CCITTFaxStream.prototype.lookChar = function ccittFaxStreamLookChar() { CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() {
if (this.buf != EOF) if (this.buf != EOF)
return this.buf; return this.buf;
@ -2140,7 +2140,7 @@ var CCITTFaxStream = (function CCITTFaxStreamClosure() {
return 1; return 1;
}; };
CCITTFaxStream.prototype.lookBits = function ccittFaxStreamLookBits(n) { CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) {
var c; var c;
while (this.inputBits < n) { while (this.inputBits < n) {
if ((c = this.str.getByte()) == null) { if ((c = this.str.getByte()) == null) {
@ -2155,7 +2155,7 @@ var CCITTFaxStream = (function CCITTFaxStreamClosure() {
return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n)); return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n));
}; };
CCITTFaxStream.prototype.eatBits = function ccittFaxStreamEatBits(n) { CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) {
if ((this.inputBits -= n) < 0) if ((this.inputBits -= n) < 0)
this.inputBits = 0; this.inputBits = 0;
}; };
@ -2192,7 +2192,7 @@ var LZWStream = (function LZWStreamClosure() {
LZWStream.prototype = Object.create(DecodeStream.prototype); LZWStream.prototype = Object.create(DecodeStream.prototype);
LZWStream.prototype.readBits = function lzwStreamReadBits(n) { LZWStream.prototype.readBits = function LZWStream_readBits(n) {
var bitsCached = this.bitsCached; var bitsCached = this.bitsCached;
var cachedData = this.cachedData; var cachedData = this.cachedData;
while (bitsCached < n) { while (bitsCached < n) {
@ -2210,7 +2210,7 @@ var LZWStream = (function LZWStreamClosure() {
return (cachedData >>> bitsCached) & ((1 << n) - 1); return (cachedData >>> bitsCached) & ((1 << n) - 1);
}; };
LZWStream.prototype.readBlock = function lzwStreamReadBlock() { LZWStream.prototype.readBlock = function LZWStream_readBlock() {
var blockSize = 512; var blockSize = 512;
var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize; var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize;
var i, j, q; var i, j, q;

View File

@ -79,19 +79,19 @@ var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
var Util = (function UtilClosure() { var Util = (function UtilClosure() {
function Util() {} function Util() {}
Util.makeCssRgb = function makergb(r, g, b) { Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
var ri = (255 * r) | 0, gi = (255 * g) | 0, bi = (255 * b) | 0; var ri = (255 * r) | 0, gi = (255 * g) | 0, bi = (255 * b) | 0;
return 'rgb(' + ri + ',' + gi + ',' + bi + ')'; return 'rgb(' + ri + ',' + gi + ',' + bi + ')';
}; };
Util.makeCssCmyk = function makecmyk(c, m, y, k) { Util.makeCssCmyk = function Util_makeCssCmyk(c, m, y, k) {
c = (new DeviceCmykCS()).getRgb([c, m, y, k]); c = (new DeviceCmykCS()).getRgb([c, m, y, k]);
var ri = (255 * c[0]) | 0, gi = (255 * c[1]) | 0, bi = (255 * c[2]) | 0; var ri = (255 * c[0]) | 0, gi = (255 * c[1]) | 0, bi = (255 * c[2]) | 0;
return 'rgb(' + ri + ',' + gi + ',' + bi + ')'; return 'rgb(' + ri + ',' + gi + ',' + bi + ')';
}; };
// For 2d affine transforms // For 2d affine transforms
Util.applyTransform = function apply(p, m) { Util.applyTransform = function Util_applyTransform(p, m) {
var xt = p[0] * m[0] + p[1] * m[2] + m[4]; var xt = p[0] * m[0] + p[1] * m[2] + m[4];
var yt = p[0] * m[1] + p[1] * m[3] + m[5]; var yt = p[0] * m[1] + p[1] * m[3] + m[5];
return [xt, yt]; return [xt, yt];
@ -103,7 +103,7 @@ var Util = (function UtilClosure() {
// | g h i | | Z | // | g h i | | Z |
// M is assumed to be serialized as [a,b,c,d,e,f,g,h,i], // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],
// with v as [X,Y,Z] // with v as [X,Y,Z]
Util.apply3dTransform = function apply3d(m, v) { Util.apply3dTransform = function Util_apply3dTransform(m, v) {
return [ return [
m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
@ -115,7 +115,7 @@ var Util = (function UtilClosure() {
// For coordinate systems whose origin lies in the bottom-left, this // For coordinate systems whose origin lies in the bottom-left, this
// means normalization to (BL,TR) ordering. For systems with origin in the // means normalization to (BL,TR) ordering. For systems with origin in the
// top-left, this means (TL,BR) ordering. // top-left, this means (TL,BR) ordering.
Util.normalizeRect = function normalizeRect(rect) { Util.normalizeRect = function Util_normalizeRect(rect) {
var r = rect.slice(0); // clone rect var r = rect.slice(0); // clone rect
if (rect[0] > rect[2]) { if (rect[0] > rect[2]) {
r[0] = rect[2]; r[0] = rect[2];
@ -131,7 +131,7 @@ var Util = (function UtilClosure() {
// Returns a rectangle [x1, y1, x2, y2] corresponding to the // Returns a rectangle [x1, y1, x2, y2] corresponding to the
// intersection of rect1 and rect2. If no intersection, returns 'false' // intersection of rect1 and rect2. If no intersection, returns 'false'
// The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2] // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]
Util.intersect = function intersect(rect1, rect2) { Util.intersect = function Util_intersect(rect1, rect2) {
function compare(a, b) { function compare(a, b) {
return a - b; return a - b;
}; };
@ -167,7 +167,7 @@ var Util = (function UtilClosure() {
return result; return result;
} }
Util.sign = function sign(num) { Util.sign = function Util_sign(num) {
return num < 0 ? -1 : 1; return num < 0 ? -1 : 1;
}; };
@ -304,7 +304,7 @@ var Promise = (function PromiseClosure() {
* @param {Promise[]} promises Array of promises to wait for. * @param {Promise[]} promises Array of promises to wait for.
* @return {Promise} New dependant promise. * @return {Promise} New dependant promise.
*/ */
Promise.all = function(promises) { Promise.all = function Promise_all(promises) {
var deferred = new Promise(); var deferred = new Promise();
var unresolved = promises.length; var unresolved = promises.length;
var results = []; var results = [];
@ -351,7 +351,7 @@ var Promise = (function PromiseClosure() {
return this._data; return this._data;
}, },
onData: function promiseOnData(callback) { onData: function Promise_onData(callback) {
if (this._data !== EMPTY_PROMISE) { if (this._data !== EMPTY_PROMISE) {
callback(this._data); callback(this._data);
} else { } else {
@ -359,7 +359,7 @@ var Promise = (function PromiseClosure() {
} }
}, },
resolve: function promiseResolve(data) { resolve: function Promise_resolve(data) {
if (this.isResolved) { if (this.isResolved) {
error('A Promise can be resolved only once ' + this.name); error('A Promise can be resolved only once ' + this.name);
} }
@ -376,7 +376,7 @@ var Promise = (function PromiseClosure() {
} }
}, },
reject: function proimseReject(reason) { reject: function Promise_reject(reason) {
if (this.isRejected) { if (this.isRejected) {
error('A Promise can be rejected only once ' + this.name); error('A Promise can be rejected only once ' + this.name);
} }
@ -393,7 +393,7 @@ var Promise = (function PromiseClosure() {
} }
}, },
then: function promiseThen(callback, errback) { then: function Promise_then(callback, errback) {
if (!callback) { if (!callback) {
error('Requiring callback' + this.name); error('Requiring callback' + this.name);
} }
@ -428,14 +428,14 @@ var StatTimer = (function StatTimerClosure() {
this.enabled = true; this.enabled = true;
} }
StatTimer.prototype = { StatTimer.prototype = {
time: function statTimerTime(name) { time: function StatTimer_time(name) {
if (!this.enabled) if (!this.enabled)
return; return;
if (name in this.started) if (name in this.started)
throw 'Timer is already running for ' + name; throw 'Timer is already running for ' + name;
this.started[name] = Date.now(); this.started[name] = Date.now();
}, },
timeEnd: function statTimerTimeEnd(name) { timeEnd: function StatTimer_timeEnd(name) {
if (!this.enabled) if (!this.enabled)
return; return;
if (!(name in this.started)) if (!(name in this.started))
@ -448,7 +448,7 @@ var StatTimer = (function StatTimerClosure() {
// Remove timer from started so it can be called again. // Remove timer from started so it can be called again.
delete this.started[name]; delete this.started[name];
}, },
toString: function statTimerToString() { toString: function StatTimer_toString() {
var times = this.times; var times = this.times;
var out = ''; var out = '';
// Find the longest name for padding purposes. // Find the longest name for padding purposes.

View File

@ -248,16 +248,21 @@ function done() {
} }
} }
function sendTaskResult(snapshot, task, failure) { function sendTaskResult(snapshot, task, failure, result) {
var result = { browser: browser, // Optional result argument is for retrying XHR requests - see below
id: task.id, if (!result) {
numPages: task.pdfDoc ? result = JSON.stringify({
(task.pageLimit || task.pdfDoc.numPages) : 0, browser: browser,
failure: failure, id: task.id,
file: task.file, numPages: task.pdfDoc ?
round: task.round, (task.pageLimit || task.pdfDoc.numPages) : 0,
page: task.pageNum, failure: failure,
snapshot: snapshot }; file: task.file,
round: task.round,
page: task.pageNum,
snapshot: snapshot
});
}
var r = new XMLHttpRequest(); var r = new XMLHttpRequest();
// (The POST URI is ignored atm.) // (The POST URI is ignored atm.)
@ -268,11 +273,11 @@ function sendTaskResult(snapshot, task, failure) {
inFlightRequests--; inFlightRequests--;
// Retry until successful // Retry until successful
if (r.status !== 200) if (r.status !== 200)
sendTaskResult(snapshot, task, failure); sendTaskResult(null, null, null, result);
} }
}; };
document.getElementById('inFlightCount').innerHTML = inFlightRequests++; document.getElementById('inFlightCount').innerHTML = inFlightRequests++;
r.send(JSON.stringify(result)); r.send(result);
} }
function clear(ctx) { function clear(ctx) {