SVGShape.js revision 828c58761d90445b8b9d20a82d85dc1479317f71
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Base class for creating shapes.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @class SVGShape
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncSVGShape = function(cfg)
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync{
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var host = this,
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync PluginHost = Y.Plugin && Y.Plugin.Host;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync if (host._initPlugins && PluginHost) {
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync PluginHost.call(host);
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync }
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync host.name = host.constructor.NAME;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync host._eventPrefix = host.constructor.EVENT_PREFIX || host.constructor.NAME;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync AttributeLite.call(host);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host.addAttrs(cfg);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host.init.apply(this, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if (host._initPlugins) {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync // Need to initPlugins manually, to handle constructor parsing, static Plug parsing
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host._initPlugins(cfg);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync host.initialized = true;
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync};
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsyncSVGShape.NAME = "svgShape";
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsyncSVGShape.prototype = {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync init: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.initializer.apply(this, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Initializes the shape
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _initialize
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync initializer: function(cfg)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var host = this;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host.createNode();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host._graphic = cfg.graphic;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host._updateHandler();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Add a class name to each node.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method addClass
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {String} className the class name to add to the node's class attribute
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync addClass: function(className)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.className.baseVal = Y_LANG.trim([node.className.baseVal, className].join(' '));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Removes a class name from each node.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method removeClass
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {String} className the class name to remove from the node's class attribute
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync removeClass: function(className)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync classString = node.className.baseVal;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync classString = classString.replace(new RegExp(className + ' '), className).replace(new RegExp(className), '');
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.className.baseVal = classString;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Gets the current position of the node in page coordinates.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method getXY
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return Array The XY position of the shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync getXY: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var graphic = this._graphic,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync parentXY = graphic.getXY(),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync x = this.get("x"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync y = this.get("y");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return [parentXY[0] + x, parentXY[1] + y];
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Set the position of the shape in page coordinates, regardless of how the node is positioned.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method setXY
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Array} Contains X & Y values for new position (coordinates are page-based)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync setXY: function(xy)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var graphic = this._graphic,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync parentXY = graphic.getXY();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.set("x", xy[0] - parentXY[0]);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.set("y", xy[1] - parentXY[1]);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Determines whether the node is an ancestor of another HTML element in the DOM hierarchy.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method contains
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {SVGShape | HTMLElement} needle The possible node or descendent
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return Boolean Whether or not this shape is the needle or its ancestor.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync contains: function(needle)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return needle === Y.one(this.node);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Compares nodes to determine if they match.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Node instances can be compared to each other and/or HTMLElements.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method compareTo
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {HTMLElement | Node} refNode The reference node to compare to the node.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return {Boolean} True if the nodes match, false if they do not.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync compareTo: function(refNode) {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return node === refNode;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Test if the supplied node matches the supplied selector.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method test
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {String} selector The CSS selector to test against.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return Boolean Wheter or not the shape matches the selector.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync test: function(selector)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.Selector.test(this.node, selector);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Value function for fill attribute
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _getDefaultFill
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return Object
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _getDefaultFill: function() {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync type: "solid",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync opacity: 1,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cx: 0.5,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cy: 0.5,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fx: 0.5,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fy: 0.5,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync r: 0.5
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync };
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Value function for stroke attribute
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _getDefaultStroke
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return Object
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _getDefaultStroke: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync weight: 1,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync dashstyle: "none",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync color: "#000",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync opacity: 1.0
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync };
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Creates the dom node for the shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return HTMLElement
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync createNode: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = document.createElementNS("http://www.w3.org/2000/svg", "svg:" + this._type),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync id = this.get("id"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync pointerEvents = this.get("pointerEvents");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.node = node;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.addClass("yui3-" + SHAPE);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.addClass("yui3-" + this.name);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(id)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("id", id);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(pointerEvents)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("pointer-events", pointerEvents);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync isMouseEvent: function(type)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(type.indexOf('mouse') > -1 || type.indexOf('click') > -1)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return true;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return false;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync before: function(type, fn)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(this.isMouseEvent(type))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.before(type, fn, "#" + this.get("id"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.on.apply(this, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync on: function(type, fn)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(this.isMouseEvent(type))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.on(type, fn, "#" + this.get("id"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.on.apply(this, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync after: function(type, fn)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(this.isMouseEvent(type))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.after(type, fn, "#" + this.get("id"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.on.apply(this, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Adds a stroke to the shape node.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _strokeChangeHandler
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _strokeChangeHandler: function(e)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stroke = this.get("stroke"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync strokeOpacity,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync dashstyle,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync dash,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync linejoin;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(stroke && stroke.weight && stroke.weight > 0)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync linejoin = stroke.linejoin || "round";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync strokeOpacity = stroke.opacity;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync dashstyle = stroke.dashstyle || "none";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync dash = Y_LANG.isArray(dashstyle) ? dashstyle.toString() : dashstyle;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stroke.color = stroke.color || "#000000";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stroke.weight = stroke.weight || 1;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stroke.opacity = Y_LANG.isNumber(strokeOpacity) ? strokeOpacity : 1;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stroke.linecap = stroke.linecap || "butt";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-dasharray", dash);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke", stroke.color);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-linecap", stroke.linecap);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-width", stroke.weight);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-opacity", stroke.opacity);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(linejoin == "round" || linejoin == "bevel")
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-linejoin", linejoin);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync linejoin = parseInt(linejoin, 10);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(Y_LANG.isNumber(linejoin))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-miterlimit", Math.max(linejoin, 1));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke-linejoin", "miter");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("stroke", "none");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Adds a fill to the shape node.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _fillChangeHandler
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _fillChangeHandler: function(e)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fill = this.get("fill"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fillOpacity,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync type;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(fill)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync type = fill.type;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(type == "linear" || type == "radial")
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._setGradientFill(fill);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("fill", "url(#grad" + this.get("id") + ")");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else if(!fill.color)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("fill", "none");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fillOpacity = fill.opacity = Y_LANG.isNumber(fillOpacity) ? fillOpacity : 1;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("fill", fill.color);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("fill-opacity", fillOpacity);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("fill", "none");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Returns a linear gradient fill
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _getLinearGradient
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {String} type gradient type
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _setGradientFill: function(fill) {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var offset,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync opacity,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync color,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stopNode,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync isNumber = Y_LANG.isNumber,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync graphic = this._graphic,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync type = fill.type,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode = graphic.getGradientNode("grad" + this.get("id"), type),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stops = fill.stops,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync w = this.get("width"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync h = this.get("height"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync rotation = fill.rotation,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync i,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync len,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync def,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stop,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync x1 = "0%",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync x2 = "100%",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync y1 = "50%",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync y2 = "50%",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cx = fill.cx,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cy = fill.cy,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fx = fill.fx,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync fy = fill.fy,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync r = fill.r;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(type == "linear")
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("gradientTransform", "rotate(" + rotation + "," + (w/2) + ", " + (h/2) + ")");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("width", w);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("height", h);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("x1", x1);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("y1", y1);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("x2", x2);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("y2", y2);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("gradientUnits", "userSpaceOnUse");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("cx", (cx * 100) + "%");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("cy", (cy * 100) + "%");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("fx", (fx * 100) + "%");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("fy", (fy * 100) + "%");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.setAttribute("r", (r * 100) + "%");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync len = stops.length;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync def = 0;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync for(i = 0; i < len; ++i)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stop = stops[i];
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync opacity = stop.opacity;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync color = stop.color;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync offset = stop.offset || i/(len - 1);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync offset = Math.round(offset * 100) + "%";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync opacity = isNumber(opacity) ? opacity : 1;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync opacity = Math.max(0, Math.min(1, opacity));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync def = (i + 1) / len;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stopNode = graphic._createGraphicNode("stop");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stopNode.setAttribute("offset", offset);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stopNode.setAttribute("stop-color", color);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stopNode.setAttribute("stop-opacity", opacity);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync gradientNode.appendChild(stopNode);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync set: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var host = this;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync AttributeLite.prototype.set.apply(host, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(host.initialized)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync host._updateHandler();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies translate transformation.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method translate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} x The x-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} y The y-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync translate: function(x, y)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._translateX = x;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._translateY = y;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._translate.apply(this, arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies translate transformation.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method translate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} x The x-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} y The y-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @protected
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _translate: function(x, y)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._addTransform("translate", arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies a skew to the x-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method skewX
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} x x-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync skewX: function(x)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._addTransform("skewX", arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies a skew to the x-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method skewX
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} x x-coordinate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync skewY: function(y)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._addTransform("skewY", arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _rotation: 0,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies a rotation.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method rotate
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync rotate: function(deg)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._rotation = deg;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._addTransform("rotate", arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies a scale transform
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method scale
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @param {Number} val
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync scale: function(val)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._addTransform("scale", arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Applies a matrix transformation
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method matrix
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync matrix: function(a, b, c, d, e, f)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._addTransform("matrix", arguments);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _addTransform: function(type, args)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(!this._transformArgs)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._transformArgs = {};
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._transformArgs[type] = Array.prototype.slice.call(args, 0);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._updateTransform();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _updateTransform: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync key,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync args,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync val,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transform = node.getAttribute("transform"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync test,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transformOrigin;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(this._transformArgs)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(this._transformArgs.hasOwnProperty("rotate"))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transformOrigin = this.get("transformOrigin");
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync args = this._transformArgs.rotate;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync args[1] = this.get("x") + (this.get("width") * transformOrigin[0]);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync args[2] = this.get("y") + (this.get("height") * transformOrigin[1]);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync for(key in this._transformArgs)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(key && this._transformArgs.hasOwnProperty(key))
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync val = key + "(" + this._transformArgs[key].toString() + ")";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(transform && transform.length > 0)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync test = new RegExp(key + '(.*)');
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(transform.indexOf(key) > -1)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transform = transform.replace(test, val);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transform += " " + val;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync else
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transform = val;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(transform)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("transform", transform);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Updates the shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _draw
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _draw: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("width", this.get("width"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("height", this.get("height"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("x", this.get("x"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("y", this.get("y"));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.style.left = this.get("x") + "px";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.style.top = this.get("y") + "px";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._fillChangeHandler();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._strokeChangeHandler();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._updateTransform();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Change event listener
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method _updateHandler
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _updateHandler: function(e)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._draw();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this._graphic.addToRedrawQueue(this);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Storage for translateX
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _translateX: 0,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Storage for translateY
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @private
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync _translateY: 0,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Returns the bounds for a shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @method getBounds
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @return Object
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync getBounds: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var rotation = this.get("rotation"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync absRot = Math.abs(rotation),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync radCon = Math.PI/180,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8)),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8)),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync w = this.get("width"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync h = this.get("height"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync stroke = this.get("stroke"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync x = this.get("x"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync y = this.get("y"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync wt = 0,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync tx = this.get("translateX"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync ty = this.get("translateY"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync bounds = {},
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transformOrigin = this.get("transformOrigin"),
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync originalWidth,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync originalHeight,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync tox = transformOrigin[0],
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync toy = transformOrigin[1];
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(rotation !== 0)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync originalWidth = w;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync originalHeight = h;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync w = (cosRadians * h) + (sinRadians * w);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync h = (cosRadians * h) + (sinRadians * w);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync x = (x + originalWidth * tox) - (sinRadians * (originalHeight * (1 - toy))) - (cosRadians * (originalWidth * tox));
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync y = (y + originalHeight * toy) - (sinRadians * (originalWidth * tox)) - (cosRadians * originalHeight * toy);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(stroke && stroke.weight)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync wt = stroke.weight;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync bounds.left = x - wt + tx;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync bounds.top = y - wt + ty;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync bounds.right = x + w + wt + tx;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync bounds.bottom = y + h + wt + ty;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return bounds;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync };
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsyncSVGShape.ATTRS = {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * An array of x, y values which indicates the transformOrigin in which to rotate the shape. Valid values range between 0 and 1 representing a
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * fraction of the shape's corresponding bounding box dimension. The default value is [0.5, 0.5].
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute transformOrigin
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Array
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync transformOrigin: {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync valueFn: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return [0.5, 0.5];
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * The rotation (in degrees) of the shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute rotation
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Number
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync rotation: {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync setter: function(val)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.rotate(val);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync getter: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return this._rotation;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Unique id for class instance.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute id
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type String
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync id: {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync valueFn: function()
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return Y.guid();
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync setter: function(val)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var node = this.node;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(node)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("id", val);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return val;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Indicates the x position of shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute x
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Number
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync x: {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync value: 0
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Indicates the y position of shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute y
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Number
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync y: {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync value: 0
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Indicates the width of the shape
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute width
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Number
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync width: {},
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Indicates the height of the shape
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute height
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Number
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync height: {},
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Indicates whether the shape is visible.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @attribute visible
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @type Boolean
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync visible: {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync value: true,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync setter: function(val){
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var visibility = val ? "visible" : "hidden";
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync this.node.style.visibility = visibility;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return val;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync },
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Contains information about the fill of the shape.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dl>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>color</dt><dd>The color of the fill.</dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the fill. The default value is 1.</dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>type</dt><dd>Type of fill.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dl>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>solid</dt><dd>Solid single color fill. (default)</dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>linear</dt><dd>Linear gradient fill.</dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>radial</dt><dd>Radial gradient fill.</dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * </dl>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * </dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * </dl>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <p>If a gradient (linear or radial) is specified as the fill type. The following properties are used:
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dl>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>stops</dt><dd>An array of objects containing the following properties:
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dl>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>color</dt><dd></dd>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * <dt>opacity</dt><dd></dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt>offset</dt><dd>Number between 0 and 1 indicating where the color stop is positioned.</dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * </dl>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * </dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt></dt><dd></dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt></dt><dd></dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt></dt><dd></dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * </dl>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * </p>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync *
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @attribute fill
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @type Object
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync */
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync fill: {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync valueFn: "_getDefaultFill",
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync setter: function(val)
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync var fill,
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync tmpl = this.get("fill") || this._getDefaultFill();
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync fill = (val) ? Y.merge(tmpl, val) : null;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync if(fill && fill.color)
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync if(fill.color === undefined || fill.color == "none")
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync fill.color = null;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync }
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync }
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync return fill;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync }
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync },
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync /**
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * Contains information about the stroke of the shape.
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dl>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt>color</dt><dd>The color of the stroke.</dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt>weight</dt><dd>Number that indicates the width of the stroke.</dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the stroke. The default value is 1.</dd>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * <dt>dashstyle</dt>Indicates whether to draw a dashed stroke. When set to "none", a solid stroke is drawn. When set to an array, the first index indicates the
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * length of the dash. The second index indicates the length of gap.
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * </dl>
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync *
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @attribute stroke
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @type Object
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync */
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync stroke: {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync valueFn: "_getDefaultStroke",
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync setter: function(val)
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync var tmpl = this.get("stroke") || this._getDefaultStroke();
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync return (val) ? Y.merge(tmpl, val) : null;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync }
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync },
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync /**
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * Indicates whether or not the instance will size itself based on its contents.
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync *
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @attribute autoSize
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @type Boolean
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync */
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync autoSize: {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync value: false
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync },
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync /**
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * Determines whether the instance will receive mouse events.
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync *
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @attribute pointerEvents
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync * @type string
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync */
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync pointerEvents: {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync valueFn: function()
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync var val = "visiblePainted",
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node = this.node;
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync if(node)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync {
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync node.setAttribute("pointer-events", val);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync }
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync return val;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync },
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync setter: function(val)
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync var node = this.node;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync if(node)
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync {
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync node.setAttribute("pointer-events", val);
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync }
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync return val;
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync }
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync },
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync
75f41c9995e4a8d9ed39651503f229147318dbd2vboxsync /**
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * Performs a translate on the x-coordinate. When translating x and y coordinates,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * use the <code>translate</code> method.
*
* @attribute translateX
* @type Number
*/
translateX: {
getter: function()
{
return this._translateX;
},
setter: function(val)
{
this._translateX = val;
this._transform(val, this._translateY);
return val;
}
},
/**
* Performs a translate on the y-coordinate. When translating x and y coordinates,
* use the <code>translate</code> method.
*
* @attribute translateX
* @type Number
*/
translateY: {
getter: function()
{
return this._translateY;
},
setter: function(val)
{
this._translateY = val;
this._transform(this._translateX, val);
return val;
}
},
/**
* The node used for gradient fills.
*
* @attribute gradientNode
* @type HTMLElement
*/
gradientNode: {
setter: function(val)
{
if(Y_LANG.isString(val))
{
val = this._graphic.getGradientNode("linear", val);
}
return val;
}
},
autoDraw: {
getter: function()
{
return this._graphic.autoDraw;
}
},
node: {
readOnly: true,
getter: function()
{
return this.node;
}
},
graphic: {
readOnly: true,
getter: function()
{
return this._graphic;
}
}
};
//Straightup augment, no wrapper functions
Y.mix(SVGShape, Y.AttributeLite, false, null, 1);
Y.mix(SVGShape, Y.EventTarget, false, null, 1);
Y.mix(SVGShape, PluginHost, false, null, 1);
SVGShape.plug = PluginHost.plug;
SVGShape.unplug = PluginHost.unplug;
Y.SVGShape = SVGShape;