1234567891011121314151617181920212223242526272829303132 |
- import { isArray, isNumber, map } from '../core/util';
- import Path from '../graphic/Path';
- import TSpan from '../graphic/TSpan';
- export function normalizeLineDash(lineType: any, lineWidth?: number): number[] | false {
- if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {
- return null;
- }
- return lineType === 'dashed'
- ? [4 * lineWidth, 2 * lineWidth]
- : lineType === 'dotted'
- ? [lineWidth]
- : isNumber(lineType)
- ? [lineType] : isArray(lineType) ? lineType : null;
- }
- export function getLineDash(el: Path | TSpan): [number[] | false, number] {
- const style = el.style;
- let lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);
- let lineDashOffset = style.lineDashOffset;
- if (lineDash) {
- const lineScale = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;
- if (lineScale && lineScale !== 1) {
- lineDash = map(lineDash, function (rawVal) {
- return rawVal / lineScale;
- });
- lineDashOffset /= lineScale;
- }
- }
- return [lineDash, lineDashOffset];
- }
|