1 (function() {
  2   
  3   var fabric = this.fabric || (this.fabric = { });
  4   
  5   if (fabric.Triangle) {
  6     fabric.warn('fabric.Triangle is already defined');
  7     return;
  8   }
  9   
 10   /** 
 11    * @class Triangle
 12    * @extends fabric.Object
 13    */
 14   fabric.Triangle = fabric.util.createClass(fabric.Object, /** @scope fabric.Triangle.prototype */ {
 15     
 16     /**
 17      * @property
 18      * @type String
 19      */
 20     type: 'triangle',
 21     
 22     /**
 23      * Constructor
 24      * @method initialize
 25      * @param options {Object} options object
 26      * @return {Object} thisArg
 27      */
 28     initialize: function(options) {
 29       options = options || { };
 30       
 31       this.callSuper('initialize', options);
 32       
 33       this.set('width', options.width || 100)
 34           .set('height', options.height || 100);
 35     },
 36     
 37     /**
 38      * @private
 39      * @method _render
 40      * @param ctx {CanvasRenderingContext2D} Context to render on
 41      */
 42     _render: function(ctx) {      
 43       var widthBy2 = this.width / 2,
 44           heightBy2 = this.height / 2;
 45       
 46       ctx.beginPath();
 47       ctx.moveTo(-widthBy2, heightBy2);
 48       ctx.lineTo(0, -heightBy2);
 49       ctx.lineTo(widthBy2, heightBy2);
 50       ctx.closePath();
 51       
 52       if (this.fill) {
 53         ctx.fill();
 54       }
 55       if (this.stroke) {
 56         ctx.stroke();
 57       }
 58     },
 59     
 60     /**
 61      * Returns complexity of an instance
 62      * @method complexity
 63      * @return {Number} complexity of this instance
 64      */
 65     complexity: function() {
 66       return 1;
 67     }
 68   });
 69   
 70   /**
 71    * Returns fabric.Triangle instance from an object representation
 72    * @static
 73    * @method Canvas.Trangle.fromObject
 74    * @param object {Object} object to create an instance from
 75    * @return {Object} instance of Canvas.Triangle
 76    */
 77   fabric.Triangle.fromObject = function(object) {
 78     return new fabric.Triangle(object);
 79   };
 80 })();