Parse

File Parse pointlistdraw.js

This tree is parsed live from the source file.

Classes

  • {{ item.name }}

    • {{ key }}

Not Classes

{{ getTree() }}

Comments

{{ getTreeComments() }}

Source

            
class PointListDraw {

    constructor(list) {
        this.list = list;
    }

    horizonLine(ctx) {
        // Ensure the path restarts, ensuring the colors don't _bleed_ (from
        // last to first).
        let a = this.list[0]
        let b = this.list.last()
        ctx.beginPath();
        ctx.moveTo(a.x, a.y)
        ctx.lineTo(b.x, b.y)
    }

    stroke(ctx) {
        // ctx.stroke()
        let args = arguments;
        this.list.forEach((p)=> p.draw.stroke.apply(p.draw, args))
    }

    circle(ctx, radius=undefined, color, width) {
        let args = arguments;
        this.list.forEach((p)=> p.draw.circle.apply(p.draw, args))
        // return this.stroke.apply(this, arguments)
    }

    /* Draw this list as a pointline, provide an init position for an offset. */
    pointLine(ctx, position, eachFunc) {
        // To 'close' the old drawing.
        let pointsArray = this.list
        let a = pointsArray[0]
        if(!a) { return }
        ctx.beginPath();
        ctx.moveTo(a.x, a.y)

        let {x, y} = position? position: {x:0, y:0}

        for(let i=1; i < pointsArray.length; i++) {
            let segment = pointsArray[i]
            ctx.lineTo(segment.x + x, segment.y + y);
        }

        // ctx.strokeStyle = 'white'
    }

    /* Draw a startline lineTo through all points. */
    line(ctx) {
        return this.pointLine(ctx)
    }

    quadCurve(ctx, loop=false, position){

        let pointsArray = this.list;
        let prevPoint = pointsArray[0];
        position = position? position: prevPoint
        let numPoints = pointArray.length;
        let p0 = pointsArray[numPoints - 1] || position;
        let _p2 = prevPoint;
        let strength = .5
        if(p0 ==  undefined) {return}
        ctx.beginPath();
        let min1 = prevPoint
        if(loop) {
            // ctx.moveTo(200, 200);
            min1 = pointsArray.last()
        }

        ctx.moveTo( (p0.x + min1.x) * strength, (p0.y + min1.y) * strength );
        // ctx.moveTo( (p0.x + prevPoint.x) * strength, (p0.y + prevPoint.y) * strength );
        for(let i = 1; i < pointsArray.length; i++) {

            let currPoint = pointsArray[i];
            var xc = (prevPoint.x + currPoint.x) * strength;
            var yc = (prevPoint.y + currPoint.y) * strength;
            ctx.quadraticCurveTo(prevPoint.x, prevPoint.y, xc, yc);
            prevPoint = currPoint;
        }

        /* Draw to the last point. */
        var xc = (prevPoint.x + prevPoint.x) * strength;
        var yc = (prevPoint.y + prevPoint.y) * strength;

        if(loop) {
            xc = (prevPoint.x + _p2.x) * strength;
            yc = (prevPoint.y + _p2.y) * strength;
        }

        if(loop!=2){
            ctx.quadraticCurveTo(prevPoint.x, prevPoint.y, xc, yc);
        }
    }

}


Polypoint.head.install(PointListDraw)

copy