From 239e1c928d10fc010df023c6f2a4843d48d0a4c2 Mon Sep 17 00:00:00 2001 From: Horcrux Date: Fri, 10 Jun 2016 23:33:18 +0800 Subject: [PATCH] fix rgba fill and stroke bug --- lib/extract/extractFill.js | 9 +++------ lib/extract/patterns.js | 4 ---- lib/rgba.js | 9 +++++++-- lib/stopsOpacity.js | 5 ++++- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/lib/extract/extractFill.js b/lib/extract/extractFill.js index ac39c1f0..1e3ecac2 100644 --- a/lib/extract/extractFill.js +++ b/lib/extract/extractFill.js @@ -9,17 +9,14 @@ const fillRules = { function fillFilter(props) { let {fill} = props; + let fillOpacity = +props.fillOpacity; if (fill === 'none') { return null; } else if (fill) { - return patterns(fill, +props.fillOpacity, props.svgId); + return patterns(fill, fillOpacity, props.svgId); } else if (props.fill === undefined) { - let fillOpacity = +props.fillOpacity; - if (isNaN(fillOpacity)) { - fillOpacity = 1; - } - return rgba('#000', fillOpacity).rgbaString(); + return rgba('#000', isNaN(fillOpacity) ? 1 : fillOpacity).rgbaString(); } else { return null; } diff --git a/lib/extract/patterns.js b/lib/extract/patterns.js index 80dec074..ca6b1542 100644 --- a/lib/extract/patterns.js +++ b/lib/extract/patterns.js @@ -28,10 +28,6 @@ export default function(patternSting, opacity, svgId) { return patternSting; } - if (isNaN(opacity)) { - opacity = 1; - } - // 尝试匹配 "url(#pattern)" let matched = patternSting.match(patternReg); diff --git a/lib/rgba.js b/lib/rgba.js index e4a69ffd..cf33ac60 100644 --- a/lib/rgba.js +++ b/lib/rgba.js @@ -1,9 +1,14 @@ import Color from 'color'; let noneFill = ['transparent', 'none']; -export default function (color, opacity = 1) { +export default function (color, opacity) { if (noneFill.indexOf(color) !== -1 || !color) { return Color('#000'); } else { - return Color(color).alpha(+opacity); + let c = Color(color); + + if (!isNaN(opacity)) { + c = c.alpha(opacity); + } + return c; } } diff --git a/lib/stopsOpacity.js b/lib/stopsOpacity.js index 11d9a862..c2c9851a 100644 --- a/lib/stopsOpacity.js +++ b/lib/stopsOpacity.js @@ -1,5 +1,8 @@ -import _ from 'lodash'; export default function (stops, opacity) { + if (isNaN(opacity)) { + opacity = 1; + } + return _.reduce(stops, (ret, color, key) => { ret[key] = color.alpha(color.alpha() * opacity).rgbaString(); return ret;