var bits = this.bits = params.get('BitsPerComponent') || 8;
var columns = this.columns = params.get('Columns') || 1;
- var pixBytes = this.pixBytes = (colors * bits + 7) >> 3;
+ this.pixBytes = (colors * bits + 7) >> 3;
// add an extra pixByte to represent the pixel left of column 0
- var rowBytes = this.rowBytes = (columns * colors * bits + 7) >> 3;
+ this.rowBytes = (columns * colors * bits + 7) >> 3;
DecodeStream.call(this);
return this;
constructor.prototype.readBlockTiff = function() {
var rowBytes = this.rowBytes;
- var pixBytes = this.pixBytes;
var bufferLength = this.bufferLength;
var buffer = this.ensureBuffer(bufferLength + rowBytes);
var rawBytes = this.stream.getBytes(rowBytes);
+ var inbuf = 0, outbuf = 0;
+ var inbits = 0, outbits = 0;
+
if (bits === 1) {
- var inbuf = 0;
for (var i = 0; i < rowBytes; ++i) {
var c = rawBytes[i];
- inBuf = (inBuf << 8) | c;
+ inbuf = (inbuf << 8) | c;
// bitwise addition is exclusive or
- // first shift inBuf and then add
- currentRow[i] = (c ^ (inBuf >> colors)) & 0xFF;
- // truncate inBuf (assumes colors < 16)
- inBuf &= 0xFFFF;
+ // first shift inbuf and then add
+ currentRow[i] = (c ^ (inbuf >> colors)) & 0xFF;
+ // truncate inbuf (assumes colors < 16)
+ inbuf &= 0xFFFF;
}
} else if (bits === 8) {
for (var i = 0; i < colors; ++i)
} else {
var compArray = new Uint8Array(colors + 1);
var bitMask = (1 << bits) - 1;
- var inbuf = 0, outbut = 0;
- var inbits = 0, outbits = 0;
var j = 0, k = 0;
var columns = this.columns;
for (var i = 0; i < columns; ++i) {
return;
}
- var bufferLength = this.bufferLength;
+ var bufferLength = this.bufferLength, buffer;
// special code for z
if (c == zCode) {
- var buffer = this.ensureBuffer(bufferLength + 4);
+ buffer = this.ensureBuffer(bufferLength + 4);
for (var i = 0; i < 4; ++i)
buffer[bufferLength + i] = 0;
this.bufferLength += 4;
if (!c || c == tildaCode)
break;
}
- var buffer = this.ensureBuffer(bufferLength + i - 1);
+ buffer = this.ensureBuffer(bufferLength + i - 1);
this.bufferLength += i - 1;
// partial ending;
for (var i = 0; i < 4; ++i) {
code1 = this.lookBits(12);
if (code1 != 1)
- warning('bad rtc code');
+ warn('bad rtc code: ' + code1);
this.eatBits(12);
if (this.encoding > 0) {
this.lookBits(1);
}
}
for (var n = 11; n <= 12; ++n) {
- code == this.lookBits(n);
+ code = this.lookBits(n);
if (code == EOF)
return 1;
if (n < 12)
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx
];
- var MIN_INT = (1 << 31) | 0;
- var MAX_INT = (MIN_INT - 1) | 0;
- var MIN_UINT = 0;
- var MAX_UINT = ((1 << 30) * 4) - 1;
-
function ToHexDigit(ch) {
if (ch >= '0' && ch <= '9')
return ch.charCodeAt(0) - 48;
},
readXRefStream: function readXRefStream(stream) {
var streamParameters = stream.parameters;
- var length = streamParameters.get('Length');
var byteWidths = streamParameters.get('W');
var range = streamParameters.get('Index');
if (!range)
}
return shadow(this, 'rotate', rotate);
},
- startRendering: function(canvasCtx, continuation, onerror) {
+ startRendering: function(canvasCtx, continuation) {
var self = this;
var stats = self.stats;
stats.compile = stats.fonts = stats.render = 0;
return shadow(this, 'numPages', num);
},
getPage: function(n) {
- var linearization = this.linearization;
- // assert(!linearization, "linearized page access not implemented");
return this.catalog.getPage(n);
}
};
};
constructor.prototype = {
- eval: function(stream, xref, resources, fonts, images) {
+ evaluate: function(stream, xref, resources, fonts, images) {
resources = xref.fetchIfRef(resources) || new Dict();
var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict();
var patterns = xref.fetchIfRef(resources.get('Pattern')) || new Dict();
var dict = IsStream(pattern) ? pattern.dict : pattern;
var typeNum = dict.get('PatternType');
if (typeNum == 1) {
- patternName.code = this.eval(pattern, xref,
- dict.get('Resources'), fonts);
+ patternName.code = this.evaluate(pattern, xref,
+ dict.get('Resources'),
+ fonts);
}
}
}
);
if ('Form' == type.name) {
- args[0].code = this.eval(xobj, xref, xobj.dict.get('Resources'),
- fonts, images);
+ args[0].code = this.evaluate(xobj, xref,
+ xobj.dict.get('Resources'), fonts,
+ images);
}
if (xobj instanceof JpegStream)
images.bind(xobj); // monitoring image load
},
extractEncoding: function(dict, xref, properties) {
- var type = properties.type;
+ var type = properties.type, encoding;
if (properties.composite) {
if (type == 'CIDFontType2') {
var defaultWidth = xref.fetchIfRef(dict.get('DW')) || 1000;
var glyphsData = glyphsStream.getBytes(0);
// Glyph ids are big-endian 2-byte values
- var encoding = properties.encoding;
+ encoding = properties.encoding;
// Set encoding 0 to later verify the font has an encoding
encoding[0] = { unicode: 0, width: 0 };
};
}
} else if (type == 'CIDFontType0') {
- var encoding = xref.fetchIfRef(dict.get('Encoding'));
+ encoding = xref.fetchIfRef(dict.get('Encoding'));
if (IsName(encoding)) {
// Encoding is a predefined CMap
if (encoding.name == 'Identity-H') {
var map = properties.encoding;
var baseEncoding = null;
if (dict.has('Encoding')) {
- var encoding = xref.fetchIfRef(dict.get('Encoding'));
+ encoding = xref.fetchIfRef(dict.get('Encoding'));
if (IsDict(encoding)) {
var baseName = encoding.get('BaseEncoding');
if (baseName)
compile: function(stream, xref, resources, fonts, images) {
var pe = new PartialEvaluator();
- return pe.eval(stream, xref, resources, fonts, images);
+ return pe.evaluate(stream, xref, resources, fonts, images);
},
execute: function(code, xref, resources) {
this.ctx.mozDashOffset = dashPhase;
},
setRenderingIntent: function(intent) {
- TODO('set rendering intent');
+ TODO('set rendering intent: ' + intent);
},
setFlatness: function(flatness) {
- TODO('set flatness');
+ TODO('set flatness: ' + flatness);
},
setGState: function(dictName) {
- TODO('set graphics state from dict');
+ TODO('set graphics state from dict: ' + dictName);
},
save: function() {
this.ctx.save();
}
},
setTextRenderingMode: function(mode) {
- TODO('text rendering mode');
+ TODO('text rendering mode: ' + mode);
},
setTextRise: function(rise) {
- TODO('text rise');
+ TODO('text rise: ' + rise);
},
moveText: function(x, y) {
this.current.x = this.current.lineX += x;
// Type3 fonts
setCharWidth: function(xWidth, yWidth) {
- TODO("type 3 fonts ('d0' operator)");
+ TODO('type 3 fonts ("d0" operator) xWidth: ' + xWidth + ' yWidth: ' +
+ yWidth);
},
setCharWidthAndBounds: function(xWidth, yWidth, llx, lly, urx, ury) {
- TODO("type 3 fonts ('d1' operator)");
+ TODO('type 3 fonts ("d1" operator) xWidth: ' + xWidth + ' yWidth: ' +
+ yWidth + ' llx: ' + llx + ' lly: ' + lly + ' urx: ' + urx +
+ ' ury ' + ury);
},
// Color
var lookup = xref.fetchIfRef(cs[3]);
return new IndexedCS(base, hiVal, lookup);
case 'Separation':
- var name = cs[1];
var alt = ColorSpace.parse(cs[2], xref, res);
var tintFn = new PDFFunction(xref, xref.fetchIfRef(cs[3]));
return new SeparationCS(alt, tintFn);
var base = this.base;
var scale = 1 / ((1 << bits) - 1);
- var length = 3 * input.length;
+ var length = input.length;
var pos = 0;
var numComps = base.numComps;
- var baseBuf = new Uint8Array(numComps * input.length);
- for (var i = 0, ii = input.length; i < ii; ++i) {
+ var baseBuf = new Uint8Array(numComps * length);
+ for (var i = 0; i < length; ++i) {
var scaled = input[i] * scale;
var tinted = tintFn.func([scaled]);
for (var j = 0; j < numComps; ++j)
var RadialAxialShading = (function() {
function constructor(dict, matrix, xref, res, ctx) {
this.matrix = matrix;
- var bbox = dict.get('BBox');
- var background = dict.get('Background');
this.coordsArr = dict.get('Coords');
this.shadingType = dict.get('ShadingType');
this.type = 'Pattern';
getPattern: function() {
var coordsArr = this.coordsArr;
var type = this.shadingType;
+ var p0, p1, r0, r1;
if (type == 2) {
- var p0 = [coordsArr[0], coordsArr[1]];
- var p1 = [coordsArr[2], coordsArr[3]];
+ p0 = [coordsArr[0], coordsArr[1]];
+ p1 = [coordsArr[2], coordsArr[3]];
} else if (type == 3) {
- var p0 = [coordsArr[0], coordsArr[1]];
- var p1 = [coordsArr[3], coordsArr[4]];
- var r0 = coordsArr[2], r1 = coordsArr[5];
+ p0 = [coordsArr[0], coordsArr[1]];
+ p1 = [coordsArr[3], coordsArr[4]];
+ r0 = coordsArr[2];
+ r1 = coordsArr[5];
} else {
- error();
+ error('getPattern type unknown: ' + type);
}
var matrix = this.matrix;
p1 = Util.applyTransform(p1, userMatrix);
}
- var colorStops = this.colorStops;
+ var colorStops = this.colorStops, grad;
if (type == 2)
- var grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
+ grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);
else if (type == 3)
- var grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
+ grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);
for (var i = 0, ii = colorStops.length; i < ii; ++i) {
var c = colorStops[i];
var bufferPos = 0;
var output = bpc <= 8 ? new Uint8Array(length) :
bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
+ var rowComps = width * numComps;
if (bpc == 1) {
var valueZero = 0, valueOne = 1;
valueZero = decodeMap[0] ? 1 : 0;
valueOne = decodeMap[1] ? 1 : 0;
}
- var rowComps = width * numComps;
var mask = 0;
var buf = 0;
} else {
if (decodeMap != null)
TODO('interpolate component values');
- var rowComps = width * numComps;
- var bits, buf;
+ var bits = 0, buf = 0;
for (var i = 0, ii = length; i < ii; ++i) {
if (i % rowComps == 0) {
buf = 0;
floor *= outputSize;
ceil *= outputSize;
- var output = [];
+ var output = [], v = 0;
for (var i = 0; i < outputSize; ++i) {
if (ceil == floor) {
- var v = samples[ceil + i];
+ v = samples[ceil + i];
} else {
var low = samples[floor + i];
var high = samples[ceil + i];
- var v = low * scale + high * (1 - scale);
+ v = low * scale + high * (1 - scale);
}
var i2 = i * 2;