@@ -27,7 +27,7 @@ var reGradients = [
27
27
/*
28
28
* TODO: Add IE10 vendor prefix (-ms) support
29
29
* TODO: Add W3C gradient (linear-gradient) support
30
- * TODO: Add old Webkit -webkit-gradient(radial, ...) support (new Chrome doesn´t support old syntax?!)
30
+ * TODO: Add old Webkit -webkit-gradient(radial, ...) support
31
31
* TODO: Maybe some RegExp optimizations are possible ;o)
32
32
*/
33
33
_html2canvas . Generate . parseGradient = function ( css , bounds ) {
@@ -115,7 +115,7 @@ _html2canvas.Generate.parseGradient = function(css, bounds) {
115
115
case '-webkit-gradient' :
116
116
117
117
gradient = {
118
- type : m1 [ 2 ] ,
118
+ type : m1 [ 2 ] === 'radial' ? 'circle' : m1 [ 2 ] , // TODO: Add radial gradient support for older mozilla definitions
119
119
x0 : 0 ,
120
120
y0 : 0 ,
121
121
x1 : 0 ,
@@ -396,17 +396,20 @@ _html2canvas.Generate.Gradient = function(src, bounds) {
396
396
397
397
ctxRadial . fillStyle = grad ;
398
398
ctxRadial . fillRect ( 0 , 0 , di , di ) ;
399
-
400
- imgRadial = new Image ( ) ;
401
- imgRadial . src = canvasRadial . toDataURL ( ) ;
402
399
403
- // transform circle to ellipse
404
400
ctx . fillStyle = gradient . colorStops [ i - 1 ] . color ;
405
401
ctx . fillRect ( 0 , 0 , canvas . width , canvas . height ) ;
406
402
407
- ctx . drawImage ( imgRadial , gradient . cx - gradient . rx , gradient . cy - gradient . ry , 2 * gradient . rx , 2 * gradient . ry ) ;
408
-
409
- img . src = canvas . toDataURL ( ) ;
403
+ imgRadial = new Image ( ) ;
404
+ imgRadial . onload = function ( ) { // wait until the image is filled
405
+
406
+ // transform circle to ellipse
407
+ ctx . drawImage ( imgRadial , gradient . cx - gradient . rx , gradient . cy - gradient . ry , 2 * gradient . rx , 2 * gradient . ry ) ;
408
+
409
+ img . src = canvas . toDataURL ( ) ;
410
+
411
+ }
412
+ imgRadial . src = canvasRadial . toDataURL ( ) ;
410
413
}
411
414
}
412
415
0 commit comments