Couple more tests and operators
This commit is contained in:
parent
a073e45eba
commit
3b558229c1
63
pdf.js
63
pdf.js
@ -663,6 +663,8 @@ var Interpreter = (function() {
|
|||||||
params: [ ] },
|
params: [ ] },
|
||||||
"Q" : { fn: "restore",
|
"Q" : { fn: "restore",
|
||||||
params: [ ] },
|
params: [ ] },
|
||||||
|
"cm": { fn: "transform",
|
||||||
|
params: [ "Num", "Num", "Num", "Num", "Num", "Num" ] },
|
||||||
// Path
|
// Path
|
||||||
"m" : { fn: "moveTo",
|
"m" : { fn: "moveTo",
|
||||||
params: [ "Num", "Num" ] },
|
params: [ "Num", "Num" ] },
|
||||||
@ -670,10 +672,14 @@ var Interpreter = (function() {
|
|||||||
params: [ "Num", "Num" ] },
|
params: [ "Num", "Num" ] },
|
||||||
"c" : { fn: "curveTo",
|
"c" : { fn: "curveTo",
|
||||||
params: [ "Num", "Num", "Num", "Num", "Num", "Num" ] },
|
params: [ "Num", "Num", "Num", "Num", "Num", "Num" ] },
|
||||||
|
"h" : { fn: "closePath",
|
||||||
|
params: [ ] },
|
||||||
"re": { fn: "rectangle",
|
"re": { fn: "rectangle",
|
||||||
params: [ "Num", "Num", "Num", "Num" ] },
|
params: [ "Num", "Num", "Num", "Num" ] },
|
||||||
"S" : { fn: "stroke",
|
"S" : { fn: "stroke",
|
||||||
params: [ ] },
|
params: [ ] },
|
||||||
|
"f" : { fn: "fill",
|
||||||
|
params: [ ] },
|
||||||
"B" : { fn: "fillStroke",
|
"B" : { fn: "fillStroke",
|
||||||
params: [ ] },
|
params: [ ] },
|
||||||
"b" : { fn: "closeFillStroke",
|
"b" : { fn: "closeFillStroke",
|
||||||
@ -779,6 +785,10 @@ var EchoGraphics = (function() {
|
|||||||
restore: function() {
|
restore: function() {
|
||||||
this.printdentln("Q");
|
this.printdentln("Q");
|
||||||
},
|
},
|
||||||
|
transform: function(a, b, c, d, e, f) {
|
||||||
|
this.printdentln(""+ a +" "+ b +" "+ c +
|
||||||
|
" "+d +" "+ e +" "+ f + " cm");
|
||||||
|
},
|
||||||
|
|
||||||
// Path
|
// Path
|
||||||
moveTo: function(x, y) {
|
moveTo: function(x, y) {
|
||||||
@ -792,12 +802,18 @@ var EchoGraphics = (function() {
|
|||||||
" "+ x2 +" "+ y2 +
|
" "+ x2 +" "+ y2 +
|
||||||
" "+ x3 +" "+ y3 + " c");
|
" "+ x3 +" "+ y3 + " c");
|
||||||
},
|
},
|
||||||
|
closePath: function() {
|
||||||
|
this.printdentln("h");
|
||||||
|
},
|
||||||
rectangle: function(x, y, width, height) {
|
rectangle: function(x, y, width, height) {
|
||||||
this.printdentln(""+ x +" "+ y + " "+ width +" "+ height +" re");
|
this.printdentln(""+ x +" "+ y + " "+ width +" "+ height +" re");
|
||||||
},
|
},
|
||||||
stroke: function() {
|
stroke: function() {
|
||||||
this.printdentln("S");
|
this.printdentln("S");
|
||||||
},
|
},
|
||||||
|
fill: function() {
|
||||||
|
this.printdentln("f");
|
||||||
|
},
|
||||||
fillStroke: function() {
|
fillStroke: function() {
|
||||||
this.printdentln("B");
|
this.printdentln("B");
|
||||||
},
|
},
|
||||||
@ -925,15 +941,16 @@ var CanvasGraphics = (function() {
|
|||||||
},
|
},
|
||||||
save: function() {
|
save: function() {
|
||||||
this.ctx.save();
|
this.ctx.save();
|
||||||
this.stateStack.push(this.current);
|
//this.stateStack.push(this.current);
|
||||||
// ????
|
//this.current = new CanvasGraphicsState(this.ctx, hdpi, vdpi, pageBox);
|
||||||
this.current = new CanvasGraphicsState(this.ctx,
|
|
||||||
hdpi, vdpi, pageBox);
|
|
||||||
},
|
},
|
||||||
restore: function() {
|
restore: function() {
|
||||||
this.current = this.stateStack.pop();
|
//this.current = this.stateStack.pop();
|
||||||
this.ctx.restore();
|
this.ctx.restore();
|
||||||
},
|
},
|
||||||
|
transform: function(a, b, c, d, e, f) {
|
||||||
|
this.ctx.transform(a, b, c, d, e, f);
|
||||||
|
},
|
||||||
|
|
||||||
// Path
|
// Path
|
||||||
moveTo: function(x, y) {
|
moveTo: function(x, y) {
|
||||||
@ -945,6 +962,9 @@ var CanvasGraphics = (function() {
|
|||||||
curveTo: function(x1, y1, x2, y2, x3, y3) {
|
curveTo: function(x1, y1, x2, y2, x3, y3) {
|
||||||
this.ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
|
this.ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
|
||||||
},
|
},
|
||||||
|
closePath: function() {
|
||||||
|
this.ctx.closePath();
|
||||||
|
},
|
||||||
rectangle: function(x, y, width, height) {
|
rectangle: function(x, y, width, height) {
|
||||||
this.ctx.rect(x, y, width, height);
|
this.ctx.rect(x, y, width, height);
|
||||||
},
|
},
|
||||||
@ -952,6 +972,10 @@ var CanvasGraphics = (function() {
|
|||||||
this.ctx.stroke();
|
this.ctx.stroke();
|
||||||
this.consumePath();
|
this.consumePath();
|
||||||
},
|
},
|
||||||
|
fill: function() {
|
||||||
|
this.ctx.fill();
|
||||||
|
this.consumePath();
|
||||||
|
},
|
||||||
fillStroke: function() {
|
fillStroke: function() {
|
||||||
this.ctx.fill();
|
this.ctx.fill();
|
||||||
this.ctx.stroke();
|
this.ctx.stroke();
|
||||||
@ -1076,8 +1100,37 @@ var tests = [
|
|||||||
eof()
|
eof()
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{ name: "Heart",
|
||||||
|
objs: [
|
||||||
|
cmd("q"),
|
||||||
|
real(0.9), real(0.0), real(0.0), cmd("rg"),
|
||||||
|
int(75), int(40), cmd("m"),
|
||||||
|
int(75), int(37), int(70), int(25), int(50), int(25), cmd("c"),
|
||||||
|
int(20), int(25), int(20), real(62.5), int(20), real(62.5), cmd("c"),
|
||||||
|
int(20), int(80), int(40), int(102), int(75), int(120), cmd("c"),
|
||||||
|
int(110), int(102), int(130), int(80), int(130), real(62.5), cmd("c"),
|
||||||
|
int(130), real(62.5), int(130), int(25), int(100), int(25), cmd("c"),
|
||||||
|
int(85), int(25), int(75), int(37), int(75), int(40), cmd("c"),
|
||||||
|
cmd("f"),
|
||||||
|
cmd("Q"),
|
||||||
|
eof()
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{ name: "Rectangle",
|
||||||
|
objs: [
|
||||||
|
int(1), int(0), int(0), int(1), int(80), int(80), cmd("cm"),
|
||||||
|
int(0), int(72), cmd("m"),
|
||||||
|
int(72), int(0), cmd("l"),
|
||||||
|
int(0), int(-72), cmd("l"),
|
||||||
|
int(-72), int(0), cmd("l"),
|
||||||
|
int(4), cmd("w"),
|
||||||
|
cmd("h"), cmd("S"),
|
||||||
|
eof()
|
||||||
|
]
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
function runEchoTests() {
|
function runEchoTests() {
|
||||||
tests.forEach(function(test) {
|
tests.forEach(function(test) {
|
||||||
putstr("Running echo test '"+ test.name +"'... ");
|
putstr("Running echo test '"+ test.name +"'... ");
|
||||||
|
Loading…
Reference in New Issue
Block a user