Blame view

node_modules/zrender/lib/graphic/helper/poly.js 1.03 KB
aaac7fed   liuqimichale   add
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
33
34
35
36
37
  var smoothSpline = require("./smoothSpline");
  
  var smoothBezier = require("./smoothBezier");
  
  function buildPath(ctx, shape, closePath) {
    var points = shape.points;
    var smooth = shape.smooth;
  
    if (points && points.length >= 2) {
      if (smooth && smooth !== 'spline') {
        var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);
        ctx.moveTo(points[0][0], points[0][1]);
        var len = points.length;
  
        for (var i = 0; i < (closePath ? len : len - 1); i++) {
          var cp1 = controlPoints[i * 2];
          var cp2 = controlPoints[i * 2 + 1];
          var p = points[(i + 1) % len];
          ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);
        }
      } else {
        if (smooth === 'spline') {
          points = smoothSpline(points, closePath);
        }
  
        ctx.moveTo(points[0][0], points[0][1]);
  
        for (var i = 1, l = points.length; i < l; i++) {
          ctx.lineTo(points[i][0], points[i][1]);
        }
      }
  
      closePath && ctx.closePath();
    }
  }
  
  exports.buildPath = buildPath;