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(cfg)
{
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;