Implement "n" (end path), add stubs for NYI operators
This commit is contained in:
		
							parent
							
								
									f9839beda8
								
							
						
					
					
						commit
						fcdd7e3845
					
				
							
								
								
									
										114
									
								
								pdf.js
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								pdf.js
									
									
									
									
									
								
							| @ -1003,6 +1003,8 @@ var Interpreter = (function() { | ||||
|             J: gfx.setLineCap, | ||||
|             j: gfx.setLineJoin, | ||||
|             d: gfx.setDash, | ||||
|             ri: gfx.setRenderingIntent, | ||||
|             i: gfx.setFlatness, | ||||
|             q: gfx.save, | ||||
|             Q: gfx.restore, | ||||
|             cm: gfx.transform, | ||||
| @ -1017,6 +1019,7 @@ var Interpreter = (function() { | ||||
|             f: gfx.fill, | ||||
|             B: gfx.fillStroke, | ||||
|             b: gfx.closeFillStroke, | ||||
|             n: gfx.endPath, | ||||
| 
 | ||||
|             // Clipping
 | ||||
| 
 | ||||
| @ -1028,12 +1031,17 @@ var Interpreter = (function() { | ||||
|                 gfx.setFont(font, size); | ||||
|             }, | ||||
|             Td: gfx.moveText, | ||||
|             Tm: gfx.setTextMatrix, | ||||
|             Tj: gfx.showText, | ||||
|             TJ: gfx.showSpacedText, | ||||
| 
 | ||||
|             // Type3 fonts
 | ||||
| 
 | ||||
|             // Color
 | ||||
|             CS: gfx.setStrokeColorSpace, | ||||
|             cs: gfx.setFillColorSpace, | ||||
|             SC: gfx.setStrokeColor, | ||||
|             sc: gfx.setFillColor, | ||||
|             g: gfx.setFillGray, | ||||
|             RG: gfx.setStrokeRGBColor, | ||||
|             rg: gfx.setFillRGBColor, | ||||
| @ -1041,6 +1049,8 @@ var Interpreter = (function() { | ||||
|             // Shading
 | ||||
|             // Images
 | ||||
|             // XObjects
 | ||||
|             Do: gfx.paintXObject, | ||||
| 
 | ||||
|             // Marked content
 | ||||
|             // Compatibility
 | ||||
|         }; | ||||
| @ -1064,11 +1074,10 @@ var Interpreter = (function() { | ||||
|                 if (IsCmd(obj)) { | ||||
|                     var cmd = obj.cmd; | ||||
|                     var fn = map[cmd]; | ||||
|                     if (fn) { | ||||
|                         if (fn.length != args.length) | ||||
|                             this.error("Invalid number of arguments '" + cmd + "'"); | ||||
|                     if (fn) | ||||
|                         // TODO figure out how to type-check vararg functions
 | ||||
|                         fn.apply(gfx, args); | ||||
|                     } else | ||||
|                     else | ||||
|                         this.error("Unknown command '" + cmd + "'"); | ||||
|                     args.length = 0; | ||||
|                 } else { | ||||
| @ -1116,6 +1125,12 @@ var EchoGraphics = (function() { | ||||
|         setDash: function(dashArray, dashPhase) { | ||||
|             this.printdentln(""+ dashArray +" "+ dashPhase +" d"); | ||||
|         }, | ||||
|         setRenderingIntent: function(intent) { | ||||
|             this.printdentln("/"+ intent.name + " ri"); | ||||
|         }, | ||||
|         setFlatness: function(flatness) { | ||||
|             this.printdentln(""+ flatness +" i"); | ||||
|         }, | ||||
|         save: function() { | ||||
|             this.printdentln("q"); | ||||
|         }, | ||||
| @ -1157,6 +1172,9 @@ var EchoGraphics = (function() { | ||||
|         closeFillStroke: function() { | ||||
|             this.printdentln("b"); | ||||
|         }, | ||||
|         endPath: function() { | ||||
|             this.printdentln("n"); | ||||
|         }, | ||||
| 
 | ||||
|         // Clipping
 | ||||
| 
 | ||||
| @ -1175,6 +1193,10 @@ var EchoGraphics = (function() { | ||||
|         moveText: function (x, y) { | ||||
|             this.printdentln(""+ x +" "+ y +" Td"); | ||||
|         }, | ||||
|         setTextMatrix: function(a, b, c, d, e, f) { | ||||
|             this.printdentln(""+ a +" "+ b +" "+ c + | ||||
|                              " "+d +" "+ e +" "+ f + " Tm"); | ||||
|         }, | ||||
|         showText: function(text) { | ||||
|             this.printdentln("( "+ text +" ) Tj"); | ||||
|         }, | ||||
| @ -1185,6 +1207,24 @@ var EchoGraphics = (function() { | ||||
|         // Type3 fonts
 | ||||
| 
 | ||||
|         // Color
 | ||||
|         setStrokeColorSpace: function(space) { | ||||
|             this.printdentln("/"+ space.name +" CS"); | ||||
|         }, | ||||
|         setFillColorSpace: function(space) { | ||||
|             this.printdentln("/"+ space.name +" cs"); | ||||
|         }, | ||||
|         setStrokeColor: function(/*...*/) { | ||||
|             this.printdent(""); | ||||
|             for (var i = 0; i < arguments.length; ++i) | ||||
|                 this.print(""+ arguments[i] +" "); | ||||
|             this.printdentln("SC"); | ||||
|         }, | ||||
|         setFillColor: function(/*...*/) { | ||||
|             this.printdent(""); | ||||
|             for (var i = 0; i < arguments.length; ++i) | ||||
|                 this.print(""+ arguments[i] +" "); | ||||
|             this.printdentln("sc"); | ||||
|         }, | ||||
|         setFillGray: function(gray) { | ||||
|             this.printdentln(""+ gray +" g"); | ||||
|         }, | ||||
| @ -1198,6 +1238,10 @@ var EchoGraphics = (function() { | ||||
|         // Shading
 | ||||
|         // Images
 | ||||
|         // XObjects
 | ||||
|         paintXObject: function(obj) { | ||||
|             this.printdentln("/"+ obj.name +" Do"); | ||||
|         }, | ||||
| 
 | ||||
|         // Marked content
 | ||||
|         // Compatibility
 | ||||
| 
 | ||||
| @ -1209,9 +1253,13 @@ var EchoGraphics = (function() { | ||||
|             this.print(str); | ||||
|             this.out += "\n"; | ||||
|         }, | ||||
|         printdentln: function(str) { | ||||
|         printdent: function(str) { | ||||
|             this.print(this.indentationStr); | ||||
|             this.println(str); | ||||
|             this.print(str); | ||||
|         }, | ||||
|         printdentln: function(str) { | ||||
|             this.printdent(str); | ||||
|             this.println(""); | ||||
|         }, | ||||
|         indent: function() { | ||||
|             this.indentation += 2; | ||||
| @ -1277,6 +1325,12 @@ var CanvasGraphics = (function() { | ||||
|         setDash: function(dashArray, dashPhase) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         setRenderingIntent: function(intent) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         setFlatness: function(flatness) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         save: function() { | ||||
|             this.ctx.save(); | ||||
|             this.stateStack.push(this.current); | ||||
| @ -1322,6 +1376,9 @@ var CanvasGraphics = (function() { | ||||
|         closeFillStroke: function() { | ||||
|             return this.fillStroke(); | ||||
|         }, | ||||
|         endPath: function() { | ||||
|             this.consumePath(); | ||||
|         }, | ||||
| 
 | ||||
|         // Clipping
 | ||||
| 
 | ||||
| @ -1339,10 +1396,13 @@ var CanvasGraphics = (function() { | ||||
|         moveText: function (x, y) { | ||||
|             this.current.lineX += x; | ||||
|             this.current.lineY += y; | ||||
|             // XXX transform
 | ||||
|             // TODO transform
 | ||||
|             this.current.curX = this.current.lineX; | ||||
|             this.current.curY = this.current.lineY; | ||||
|         }, | ||||
|         setTextMatrix: function(a, b, c, d, e, f) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         showText: function(text) { | ||||
|             this.ctx.save(); | ||||
|             this.ctx.translate(0, 2 * this.current.curY); | ||||
| @ -1369,6 +1429,18 @@ var CanvasGraphics = (function() { | ||||
|         // Type3 fonts
 | ||||
| 
 | ||||
|         // Color
 | ||||
|         setStrokeColorSpace: function(space) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         setFillColorSpace: function(space) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         setStrokeColor: function(/*...*/) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         setFillColor: function(/*...*/) { | ||||
|             // TODO
 | ||||
|         }, | ||||
|         setFillGray: function(gray) { | ||||
|             this.setFillRGBColor(gray, gray, gray); | ||||
|         }, | ||||
| @ -1379,6 +1451,12 @@ var CanvasGraphics = (function() { | ||||
|             this.ctx.fillStyle = this.makeCssRgb(r, g, b); | ||||
|         }, | ||||
| 
 | ||||
|         // XObjects
 | ||||
|         paintXObject: function(obj) { | ||||
|             // TODO
 | ||||
|         }, | ||||
| 
 | ||||
| 
 | ||||
|         // Helper functions
 | ||||
| 
 | ||||
|         consumePath: function() { | ||||
| @ -1499,6 +1577,13 @@ var tests = [ | ||||
|           int(-72), int(0), cmd("l"), | ||||
|           int(4), cmd("w"), | ||||
|           cmd("h"), cmd("S"), | ||||
|           int(100), int(72), cmd("m"), | ||||
|           int(172), int(0), cmd("l"), | ||||
|           int(100), int(-72), cmd("l"), | ||||
|           int(-172), int(0), cmd("l"), | ||||
|           int(4), cmd("w"), | ||||
|           cmd("n"), | ||||
|           cmd("S"), | ||||
|           eof() | ||||
|       ] | ||||
|     }, | ||||
| @ -1579,6 +1664,21 @@ var tests = [ | ||||
|           eof() | ||||
|       ], | ||||
|     }, | ||||
|     { name: "NYI",              // check that NYI commands are no-ops
 | ||||
|       res: { }, | ||||
|       mediaBox: [ 0, 0, 612, 792 ], | ||||
|       objs: [ | ||||
|           name("Perceptual"), cmd("ri"), | ||||
|           int(2), cmd("i"), | ||||
|           int(1), int(0), int(0), int(1), int(80), int(80), cmd("Tm"), | ||||
|           name("DeviceRGB"), cmd("CS"), | ||||
|           name("DeviceGray"), cmd("cs"), | ||||
|           int(1), int(0), int(0), cmd("SC"), | ||||
|           int(1), cmd("sc"), | ||||
|           name("object"), cmd("Do"), | ||||
|           eof() | ||||
|      ], | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
|      | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user