UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

76 lines (75 loc) 2.81 kB
import { DEFAULT_PATH_STYLE } from "../graphic/Path.mjs"; import ZRImage from "../graphic/Image.mjs"; import { getLineDash } from "../canvas/dashStyle.mjs"; import { map } from "../core/util.mjs"; import { normalizeColor } from "./helper.mjs"; var NONE = "none"; var mathRound = Math.round; function pathHasFill(style) { var fill = style.fill; return fill != null && fill !== NONE; } function pathHasStroke(style) { var stroke = style.stroke; return stroke != null && stroke !== NONE; } var strokeProps = ["lineCap", "miterLimit", "lineJoin"]; var svgStrokeProps = map(strokeProps, function(prop) { return "stroke-" + prop.toLowerCase(); }); function mapStyleToAttrs(updateAttr, style, el, forceUpdate) { var opacity = style.opacity == null ? 1 : style.opacity; if (el instanceof ZRImage) { updateAttr("opacity", opacity); return; } if (pathHasFill(style)) { var fill = normalizeColor(style.fill); updateAttr("fill", fill.color); var fillOpacity = style.fillOpacity != null ? style.fillOpacity * fill.opacity * opacity : fill.opacity * opacity; if (forceUpdate || fillOpacity < 1) { updateAttr("fill-opacity", fillOpacity); } } else { updateAttr("fill", NONE); } if (pathHasStroke(style)) { var stroke = normalizeColor(style.stroke); updateAttr("stroke", stroke.color); var strokeScale = style.strokeNoScale ? el.getLineScale() : 1; var strokeWidth = strokeScale ? (style.lineWidth || 0) / strokeScale : 0; var strokeOpacity = style.strokeOpacity != null ? style.strokeOpacity * stroke.opacity * opacity : stroke.opacity * opacity; var strokeFirst = style.strokeFirst; if (forceUpdate || strokeWidth !== 1) { updateAttr("stroke-width", strokeWidth); } if (forceUpdate || strokeFirst) { updateAttr("paint-order", strokeFirst ? "stroke" : "fill"); } if (forceUpdate || strokeOpacity < 1) { updateAttr("stroke-opacity", strokeOpacity); } if (style.lineDash) { var _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1]; if (lineDash) { lineDashOffset = mathRound(lineDashOffset || 0); updateAttr("stroke-dasharray", lineDash.join(",")); if (lineDashOffset || forceUpdate) { updateAttr("stroke-dashoffset", lineDashOffset); } } } else if (forceUpdate) { updateAttr("stroke-dasharray", NONE); } for (var i = 0; i < strokeProps.length; i++) { var propName = strokeProps[i]; if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE[propName]) { var val = style[propName] || DEFAULT_PATH_STYLE[propName]; val && updateAttr(svgStrokeProps[i], val); } } } else if (forceUpdate) { updateAttr("stroke", NONE); } } export { mapStyleToAttrs as default };