setPattern examples

Used in documentation (jsdoc tag)

by joepenzo

HTML

<script src="https://rawgithub.com/kangax/fabric.js/master/dist/fabric.js"></script>
<canvas id="c" width="400" height="400"></canvas>
<button id="toggle">Toggle repeat</button>

CSS

canvas {
    border: 1px solid #999;
}
button {
    margin-top: 20px;
}

JavaScript

// Do some initializing stuff
fabric.Object.prototype.set({
    transparentCorners: false,
    cornerColor: 'rgba(102,153,255,0.5)',
    cornerSize: 12,
    padding: 5
});

// initialize fabric canvas and assign to global windows object for debug
var canvas = window._canvas = new fabric.Canvas('c');

var rect = new fabric.Rect({
    width: 150,
    height: 150,
    fill: '#29477F'
});
canvas.add(rect);
rect.center().setCoords();

fabric.util.loadImage('https://images.unsplash.com/photo-1497366811353-6870744d04b2?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80', function (img) {
    rect.setPatternFill({
        source: img,
        repeat: 'repeat'
    });
    canvas.renderAll();
});

fabric.util.addListener(document.getElementById('toggle'), 'click', function () {
    var obj = canvas.item(0);

    if (!obj.fill instanceof fabric.Pattern) return;
    
    obj.fill.repeat = obj.fill.repeat === 'repeat' 
        ? 'repeat-x'
        : obj.fill.repeat === 'repeat-x'
            ? 'repeat-y'
            : obj.fill.repeat === 'repeat-y'
                ? 'no-repeat'
                : 'repeat';

    canvas.renderAll();
});