Version 3.18.1
Show:

File: graphics/js/SVGEllipse.js

            /**
             * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Ellipse.html">`Ellipse`</a> class.
             * `SVGEllipse` is not intended to be used directly. Instead, use the <a href="Ellipse.html">`Ellipse`</a> class.
             * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Ellipse.html">`Ellipse`</a>
             * class will point to the `SVGEllipse` class.
             *
             * @module graphics
             * @class SVGEllipse
             * @constructor
             */
            SVGEllipse = function()
            {
            	SVGEllipse.superclass.constructor.apply(this, arguments);
            };
            
            SVGEllipse.NAME = "ellipse";
            
            Y.extend(SVGEllipse, SVGShape, {
            	/**
            	 * Indicates the type of shape
            	 *
            	 * @property _type
            	 * @type String
                 * @private
            	 */
            	_type: "ellipse",
            
            	/**
            	 * Updates the shape.
            	 *
            	 * @method _draw
            	 * @private
            	 */
            	_draw: function()
            	{
            		var node = this.node,
            			w = this.get("width"),
            			h = this.get("height"),
            			x = this.get("x"),
            			y = this.get("y"),
            			xRadius = w * 0.5,
            			yRadius = h * 0.5,
            			cx = x + xRadius,
            			cy = y + yRadius;
            		node.setAttribute("rx", xRadius);
            		node.setAttribute("ry", yRadius);
            		node.setAttribute("cx", cx);
            		node.setAttribute("cy", cy);
            		this._fillChangeHandler();
            		this._strokeChangeHandler();
            		this._updateTransform();
            	}
            });
            
            SVGEllipse.ATTRS = Y.merge(SVGShape.ATTRS, {
            	/**
            	 * Horizontal radius for the ellipse.
            	 *
            	 * @config xRadius
            	 * @type Number
            	 */
            	xRadius: {
            		setter: function(val)
            		{
            			this.set("width", val * 2);
            		},
            
            		getter: function()
            		{
            			var val = this.get("width");
            			if(val)
            			{
            				val *= 0.5;
            			}
            			return val;
            		}
            	},
            
            	/**
            	 * Vertical radius for the ellipse.
            	 *
            	 * @config yRadius
            	 * @type Number
            	 * @readOnly
            	 */
            	yRadius: {
            		setter: function(val)
            		{
            			this.set("height", val * 2);
            		},
            
            		getter: function()
            		{
            			var val = this.get("height");
            			if(val)
            			{
            				val *= 0.5;
            			}
            			return val;
            		}
            	}
            });
            Y.SVGEllipse = SVGEllipse;