- if (typeof gradient == "string") {
- gradient = gradient.split(/\s*\-\s*/);
- var angle = gradient.shift();
- if (angle.toLowerCase() == "v") {
- angle = 90;
- } else if (angle.toLowerCase() == "h") {
- angle = 0;
- } else {
- angle = parseFloat(angle);
- }
- angle = -angle;
- var grobj = {angle: angle, type: "linear", dots: [], vector: [0, 0, Math.cos(angle * Math.PI / 180).toFixed(3), Math.sin(angle * Math.PI / 180).toFixed(3)]};
- var max = 1 / (Math.max(Math.abs(grobj.vector[2]), Math.abs(grobj.vector[3])) || 1);
- grobj.vector[2] *= max;
- grobj.vector[3] *= max;
- if (grobj.vector[2] < 0) {
- grobj.vector[0] = -grobj.vector[2];
- grobj.vector[2] = 0;
- }
- if (grobj.vector[3] < 0) {
- grobj.vector[1] = -grobj.vector[3];
- grobj.vector[3] = 0;
- }
- grobj.vector[0] = grobj.vector[0].toFixed(3);
- grobj.vector[1] = grobj.vector[1].toFixed(3);
- grobj.vector[2] = grobj.vector[2].toFixed(3);
- grobj.vector[3] = grobj.vector[3].toFixed(3);
- for (var i = 0, ii = gradient.length; i < ii; i++) {
- var dot = {};
- var par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
- dot.color = R.getRGB(par[1]).hex;
- par[2] && (dot.offset = par[2] + "%");
- grobj.dots.push(dot);
- }
- for (var i = 1, ii = grobj.dots.length - 1; i < ii; i++) {
- if (!grobj.dots[i].offset) {
- var start = parseFloat(grobj.dots[i - 1].offset || 0),
- end = false;
- for (var j = i + 1; j < ii; j++) {
- if (grobj.dots[j].offset) {
- end = grobj.dots[j].offset;
- break;
+ if (typeof gradient == "string") {
+ gradient = gradient.split(/\s*\-\s*/);
+ var angle = gradient.shift();
+ if (angle.toLowerCase() == "v") {
+ angle = 90;
+ } else if (angle.toLowerCase() == "h") {
+ angle = 0;
+ } else {
+ angle = parseFloat(angle);
+ }
+ angle = -angle;
+ var grobj = {angle: angle, type: "linear", dots: [], vector: [0, 0, Math.cos(angle * Math.PI / 180).toFixed(3), Math.sin(angle * Math.PI / 180).toFixed(3)]};
+ var max = 1 / (Math.max(Math.abs(grobj.vector[2]), Math.abs(grobj.vector[3])) || 1);
+ grobj.vector[2] *= max;
+ grobj.vector[3] *= max;
+ if (grobj.vector[2] < 0) {
+ grobj.vector[0] = -grobj.vector[2];
+ grobj.vector[2] = 0;
+ }
+ if (grobj.vector[3] < 0) {
+ grobj.vector[1] = -grobj.vector[3];
+ grobj.vector[3] = 0;
+ }
+ grobj.vector[0] = grobj.vector[0].toFixed(3);
+ grobj.vector[1] = grobj.vector[1].toFixed(3);
+ grobj.vector[2] = grobj.vector[2].toFixed(3);
+ grobj.vector[3] = grobj.vector[3].toFixed(3);
+ for (var i = 0, ii = gradient.length; i < ii; i++) {
+ var dot = {};
+ var par = gradient[i].match(/^([^:]*):?([\d\.]*)/);
+ dot.color = R.getRGB(par[1]).hex;
+ par[2] && (dot.offset = par[2] + "%");
+ grobj.dots.push(dot);
+ }
+ for (var i = 1, ii = grobj.dots.length - 1; i < ii; i++) {
+ if (!grobj.dots[i].offset) {
+ var start = parseFloat(grobj.dots[i - 1].offset || 0),
+ end = false;
+ for (var j = i + 1; j < ii; j++) {
+ if (grobj.dots[j].offset) {
+ end = grobj.dots[j].offset;
+ break;
+ }
+ }
+ if (!end) {
+ end = 100;
+ j = ii;
+ }
+ end = parseFloat(end);
+ var d = (end - start) / (j - i + 1);
+ for (; i < j; i++) {
+ start += d;
+ grobj.dots[i].offset = start + "%";