var CRp = {}; var impl; function polygon( context, points ){ for( var i = 0; i < points.length; i++ ){ var pt = points[ i ]; context.lineTo( pt.x, pt.y ); } } function triangleBackcurve( context, points, controlPoint ){ var firstPt; for( var i = 0; i < points.length; i++ ){ var pt = points[ i ]; if( i === 0 ){ firstPt = pt; } context.lineTo( pt.x, pt.y ); } context.quadraticCurveTo( controlPoint.x, controlPoint.y, firstPt.x, firstPt.y ); } function triangleTee( context, trianglePoints, teePoints ){ if( context.beginPath ){ context.beginPath(); } var triPts = trianglePoints; for( var i = 0; i < triPts.length; i++ ){ var pt = triPts[ i ]; context.lineTo( pt.x, pt.y ); } var teePts = teePoints; var firstTeePt = teePoints[0]; context.moveTo( firstTeePt.x, firstTeePt.y ); for( var i = 1; i < teePts.length; i++ ){ var pt = teePts[ i ]; context.lineTo( pt.x, pt.y ); } if( context.closePath ){ context.closePath(); } } function circleTriangle(context, trianglePoints, rx, ry, r) { if (context.beginPath) { context.beginPath(); } context.arc(rx, ry, r, 0, Math.PI * 2, false); var triPts = trianglePoints; var firstTrPt = triPts[0]; context.moveTo(firstTrPt.x, firstTrPt.y); for (var i = 0; i < triPts.length; i++) { var pt = triPts[i]; context.lineTo(pt.x, pt.y); } if (context.closePath) { context.closePath(); } } function circle( context, rx, ry, r ){ context.arc( rx, ry, r, 0, Math.PI * 2, false ); } CRp.arrowShapeImpl = function( name ){ return ( impl || (impl = { 'polygon': polygon, 'triangle-backcurve': triangleBackcurve, 'triangle-tee': triangleTee, 'circle-triangle' : circleTriangle, 'triangle-cross': triangleTee, 'circle': circle }) )[ name ]; }; export default CRp;