Select Git revision
dtold.js 2.67 KiB
/* --------------------------- ---------------------------- */
/* ----------------------- DRAWING BEZIERS ----------------------- */
/* --------------------------- ---------------------------- */
var svgns = 'http://www.w3.org/2000/svg'
var svg = {}
function newBezier(x1, y1, x2, y2, highlight) {
var bz = {}
bz.elem = document.createElementNS(svgns, 'path')
if (highlight) {
bz.elem.style.stroke = '#fcd17b'
} else {
bz.elem.style.stroke = '#1a1a1a'
}
bz.elem.style.fill = 'none'
bz.elem.style.strokeWidth = '7px'
bz.x1 = x1
bz.y1 = y1
bz.x2 = x2
bz.y2 = y2
redrawBezier(bz)
svg.appendChild(bz.elem)
return bz
}
function redrawBezier(bz) {
var bl = Math.sqrt(Math.pow((bz.x1 - bz.x2), 2) + Math.pow((bz.y1 - bz.y2), 2)) * 0.6
var ps = 'M ' + bz.x1 + ' ' + bz.y1 + ' C ' + (bz.x1 + bl) + ' ' + bz.y1
var pe = ' ' + (bz.x2 - bl) + ' ' + bz.y2 + ' ' + bz.x2 + ' ' + bz.y2
bz.elem.setAttribute('d', ps + pe)
}
function modifyBezierHead(bz, x1, y1) {
bz.x1 = x1
bz.y1 = y1
redrawBezier(bz)
}
function modifyBezierTail(bz, x2, y2) {
bz.x2 = x2
bz.y2 = y2
redrawBezier(bz)
}
function getOutputArrow(div) {
var x = div.offsetParent.offsetLeft + div.offsetLeft + div.clientWidth
var y = div.offsetParent.offsetTop + div.offsetTop + div.clientHeight / 2
var pos = {
x: x,
y: y
}
return pos
}
function getInputArrow(div) {
var x = div.offsetParent.offsetLeft
var y = div.offsetParent.offsetTop + div.offsetTop + div.clientHeight / 2
var pos = {
x: x,
y: y
}
return pos
}
function newLine(x1, y1, x2, y2, stroke, dashed) {
var ln = {}
ln.elem = document.createElementNS(svgns, 'line')
ln.elem.style.stroke = '#1a1a1a'
if (dashed) {
ln.elem.setAttribute('stroke-dasharray', '21, 7, 7, 7')
}
ln.elem.style.fill = 'none'
if (stroke) {
ln.elem.style.strokeWidth = stroke + 'px'
} else {
ln.elem.style.strokeWidth = '6px'
}
ln.x1 = x1
ln.y1 = y1
ln.x2 = x2
ln.y2 = y2
redrawLine(ln)
svg.appendChild(ln.elem)
return ln
}
function redrawLine(ln) {
ln.elem.setAttribute('x1', ln.x1)
ln.elem.setAttribute('y1', ln.y1)
ln.elem.setAttribute('x2', ln.x2)
ln.elem.setAttribute('y2', ln.y2)
}
function getLeftWall(div) {
var x = div.offsetLeft + 25
var y = div.offsetTop + 25
var pt = {
x: x,
y: y
}
return pt
}
function getRightWall(div) {
var x = div.offsetLeft + div.clientWidth - 25
var y = div.offsetTop + div.clientHeight - 25
var pt = {
x: x,
y: y
}
return pt
}