2011-03-06 19:50:44 -05:00
|
|
|
/*
|
|
|
|
* Paper.js
|
|
|
|
*
|
|
|
|
* This file is part of Paper.js, a JavaScript Vector Graphics Library,
|
|
|
|
* based on Scriptographer.org and designed to be largely API compatible.
|
2011-03-07 20:41:50 -05:00
|
|
|
* http://paperjs.org/
|
2011-03-06 19:50:44 -05:00
|
|
|
* http://scriptographer.org/
|
|
|
|
*
|
2011-03-07 20:41:50 -05:00
|
|
|
* Distributed under the MIT license. See LICENSE file for details.
|
|
|
|
*
|
2011-03-06 19:50:44 -05:00
|
|
|
* Copyright (c) 2011, Juerg Lehni & Jonathan Puckey
|
|
|
|
* http://lehni.org/ & http://jonathanpuckey.com/
|
|
|
|
*
|
2011-03-07 20:41:50 -05:00
|
|
|
* All rights reserved.
|
2011-03-06 19:50:44 -05:00
|
|
|
*/
|
|
|
|
|
2011-02-26 09:29:51 -05:00
|
|
|
// 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?
|
2011-03-03 11:32:39 -05:00
|
|
|
var CanvasProvider = {
|
2011-02-20 21:17:09 -05:00
|
|
|
canvases: [],
|
2011-02-23 19:36:38 -05:00
|
|
|
getCanvas: function(size) {
|
2011-02-28 12:30:08 -05:00
|
|
|
if (this.canvases.length) {
|
2011-02-26 09:29:51 -05:00
|
|
|
var canvas = this.canvases.pop();
|
|
|
|
// If they are not the same size, we don't need to clear them
|
|
|
|
// using clearRect and visa versa.
|
2011-03-02 11:07:44 -05:00
|
|
|
if ((canvas.width != size.width)
|
|
|
|
|| (canvas.height != size.height)) {
|
2011-02-26 09:29:51 -05:00
|
|
|
canvas.width = size.width;
|
|
|
|
canvas.height = size.height;
|
|
|
|
} else {
|
|
|
|
var context = canvas.getContext('2d');
|
2011-03-02 11:07:44 -05:00
|
|
|
// +1 is needed on some browsers to really clear the borders
|
2011-02-26 09:29:51 -05:00
|
|
|
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;
|
|
|
|
}
|
2011-02-20 21:17:09 -05:00
|
|
|
},
|
|
|
|
|
|
|
|
returnCanvas: function(canvas) {
|
|
|
|
this.canvases.push(canvas);
|
|
|
|
}
|
2011-03-03 11:32:39 -05:00
|
|
|
};
|