From 37acc8a6028511a9b4b2a74c879243bbabeaefb9 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Wed, 12 Aug 2015 14:18:50 +0200 Subject: [PATCH 1/2] Set offset to 0 if attribute not present --- src/gradient.class.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gradient.class.js b/src/gradient.class.js index d601fe02..1f7c8a8a 100644 --- a/src/gradient.class.js +++ b/src/gradient.class.js @@ -3,7 +3,7 @@ /* _FROM_SVG_START_ */ function getColorStop(el) { var style = el.getAttribute('style'), - offset = el.getAttribute('offset'), + offset = el.getAttribute('offset') || 0, color, colorAlpha, opacity; // convert percents to absolute values From c3b1af63e0fb67109ed14dc69efc35c8361f1661 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Wed, 12 Aug 2015 14:23:42 +0200 Subject: [PATCH 2/2] add failing test for missing stop attribute --- test/unit/gradient.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/unit/gradient.js b/test/unit/gradient.js index bbf525d7..cdf4cf9c 100644 --- a/test/unit/gradient.js +++ b/test/unit/gradient.js @@ -177,6 +177,31 @@ equal(gradient.colorStops[0].opacity, 0); }); + test('fromElement without stop', function() { + ok(typeof fabric.Gradient.fromElement == 'function'); + + var element = fabric.document.createElement('linearGradient'); + var stop1 = fabric.document.createElement('stop'); + var stop2 = fabric.document.createElement('stop'); + + stop1.setAttribute('stop-color', 'white'); + + stop2.setAttribute('offset', '100%'); + stop2.setAttribute('stop-color', 'black'); + stop2.setAttribute('stop-opacity', '0'); + + element.appendChild(stop1); + element.appendChild(stop2); + + var object = new fabric.Object({ width: 100, height: 100 }); + var gradient = fabric.Gradient.fromElement(element, object); + + ok(gradient instanceof fabric.Gradient); + + equal(gradient.colorStops[0].offset, 1); + equal(gradient.colorStops[1].offset, 0); + }); + test('fromElement radialGradient', function() { ok(typeof fabric.Gradient.fromElement == 'function');