/**
* @author Inateno / http://inateno.com / http://dreamirl.com
*/
/**
* @constructor CircleRenderer
* @augments Renderer
* @class draw a a colored circle<br>
* checkout Renderer for standard parameters
* @example var cropCircle = new DE.GameObject( {
* x: 500, y: 500,
* renderer: new DE.CircleRenderer( {
* "fillColor": "red", "strokeColor: "black", "method": "strokeAndFill"
* }, 100, 0, Math.PI * 2, true )
* } );
*/
define( [ 'DE.Renderer', 'DE.CircleRenderer.render', 'DE.CONFIG', 'DE.CanvasBuffer' ],
function( Renderer, CircleRender, CONFIG, CanvasBuffer )
{
function CircleRenderer( param, radius, angleStart, angleEnd, clockRotation )
{
Renderer.call( this, param );
this.radius = radius || 1;
this.angleStart= angleStart || 0;
this.angleEnd = angleEnd || Math.PI*2;
this.clockRotation = clockRotation || false;
this.buffer = null;
this.localPosition.x -= this.radius;
this.localPosition.y -= this.radius;
this.initCircle = function()
{
this.buffer = new CanvasBuffer( this.radius * 2, this.radius * 2 );
var ctx = this.buffer.ctx;
ctx.fillStyle = this.fillColor;
ctx.strokeStyle = this.strokeColor;
ctx.globalAlpha = this.alpha;
ctx.beginPath();
ctx.arc( this.radius, this.radius,
this.radius, this.angleStart, this.angleEnd, this.clockRotation );
switch ( this.method )
{
case "fill":
ctx.fill();
break;
case "fillAndStroke":
ctx.fill();
ctx.stroke();
break;
case "stroke":
ctx.stroke();
break;
default:
ctx.stroke();
}
ctx.closePath();
}
this.initCircle();
}
CircleRenderer.prototype = new Renderer();
CircleRenderer.prototype.constructor = CircleRenderer;
CircleRenderer.prototype.supr = Renderer.prototype;
CircleRenderer.prototype.DEName = "CircleRenderer";
CircleRenderer.prototype.render = CircleRender;
CONFIG.debug.log( "CircleRenderer loaded", 3 );
return CircleRenderer;
} );