cytoscape
Version:
Graph theory (a.k.a. network) library for analysis and visualisation
63 lines (49 loc) • 1.61 kB
JavaScript
import * as math from '../../../../math';
var BRp = {};
function pushBezierPts( r, edge, pts ){
var qbezierAt = function( p1, p2, p3, t ){ return math.qbezierAt( p1, p2, p3, t ); };
var _p = edge._private;
var bpts = _p.rstyle.bezierPts;
for( var i = 0; i < r.bezierProjPcts.length; i++ ){
var p = r.bezierProjPcts[i];
bpts.push( {
x: qbezierAt( pts[0], pts[2], pts[4], p ),
y: qbezierAt( pts[1], pts[3], pts[5], p )
} );
}
}
BRp.storeEdgeProjections = function( edge ){
var _p = edge._private;
var rs = _p.rscratch;
var et = rs.edgeType;
// clear the cached points state
_p.rstyle.bezierPts = null;
_p.rstyle.linePts = null;
_p.rstyle.haystackPts = null;
if( et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound' ){
_p.rstyle.bezierPts = [];
for( var i = 0; i + 5 < rs.allpts.length; i += 4 ){
pushBezierPts( this, edge, rs.allpts.slice( i, i + 6 ) );
}
} else if( et === 'segments' ){
var lpts = _p.rstyle.linePts = [];
for( var i = 0; i + 1 < rs.allpts.length; i += 2 ){
lpts.push( {
x: rs.allpts[ i ],
y: rs.allpts[ i + 1]
} );
}
} else if( et === 'haystack' ){
var hpts = rs.haystackPts;
_p.rstyle.haystackPts = [
{ x: hpts[0], y: hpts[1] },
{ x: hpts[2], y: hpts[3] }
];
}
_p.rstyle.arrowWidth = this.getArrowWidth( edge.pstyle('width').pfValue, edge.pstyle( 'arrow-scale' ).value )
* this.arrowShapeWidth;
};
BRp.recalculateEdgeProjections = function( edges ){
this.findEdgeControlPoints( edges );
};
export default BRp;