complete ClipPath refactor

This commit is contained in:
Horcrux
2016-07-20 14:44:19 +08:00
parent dd6cb80e84
commit 18e1b60823
30 changed files with 254 additions and 251 deletions

View File

@@ -1,21 +1,11 @@
import SerializablePath from 'react-native/Libraries/ART/ARTSerializablePath';
import clipReg from './patternReg';
let clipPatterns = {};
const clipRules = {
evenodd: 0,
nonzero: 1
};
function set(id, pattern) {
clipPatterns[id] = pattern;
}
function remove(id) {
delete clipPatterns[id];
}
export default function (props) {
let {clipPath, clipRule} = props;
let clippingProps = {};
@@ -26,22 +16,11 @@ export default function (props) {
let matched = clipPath.match(clipReg);
if (matched) {
let patternName = `${matched[1]}:${props.svgId}`;
let pattern = clipPatterns[patternName];
if (pattern) {
clippingProps.clipPathRef = pattern;
} else {
clippingProps = null;
// TODO: warn
}
clippingProps.clipPathRef = matched[1];
} else {
clippingProps.clipPath = new SerializablePath(clipPath).toJSON();
}
}
return clippingProps;
}
export {
set,
remove
};

View File

@@ -14,7 +14,7 @@ function fillFilter(props) {
if (fill === 'none') {
return null;
} else if (fill) {
return patterns(fill, fillOpacity, props.svgId);
return patterns(fill, fillOpacity);
} else if (props.fill === undefined) {
return rgba('#000', isNaN(fillOpacity) ? 1 : fillOpacity).rgbaString();
} else {

View File

@@ -39,7 +39,7 @@ function strokeFilter(props) {
// TODO: propTypes check
return {
stroke: patterns(stroke, +props.strokeOpacity, props.svgId),
stroke: patterns(stroke, +props.strokeOpacity),
strokeLinecap: caps[props.strokeLinecap] || 0,
strokeLinejoin: joins[props.strokeLinejoin] || 0,
strokeDasharray: strokeDasharray || null,