EX: 'endCompat'
};
+ function splitCombinedOperations(operations) {
+ // Two operations can be combined together, trying to find which two
+ // operations were concatenated.
+ for (var i = operations.length - 1; i > 0; i--) {
+ var op1 = operations.substring(0, i), op2 = operations.substring(i);
+ if (op1 in OP_MAP && op2 in OP_MAP)
+ return [op1, op2]; // operations found
+ }
+ return null;
+ }
+
PartialEvaluator.prototype = {
- getOperatorList: function partialEvaluatorGetOperatorList(stream, resources,
- dependency, queue) {
+ getOperatorList: function PartialEvaluator_getOperatorList(stream,
+ resources,
+ dependency,
+ queue) {
var self = this;
var xref = this.xref;
var fnArray = queue.fnArray, argsArray = queue.argsArray;
var dependencyArray = dependency || [];
- 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 parser = new Parser(new Lexer(stream), false);
+ resources = resources || new Dict();
+ var xobjs = resources.get('XObject') || new Dict();
+ var patterns = resources.get('Pattern') || new Dict();
+ var parser = new Parser(new Lexer(stream), false, xref);
var res = resources;
+ var hasNextObj = false, nextObj;
var args = [], obj;
- var getObjBt = function getObjBt() {
- parser = this.oldParser;
- return { name: 'BT' };
- };
var TILING_PATTERN = 1, SHADING_PATTERN = 2;
- while (!isEOF(obj = parser.getObj())) {
+ while (true) {
+ if (hasNextObj) {
+ obj = nextObj;
+ hasNextObj = false;
+ } else {
+ obj = parser.getObj();
+ if (isEOF(obj))
+ break;
+ }
+
if (isCmd(obj)) {
var cmd = obj.cmd;
var fn = OP_MAP[cmd];