123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * @fileOverview
- *
- * 提供折线相连的方法
- *
- * @author: techird
- * @copyright: Baidu FEX, 2014
- */
- define(function(require, exports, module) {
- var kity = require('../core/kity');
- var connect = require('../core/connect');
- connect.register('poly', function(node, parent, connection, width) {
- // 连线起点和终点
- var po = parent.getLayoutVertexOut(),
- pi = node.getLayoutVertexIn();
- // 连线矢量和方向
- var v = parent.getLayoutVectorOut().normalize();
- var r = Math.round;
- var abs = Math.abs;
- var pathData = [];
- pathData.push('M', r(po.x), r(po.y));
- switch (true) {
- case abs(v.x) > abs(v.y) && v.x < 0:
- // left
- pathData.push('h', -parent.getStyle('margin-left'));
- pathData.push('v', pi.y - po.y);
- pathData.push('H', pi.x);
- break;
- case abs(v.x) > abs(v.y) && v.x >= 0:
- // right
- pathData.push('h', parent.getStyle('margin-right'));
- pathData.push('v', pi.y - po.y);
- pathData.push('H', pi.x);
- break;
- case abs(v.x) <= abs(v.y) && v.y < 0:
- // top
- pathData.push('v', -parent.getStyle('margin-top'));
- pathData.push('h', pi.x - po.x);
- pathData.push('V', pi.y);
- break;
- case abs(v.x) <= abs(v.y) && v.y >= 0:
- // bottom
- pathData.push('v', parent.getStyle('margin-bottom'));
- pathData.push('h', pi.x - po.x);
- pathData.push('V', pi.y);
- break;
- }
- connection.setMarker(null);
- connection.setPathData(pathData);
- });
- });
|