Skip to content

Commit 40bce5e

Browse files
author
André Fiedler
committed
"added -o-radial-gradient support"
1 parent 0556892 commit 40bce5e

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

src/Generate.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ var reGradients = [
2020
/^(-webkit-gradient)\((linear|radial),\s((?:\d{1,3}%?)\s(?:\d{1,3}%?),\s(?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)-]+)\)$/,
2121
/^(-moz-linear-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)]+)\)$/,
2222
/^(-webkit-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(ellipse|circle)\s([a-z-]+)((?:,\s(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+)\)$/,
23-
/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(ellipse|circle)\s?([a-z-]*)((?:,\s(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+)\)$/
23+
/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(ellipse|circle)\s?([a-z-]*)((?:,\s(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+)\)$/,
24+
/^(-o-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(ellipse|circle)\s([a-z-]+)((?:,\s(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+)\)$/
2425
];
2526

2627
/*
@@ -204,6 +205,7 @@ _html2canvas.Generate.parseGradient = function(css, bounds) {
204205

205206
case '-webkit-radial-gradient':
206207
case '-moz-radial-gradient':
208+
case '-o-radial-gradient':
207209
console.log(m1);
208210

209211
gradient = {
@@ -298,16 +300,18 @@ _html2canvas.Generate.parseGradient = function(css, bounds) {
298300
}
299301

300302
// color stops
301-
m2 = m1[5].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+/g);
303+
m2 = m1[5].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g);
302304
if(m2){
303305
m2Len = m2.length;
304306
step = 1 / Math.max(m2Len - 1, 1);
305307
for(i = 0; i < m2Len; i+=1){
306-
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%)?/);
308+
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/);
307309
if(m3[2]){
308310
stop = parseFloat(m3[2]);
309-
if(m3[3]){ // percent
311+
if(m3[3] === '%'){
310312
stop /= 100;
313+
} else { // px - stupid opera
314+
stop /= bounds.width;
311315
}
312316
} else {
313317
stop = i * step;

0 commit comments

Comments
 (0)