sigma
Version:
A JavaScript library dedicated to graph drawing.
33 lines (32 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function drawEdgeLabel(context, edgeData, sourceData, targetData, settings) {
var size = settings.edgeLabelSize, font = settings.edgeLabelFont, weight = settings.edgeLabelWeight, label = edgeData.label;
context.fillStyle = edgeData.color;
context.font = weight + " " + size + "px " + font;
var textWidth = context.measureText(label).width;
var cx = (sourceData.x + targetData.x) / 2;
var cy = (sourceData.y + targetData.y) / 2;
var dx = targetData.x - sourceData.x;
var dy = targetData.y - sourceData.y;
var d = Math.sqrt(dx * dx + dy * dy);
var angle;
if (dx > 0) {
if (dy > 0)
angle = Math.acos(dx / d);
else
angle = Math.asin(dy / d);
}
else {
if (dy > 0)
angle = Math.acos(dx / d) + Math.PI;
else
angle = Math.asin(dx / d) + Math.PI / 2;
}
context.save();
context.translate(cx, cy);
context.rotate(angle);
context.fillText(label, -textWidth / 2, edgeData.size / 2 + size);
context.restore();
}
exports.default = drawEdgeLabel;