"use strict"; var Util = require('../../util/common'); var Shape = require('./shape'); var ShapeUtil = require('./util'); var Global = require('../../global'); // register line geom var Line = Shape.registerFactory('line', { defaultShapeType: 'line' }); function getStyle(cfg) { var style = { strokeStyle: cfg.color }; if (cfg.size >= 0) { style.lineWidth = cfg.size; } Util.mix(style, cfg.style); return Util.mix({}, Global.shape.line, style); } function drawLines(cfg, container, style, smooth) { var points = cfg.points; if (points.length && Util.isArray(points[0].y)) { var topPoints = []; var bottomPoints = []; for (var i = 0, len = points.length; i < len; i++) { var point = points[i]; var tmp = ShapeUtil.splitPoints(point); bottomPoints.push(tmp[0]); topPoints.push(tmp[1]); } if (cfg.isInCircle) { topPoints.push(topPoints[0]); bottomPoints.push(bottomPoints[0]); } if (cfg.isStack) { return container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: topPoints, smooth: smooth }, style) }); } var topShape = container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: topPoints, smooth: smooth }, style) }); var bottomShape = container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: bottomPoints, smooth: smooth }, style) }); return [topShape, bottomShape]; } if (cfg.isInCircle) { points.push(points[0]); } return container.addShape('Polyline', { className: 'line', attrs: Util.mix({ points: points, smooth: smooth }, style) }); } var SHAPES = ['line', 'smooth', 'dash']; Util.each(SHAPES, function (shapeType) { Shape.registerShape('line', shapeType, { draw: function draw(cfg, container) { var smooth = shapeType === 'smooth'; var style = getStyle(cfg); if (shapeType === 'dash') { style.lineDash = Global.lineDash; } return drawLines(cfg, container, style, smooth); } }); }); module.exports = Line;