|
327 | 327 |
|
328 | 328 | var canvas = document.createElement('canvas'), |
329 | 329 | ctx = canvas.getContext('2d'), |
330 | | - gradient, grad, i, len, img; |
| 330 | + gradient, grad, i, len; |
331 | 331 |
|
332 | 332 | canvas.width = bounds.width; |
333 | 333 | canvas.height = bounds.height; |
334 | 334 |
|
335 | | - // TODO: add support for multi defined background gradients (like radial gradient example in background.html) |
| 335 | + // TODO: add support for multi defined background gradients |
336 | 336 | gradient = _html2canvas.Generate.parseGradient(src, bounds); |
337 | 337 |
|
338 | | - img = new Image(); |
339 | | - |
340 | | - if(gradient){ |
341 | | - if(gradient.type === 'linear'){ |
| 338 | + if(gradient) { |
| 339 | + if(gradient.type === 'linear') { |
342 | 340 | grad = ctx.createLinearGradient(gradient.x0, gradient.y0, gradient.x1, gradient.y1); |
343 | 341 |
|
344 | 342 | for (i = 0, len = gradient.colorStops.length; i < len; i+=1) { |
|
353 | 351 | ctx.fillStyle = grad; |
354 | 352 | ctx.fillRect(0, 0, bounds.width, bounds.height); |
355 | 353 |
|
356 | | - img.src = canvas.toDataURL(); |
357 | | - } else if(gradient.type === 'circle'){ |
| 354 | + } else if(gradient.type === 'circle') { |
358 | 355 |
|
359 | 356 | grad = ctx.createRadialGradient(gradient.cx, gradient.cy, 0, gradient.cx, gradient.cy, gradient.rx); |
360 | 357 |
|
|
370 | 367 | ctx.fillStyle = grad; |
371 | 368 | ctx.fillRect(0, 0, bounds.width, bounds.height); |
372 | 369 |
|
373 | | - img.src = canvas.toDataURL(); |
374 | | - } else if(gradient.type === 'ellipse'){ |
| 370 | + } else if(gradient.type === 'ellipse') { |
375 | 371 |
|
376 | 372 | // draw circle |
377 | 373 | var canvasRadial = document.createElement('canvas'), |
|
382 | 378 | canvasRadial.width = canvasRadial.height = di; |
383 | 379 |
|
384 | 380 | grad = ctxRadial.createRadialGradient(gradient.rx, gradient.ry, 0, gradient.rx, gradient.ry, ri); |
385 | | - |
| 381 | + |
386 | 382 | for (i = 0, len = gradient.colorStops.length; i < len; i+=1) { |
387 | 383 | try { |
388 | 384 | grad.addColorStop(gradient.colorStops[i].stop, gradient.colorStops[i].color); |
|
397 | 393 |
|
398 | 394 | ctx.fillStyle = gradient.colorStops[i - 1].color; |
399 | 395 | ctx.fillRect(0, 0, canvas.width, canvas.height); |
| 396 | + ctx.drawImage(canvasRadial, gradient.cx - gradient.rx, gradient.cy - gradient.ry, 2 * gradient.rx, 2 * gradient.ry); |
400 | 397 |
|
401 | | - imgRadial = new Image(); |
402 | | - imgRadial.onload = function() { // wait until the image is filled |
403 | | - |
404 | | - // transform circle to ellipse |
405 | | - ctx.drawImage(imgRadial, gradient.cx - gradient.rx, gradient.cy - gradient.ry, 2 * gradient.rx, 2 * gradient.ry); |
406 | | - |
407 | | - img.src = canvas.toDataURL(); |
408 | | - |
409 | | - }; |
410 | | - imgRadial.src = canvasRadial.toDataURL(); |
411 | 398 | } |
412 | 399 | } |
413 | 400 |
|
414 | | - return img; |
| 401 | + return canvas; |
415 | 402 | }; |
416 | 403 |
|
417 | 404 | _html2canvas.Generate.ListAlpha = function(number) { |
|
0 commit comments