mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
Speed up CanvasProvider.
This commit is contained in:
parent
1a6c5c8c6f
commit
9e6fd5a7e7
1 changed files with 24 additions and 9 deletions
|
@ -1,17 +1,32 @@
|
|||
// TODO: it might be better to make a ContextProvider class, since you
|
||||
// can always find the canvas through context.canvas. This saves code and
|
||||
// speed by not having to do canvas.getContext('2d')
|
||||
// TODO: Run through the canvas array to find a canvas with the requested
|
||||
// width / height, so we don't need to resize it?
|
||||
CanvasProvider = {
|
||||
canvases: [],
|
||||
getCanvas: function(size) {
|
||||
var canvas = this.canvases.length
|
||||
? this.canvases.pop()
|
||||
: document.createElement('canvas');
|
||||
canvas.width = size.width;
|
||||
canvas.height = size.height;
|
||||
return canvas;
|
||||
if(this.canvases.length) {
|
||||
var canvas = this.canvases.pop();
|
||||
// If they are not the same size, we don't need to clear them
|
||||
// using clearRect and visa versa.
|
||||
if((canvas.width != size.width) || (canvas.height != size.height)) {
|
||||
canvas.width = size.width;
|
||||
canvas.height = size.height;
|
||||
} else {
|
||||
var context = canvas.getContext('2d');
|
||||
context.clearRect(0, 0, size.width + 1, size.height + 1);
|
||||
}
|
||||
return canvas;
|
||||
} else {
|
||||
var canvas = document.createElement('canvas');
|
||||
canvas.width = size.width;
|
||||
canvas.height = size.height;
|
||||
return canvas;
|
||||
}
|
||||
},
|
||||
|
||||
returnCanvas: function(canvas) {
|
||||
// reset canvas:
|
||||
canvas.width = canvas.width;
|
||||
this.canvases.push(canvas);
|
||||
}
|
||||
};
|
||||
};
|
Loading…
Reference in a new issue