File size: 1,853 Bytes
bc20498 |
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
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; |