Skip to content
Snippets Groups Projects
Select Git revision
  • 81ac0962bff0bd21c571c8a43f99b1793456a94c
  • master default protected
  • leo
  • dex
  • pendulum
  • apfelstruder
  • littlerascal
7 results

dtold.js

Blame
  • 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
    }