blob: d1be9ec8622975a43a02014b2f12810c1ee4cf98 [file] [log] [blame]
describe('PathKit\'s Effects', function() {
// Note, don't try to print the PathKit object - it can cause Karma/Jasmine to lock up.
var PathKit = null;
const LoadPathKit = new Promise(function(resolve, reject) {
if (PathKit) {
resolve();
} else {
PathKitInit({
locateFile: (file) => '/pathkit/'+file,
}).then((_PathKit) => {
PathKit = _PathKit;
resolve();
});
}
});
// see https://fiddle.skia.org/c/@discrete_path
function drawStar(X=128, Y=128, R=116) {
let p = PathKit.NewPath();
p.moveTo(X + R, Y);
for (let i = 1; i < 8; i++) {
let a = 2.6927937 * i;
p.lineTo(X + R * Math.cos(a), Y + R * Math.sin(a));
}
p.closePath();
return p;
}
it('effects_dash', function(done) {
function setup(ctx) {
ctx.path = drawStar();
}
function test(ctx) {
let path = ctx.path.copy().dash(10, 3, 1);
path.delete();
}
function teardown(ctx) {
ctx.path.delete();
}
LoadPathKit.then(() => {
benchmarkAndReport('effects_dash', setup, test, teardown).then(() => {
done();
}).catch(reportError(done));
});
});
it('effects_trim', function(done) {
function setup(ctx) {
ctx.path = drawStar();
}
function test(ctx) {
let path = ctx.path.copy().trim(0.25, .8);
path.delete();
}
function teardown(ctx) {
ctx.path.delete();
}
LoadPathKit.then(() => {
benchmarkAndReport('effects_trim', setup, test, teardown).then(() => {
done();
}).catch(reportError(done));
});
});
it('effects_trim_complement', function(done) {
function setup(ctx) {
ctx.path = drawStar();
}
function test(ctx) {
let path = ctx.path.copy().trim(0.25, .8, true);
path.delete();
}
function teardown(ctx) {
ctx.path.delete();
}
LoadPathKit.then(() => {
benchmarkAndReport('effects_trim_complement', setup, test, teardown).then(() => {
done();
}).catch(reportError(done));
});
});
it('effects_transform', function(done) {
function setup(ctx) {
ctx.path = drawStar();
}
function test(ctx) {
let path = ctx.path.copy().transform(3, 0, 0,
0, 3, 0,
0, 0, 1);
path.delete();
}
function teardown(ctx) {
ctx.path.delete();
}
LoadPathKit.then(() => {
benchmarkAndReport('effects_transform', setup, test, teardown).then(() => {
done();
}).catch(reportError(done));
});
});
it('effects_stroke', function(done) {
function setup(ctx) {
ctx.path = drawStar();
}
function test(ctx) {
let path = ctx.path.copy().stroke({
width: 15,
join: PathKit.StrokeJoin.BEVEL,
cap: PathKit.StrokeCap.BUTT,
miter_limit: 2,
});
path.delete();
}
function teardown(ctx) {
ctx.path.delete();
}
LoadPathKit.then(() => {
benchmarkAndReport('effects_stroke', setup, test, teardown).then(() => {
done();
}).catch(reportError(done));
});
});
});