Path Contains Testing

by Nick Hulea

HTML

<script src="http://cdn.eyahuska.com/paper.js"></script>
<canvas resize="true" id="canvas-1" style="width:100%;"></canvas>
<script type="text/paperscript" canvas="canvas-1">
    var g, c, r, i, v;
    v = 0;
    v = isNaN(v) ? 0 : v;
    v++;
    var rArray = [],
        topGroup = new Group(),
        mousePath = null;

    var rastera = new Raster({
        source: 'http://cdn.eyahuska.com/one.jpg',
        // position: view.center,
        size: view.bounds
    });
    
    rastera.on('load', function() {
        loaded = true;
        onResize();
    });

    var rasterb = new Raster({
        source: 'http://cdn.eyahuska.com/two.jpg',
        position: view.center,
        size: view.bounds
    });
    
    rasterb.on('load', function() {
        loaded = true;
        onResize();    
        topGroup.addChild(rasterb);
        topGroup.insertChild(0, new Path());
        topGroup.clipped = true;
    });

    var brush = new Path.Circle({
        radius: 50,
        strokeColor: 'red'
    });
    
    tool.fixedDistance = 20;

    function onMouseMove(event) {
        brush.position = event.point;
    }

    function onMouseDown(event) {
        brush.position = event.point;
        mousePath = topGroup.children[0];
        addBrushStroke();    
    }
    
    function onMouseDrag(event) {
        if(!mousePath)
            return;
        brush.position = event.point;
        addBrushStroke();
    }
    
    function onMouseUp(event) {
        mousePath = null;
        console.log(project.layers)
    }

    function onResize(event) {
        rastera.fitBounds(view.bounds, true);
        rasterb.fitBounds(view.bounds, true);
        rasterb. bringToFront();
        topGroup.bringToFront();
        if (rArray.length) {
            rArray.forEach(function(el) {
                el.fitBounds(view.bounds, true);
            });
        }
    }
    
    function addBrushStroke(){
        // We dont need to clone brush, since boolean ops always return a new...