canvas-loop
Version:
canvas loop/scale utility
55 lines (47 loc) • 999 B
JavaScript
var fitter = require('canvas-fit')
var loop = require('raf-loop')
module.exports = function (canvas, opt) {
if (!canvas) {
throw new TypeError('must specify a canvas element')
}
opt = opt || {}
var fit = fitter(canvas, opt.parent, opt.scale)
var app = loop()
var shape = [0, 0]
resize()
window.addEventListener('resize', function () {
resize()
app.emit('resize')
}, false)
Object.defineProperties(app, {
scale: {
get: function () {
return fit.scale
},
set: function (s) {
fit.scale = s
}
},
shape: {
get: function () {
return shape
}
},
parent: {
get: function () {
return fit.parent
},
set: function (p) {
fit.parent = p
}
}
})
return app
function resize () {
fit()
var deviceWidth = canvas.width
var deviceHeight = canvas.height
shape[0] = deviceWidth / fit.scale
shape[1] = deviceHeight / fit.scale
}
}