Blame view

node_modules/zrender/src/canvas/dashStyle.ts 1.15 KB
bd028579   易尊强   2/28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  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];
  }