Skip to content

Commit 937340c

Browse files
convert svgtoimg to Promise from EventEmitter
1 parent cff741a commit 937340c

File tree

1 file changed

+53
-54
lines changed

1 file changed

+53
-54
lines changed

src/snapshot/svgtoimg.js

Lines changed: 53 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -9,62 +9,61 @@
99

1010
'use strict';
1111

12-
var EventEmitter = require('events').EventEmitter;
13-
1412
function svgToImg(opts) {
1513

16-
var ev = opts.emitter ? opts.emitter : new EventEmitter();
17-
18-
var Image = window.Image;
19-
var Blob = window.Blob;
20-
21-
var svg = opts.svg;
22-
var format = opts.format || 'png';
23-
var canvas = opts.canvas;
24-
25-
var ctx = canvas.getContext('2d');
26-
var img = new Image();
27-
var DOMURL = window.URL || window.webkitURL;
28-
var svgBlob = new Blob([svg], {type: 'image/svg+xml;charset=utf-8'});
29-
var url = DOMURL.createObjectURL(svgBlob);
30-
31-
canvas.height = opts.height || 150;
32-
canvas.width = opts.width || 300;
33-
34-
img.onload = function() {
35-
var imgData;
36-
37-
DOMURL.revokeObjectURL(url);
38-
ctx.drawImage(img, 0, 0);
39-
40-
switch(format) {
41-
case 'jpeg':
42-
imgData = canvas.toDataURL('image/jpeg');
43-
break;
44-
case 'png':
45-
imgData = canvas.toDataURL('image/png');
46-
break;
47-
case 'webp':
48-
imgData = canvas.toDataURL('image/webp');
49-
break;
50-
case 'svg':
51-
imgData = svg;
52-
break;
53-
default:
54-
return ev.emit('error', 'Image format is not jpeg, png or svg');
55-
}
56-
57-
ev.emit('success', imgData);
58-
};
59-
60-
img.onerror = function(err) {
61-
DOMURL.revokeObjectURL(url);
62-
return ev.emit('error', err);
63-
};
64-
65-
img.src = url;
66-
67-
return ev;
14+
var promise = new Promise(function(resolve, reject) {
15+
16+
var Image = window.Image;
17+
var Blob = window.Blob;
18+
19+
var svg = opts.svg;
20+
var format = opts.format || 'png';
21+
var canvas = opts.canvas;
22+
23+
var ctx = canvas.getContext('2d');
24+
var img = new Image();
25+
var DOMURL = window.URL || window.webkitURL;
26+
var svgBlob = new Blob([svg], {type: 'image/svg+xml;charset=utf-8'});
27+
var url = DOMURL.createObjectURL(svgBlob);
28+
29+
canvas.height = opts.height || 150;
30+
canvas.width = opts.width || 300;
31+
32+
img.onload = function() {
33+
var imgData;
34+
35+
DOMURL.revokeObjectURL(url);
36+
ctx.drawImage(img, 0, 0);
37+
38+
switch(format) {
39+
case 'jpeg':
40+
imgData = canvas.toDataURL('image/jpeg');
41+
break;
42+
case 'png':
43+
imgData = canvas.toDataURL('image/png');
44+
break;
45+
case 'webp':
46+
imgData = canvas.toDataURL('image/webp');
47+
break;
48+
case 'svg':
49+
imgData = svg;
50+
break;
51+
default:
52+
reject(new Error('Image format is not jpeg, png or svg'));
53+
}
54+
55+
resolve(imgData);
56+
};
57+
58+
img.onerror = function(err) {
59+
DOMURL.revokeObjectURL(url);
60+
reject(err);
61+
};
62+
63+
img.src = url;
64+
});
65+
66+
return promise;
6867
}
6968

7069
module.exports = svgToImg;

0 commit comments

Comments
 (0)