graphics-vml-debug.js revision 9ef05fa33949a0e91fa62aea328cc344e8a606ca
e07d9cb85217949d497b02d7211de8a197d2f2ebzfYUI.add('graphics-vml', function(Y) {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.log('using VML');
e07d9cb85217949d497b02d7211de8a197d2f2ebzfvar Y_LANG = Y.Lang,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf IS_NUM = Y_LANG.isNumber,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf IS_ARRAY = Y_LANG.isArray,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf Y_DOM = Y.DOM,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf Y_SELECTOR = Y.Selector,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf DOCUMENT = Y.config.doc,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf AttributeLite = Y.AttributeLite,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLShape,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLCircle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLPath,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLRect,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLEllipse,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLGraphic;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzffunction VMLDrawing() {}
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLDrawing.prototype = {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _currentX: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _currentY: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * Draws a bezier curve.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method curveTo
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} cp1x x-coordinate for the first control point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} cp1y y-coordinate for the first control point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} cp2x x-coordinate for the second control point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} cp2y y-coordinate for the second control point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y y-coordinate for the end point.
da14cebe459d3275048785f25bd869cb09b5307fEric Cheng */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf curveTo: function(cp1x, cp1y, cp2x, cp2y, x, y) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var hiX,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf loX,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf hiY,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf loY;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = Math.round(x);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = Math.round(y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path += ' c ' + Math.round(cp1x) + ", " + Math.round(cp1y) + ", " + Math.round(cp2x) + ", " + Math.round(cp2y) + ", " + x + ", " + y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentX = x;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentY = y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf hiX = Math.max(x, Math.max(cp1x, cp2x));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf hiY = Math.max(y, Math.max(cp1y, cp2y));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf loX = Math.min(x, Math.min(cp1x, cp2x));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf loY = Math.min(y, Math.min(cp1y, cp2y));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._trackSize(hiX, hiY);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._trackSize(loX, loY);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws a quadratic bezier curve.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method quadraticCurveTo
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} cpx x-coordinate for the control point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} cpy y-coordinate for the control point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y y-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf quadraticCurveTo: function(cpx, cpy, x, y) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var currentX = this._currentX,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf currentY = this._currentY,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cp1x = currentX + 0.67*(cpx - currentX),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cp1y = currentY + 0.67*(cpy - currentY),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cp2x = cp1x + (x - currentX) * 0.34,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cp2y = cp1y + (y - currentY) * 0.34;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.curveTo(cp1x, cp1y, cp2x, cp2y, x, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws a rectangle.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method drawRect
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y y-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} w width
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} h height
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf drawRect: function(x, y, w, h) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.moveTo(x, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x + w, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x + w, y + h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x, y + h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentX = x;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentY = y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws a rectangle with rounded corners.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method drawRect
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y y-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} w width
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} h height
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} ew width of the ellipse used to draw the rounded corners
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} eh height of the ellipse used to draw the rounded corners
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf drawRoundRect: function(x, y, w, h, ew, eh) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.moveTo(x, y + eh);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x, y + h - eh);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.quadraticCurveTo(x, y + h, x + ew, y + h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x + w - ew, y + h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.quadraticCurveTo(x + w, y + h, x + w, y + h - eh);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x + w, y + eh);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.quadraticCurveTo(x + w, y, x + w - ew, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.lineTo(x + ew, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.quadraticCurveTo(x, y, x, y + eh);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws a wedge.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate of the wedge's center point
020c47705d28102a8df83a43ddf08e34dde21f22ql * @param {Number} y y-coordinate of the wedge's center point
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} startAngle starting angle in degrees
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} arc sweep of the wedge. Negative values draw clockwise.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} radius radius of wedge. If [optional] yRadius is defined, then radius is the x radius.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} yRadius [optional] y radius for wedge.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf drawWedge: function(x, y, startAngle, arc, radius, yRadius)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var diameter = radius * 2;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf yRadius = yRadius || radius;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path += this._getWedgePath({x:x, y:y, startAngle:startAngle, arc:arc, radius:radius, yRadius:yRadius});
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._trackSize(diameter, diameter);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentX = x;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentY = y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Generates a path string for a wedge shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _getWedgePath
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Object} config attributes used to create the path
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return String
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getWedgePath: function(config)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang var x = config.x,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = config.y,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf startAngle = config.startAngle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf arc = config.arc,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf radius = config.radius,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf yRadius = config.yRadius || radius,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf path;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(Math.abs(arc) > 360)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf arc = 360;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf startAngle *= -65535;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf arc *= 65536;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf path = " m " + x + " " + y + " ae " + x + " " + y + " " + radius + " " + yRadius + " " + startAngle + " " + arc;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return path;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * Completes a drawing operation.
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang *
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @method end
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer end: function() {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer this._draw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method lineTo
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} point1 x-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} point2 y-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf lineTo: function(point1, point2, etc) {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer var args = arguments,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i,
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang len;
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang if (typeof point1 === 'string' || typeof point1 === 'number') {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang args = [[point1, point2]];
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang }
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer len = args.length;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer if(!this._path)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path = "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path += ' l ';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for (i = 0; i < len; ++i) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path += ' ' + Math.round(args[i][0]) + ', ' + Math.round(args[i][1]);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._trackSize.apply(this, args[i]);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentX = args[i][0];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentY = args[i][1];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Moves the current drawing position to specified x and y coordinates.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method moveTo
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y y-coordinate for the end point.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf moveTo: function(x, y) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!this._path)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path = "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path += ' m ' + Math.round(x) + ', ' + Math.round(y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._trackSize(x, y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentX = x;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._currentY = y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Updates the size of the graphics object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _trackSize
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} w width
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} h height
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _trackSize: function(w, h) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if (w > this._right) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._right = w;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(w < this._left)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._left = w;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if (h < this._top)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._top = h;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if (h > this._bottom)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._bottom = h;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang this._width = this._right - this._left;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._height = this._bottom - this._top;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _left: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _right: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _top: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _bottom: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _width: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _height: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker FangY.VMLDrawing = VMLDrawing;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf/**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Base class for creating shapes.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @class VMLShape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLShape = function()
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang{
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLShape.superclass.constructor.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLShape.NAME = "vmlShape";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.extend(VMLShape, Y.BaseGraphic, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf init: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.initializer.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Initializes the shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * @method _initialize
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf initializer: function(cfg)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var host = this,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf graphic = cfg.graphic;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf host.createNode();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf host._graphic = graphic;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf graphic.addToRedrawQueue(this);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf createNode: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang var node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = this.get("x"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = this.get("y"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = this.get("width"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = this.get("height"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf id,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf type,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf classString,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke,
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang endcap,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf joinstyle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf miterlimit,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf id = this.get("id");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf type = this._type;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf classString = 'vml' + type + ' yui3-vmlShape yui3-' + this.constructor.NAME;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke = this._getStrokeProps();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill = this._getFillProps();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring = '<' + type + ' xmlns="urn:schemas-microsft.com:vml" id="' + id + '" class="' + classString + '" style="behavior:url(#default#VML);display:inline-block;position:absolute;left:' + x + 'px;top:' + y + 'px;width:' + w + 'px;height:' + h + 'px;"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(stroke)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf endcap = stroke.endcap;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity = stroke.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf joinstyle = stroke.joinstyle;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf miterlimit = stroke.miterlimit;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle = stroke.dashstyle;
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang nodestring += ' stroked="t" strokecolor="' + stroke.strokeColor + '" strokeWeight="' + stroke.strokeWeight + 'px"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring = '<stroke class="vmlstroke" xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring += ' opacity="' + opacity + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(endcap)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring += ' endcap="' + endcap + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(joinstyle)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring += ' joinstyle="' + joinstyle + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(miterlimit)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring += ' miterlimit="' + miterlimit + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(dashstyle)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring += ' dashstyle="' + dashstyle + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokestring += '></stroke>';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode = document.createElement(strokestring);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring += ' stroked="t"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring += ' stroked="f"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill.node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring = fill.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode = document.createElement(fillstring);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(fill.color)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring += ' fillcolor="' + fill.color + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring += ' filled="' + fill.filled + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring += '>';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf nodestring += '</' + type + '>';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node = document.createElement(nodestring);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._strokeNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.appendChild(this._strokeNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._fillNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.appendChild(this._fillNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.node = node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Add a class name to each node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method addClass
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} className the class name to add to the node's class attribute
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf addClass: function(className)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf Y_DOM.addClass(node, className);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Removes a class name from each node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method removeClass
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} className the class name to remove from the node's class attribute
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf removeClass: function(className)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf Y_DOM.removeClass(node, className);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Gets the current position of the node in page coordinates.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method getXY
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Array The XY position of the shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getXY: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var graphic = this._graphic,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentXY = graphic.getXY(),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = this.get("x"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = this.get("y");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return [parentXY[0] + x, parentXY[1] + y];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Set the position of the shape in page coordinates, regardless of how the node is positioned.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method setXY
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Array} Contains X & Y values for new position (coordinates are page-based)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setXY: function(xy)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var graphic = this._graphic,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentXY = graphic.getXY();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("x", xy[0] - parentXY[0]);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("y", xy[1] - parentXY[1]);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * Determines whether the node is an ancestor of another HTML element in the DOM hierarchy.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method contains
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {VMLShape | HTMLElement} needle The possible node or descendent
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Boolean Whether or not this shape is the needle or its ancestor.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf contains: function(needle)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return needle === Y.one(this.node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Compares nodes to determine if they match.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Node instances can be compared to each other and/or HTMLElements.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method compareTo
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {HTMLElement | Node} refNode The reference node to compare to the node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return {Boolean} True if the nodes match, false if they do not.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf compareTo: function(refNode) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return node === refNode;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Test if the supplied node matches the supplied selector.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method test
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} selector The CSS selector to test against.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Boolean Wheter or not the shape matches the selector.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf test: function(selector)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y_SELECTOR.test(this.node, selector);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getStrokeProps: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var props,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke = this.get("stroke"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokeOpacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dash = "",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i = 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf len,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linecap,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linejoin;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(stroke && stroke.weight && stroke.weight > 0)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props = {};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linecap = stroke.linecap || "flat";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linejoin = stroke.linejoin || "round";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(linecap != "round" && linecap != "square")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang linecap = "flat";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokeOpacity = stroke.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle = stroke.dashstyle || "none";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke.color = stroke.color || "#000000";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke.weight = stroke.weight || 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke.opacity = IS_NUM(strokeOpacity) ? strokeOpacity : 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.stroked = true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.strokeColor = stroke.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.strokeWeight = stroke.weight;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.endcap = linecap;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.opacity = stroke.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(IS_ARRAY(dashstyle))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dash = [];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf len = dashstyle.length;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i = 0; i < len; ++i)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val = dashstyle[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dash[i] = val / stroke.weight;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(linejoin == "round" || linejoin == "bevel")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.joinstyle = linejoin;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linejoin = parseInt(linejoin, 10);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(IS_NUM(linejoin))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.miterlimit = Math.max(linejoin, 1);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.joinstyle = "miter";
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.dashstyle = dash;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return props;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Adds a stroke to the shape node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _strokeChangeHandler
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _strokeChangeHandler: function(e)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke = this.get("stroke"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokeOpacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dash = "",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i = 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf len,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linecap,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linejoin;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(stroke && stroke.weight && stroke.weight > 0)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linecap = stroke.linecap || "flat";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linejoin = stroke.linejoin || "round";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(linecap != "round" && linecap != "square")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linecap = "flat";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf strokeOpacity = stroke.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle = stroke.dashstyle || "none";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke.color = stroke.color || "#000000";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke.weight = stroke.weight || 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke.opacity = IS_NUM(strokeOpacity) ? strokeOpacity : 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.stroked = true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.strokeColor = stroke.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.strokeWeight = stroke.weight + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!this._strokeNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode = this._createGraphicNode("stroke");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.appendChild(this._strokeNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode.endcap = linecap;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode.opacity = stroke.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(IS_ARRAY(dashstyle))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dash = [];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf len = dashstyle.length;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i = 0; i < len; ++i)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val = dashstyle[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dash[i] = val / stroke.weight;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(linejoin == "round" || linejoin == "bevel")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode.joinstyle = linejoin;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf linejoin = parseInt(linejoin, 10);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(IS_NUM(linejoin))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode.miterlimit = Math.max(linejoin, 1);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode.joinstyle = "miter";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeNode.dashstyle = dash;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.stroked = false;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getFillProps: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var fill = this.get("fill"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradient,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf filled = false;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props = {};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill.type == "radial" || fill.type == "linear")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity = fill.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity = IS_NUM(fillOpacity) ? fillOpacity : 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf filled = true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradient = this._getGradientFill(fill);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring = '<fill xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;" opacity="' + fillOpacity + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i in gradient)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(gradient.hasOwnProperty(i))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring += ' ' + i + '="' + gradient[i] + '"';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring += ' />';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.node = fillstring;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(fill.color)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.color = fill.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity = fill.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf filled = true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(IS_NUM(fillOpacity))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity = Math.max(Math.min(fillOpacity, 1), 0);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.opacity = fillOpacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.node = '<fill xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;" opacity="' + fillOpacity + '" color="' + fill.color + '"/>';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf props.filled = filled;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return props;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Adds a fill to the shape node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _fillChangeHandler
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _fillChangeHandler: function(e)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill = this.get("fill"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf filled = false;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill.type == "radial" || fill.type == "linear")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf filled = true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._setGradientFill(node, fill);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(fill.color)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity = fill.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf filled = true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(IS_NUM(fillOpacity))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillOpacity = Math.max(Math.min(fillOpacity, 1), 0);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill.opacity = fillOpacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._fillNode && this._fillNode.getAttribute("type") == "solid")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.type = "solid";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.opacity = fillOpacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.color = fill.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._fillNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.opacity = fillOpacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.color = fill.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fillstring = '<fill xmlns="urn:schemas-microsft.com:vml" class="vmlfill" opacity="' + fillOpacity + '" color="' + fill.color + '"/>';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode = document.createElement(fillstring);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.appendChild(this._fillNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._fillNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.removeChild(this._fillNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode = null;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.fillColor = fill.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.filled = filled;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _updateFillNode: function(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!this._fillNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode = this._createGraphicNode("fill");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.appendChild(this._fillNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getGradientFill: function(fill)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var gradientProps = {},
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxWidth,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxHeight,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf type = fill.type,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = this.get("width"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = this.get("height"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf isNumber = IS_NUM,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stop,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stops = fill.stops,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf len = stops.length,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf color,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i = 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf oi,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf colorstring = "",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cx = fill.cx,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cy = fill.cy,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx = fill.fx,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy = fill.fy,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf r = fill.r,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = fill.rotation || 0;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(type === "linear")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(rotation > 0 && rotation <= 90)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 450 - rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(rotation <= 270)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 270 - rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(rotation <= 360)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 630 - rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 270;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.type = "gradient";//"gradientunscaled";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.angle = rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(type === "radial")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxWidth = w * (r * 2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxHeight = h * (r * 2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx = r * 2 * (fx - 0.5);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy = r * 2 * (fy - 0.5);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx += cx;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy += cy;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.focussize = (gradientBoxWidth/w)/10 + "% " + (gradientBoxHeight/h)/10 + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //gradientProps.focusSize = ((r - cx) * 10) + "% " + ((r - cy) * 10) + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.alignshape = false;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.type = "gradientradial";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.focus = "100%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.focusposition = Math.round(fx * 100) + "% " + Math.round(fy * 100) + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(;i < len; ++i) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stop = stops[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf color = stop.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity = stop.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity = isNumber(opacity) ? opacity : 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct = stop.offset || i/(len-1);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct *= (r * 2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(pct <= 1)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct = Math.round(100 * pct) + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf oi = i > 0 ? i + 1 : "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps["opacity" + oi] = opacity + "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf colorstring += ", " + pct + " " + color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct = stops[1].offset || 0;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct *= 100;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(parseInt(pct, 10) < 100)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf colorstring += ", 100% " + color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientProps.colors = colorstring.substr(2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return gradientProps;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _setGradientFill: function(node, fill)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._updateFillNode(node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var gradientBoxWidth,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxHeight,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf type = fill.type,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = this.get("width"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = this.get("height"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf isNumber = IS_NUM,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stop,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stops = fill.stops,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf len = stops.length,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf color,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i = 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf oi,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf colorstring = "",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cx = fill.cx,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cy = fill.cy,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx = fill.fx,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy = fill.fy,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf r = fill.r,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = fill.rotation || 0;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(type === "linear")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(rotation > 0 && rotation <= 90)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 450 - rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(rotation <= 270)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 270 - rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(rotation <= 360)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 630 - rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation = 270;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.type = "gradient";//"gradientunscaled";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.angle = rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else if(type === "radial")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxWidth = w * (r * 2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf gradientBoxHeight = h * (r * 2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx = r * 2 * (fx - 0.5);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy = r * 2 * (fy - 0.5);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx += cx;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy += cy;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.focussize = (gradientBoxWidth/w)/10 + "% " + (gradientBoxHeight/h)/10 + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //this._fillNode.focusSize = ((r - cx) * 10) + "% " + ((r - cy) * 10) + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.alignshape = false;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.type = "gradientradial";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.focus = "100%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.focusposition = Math.round(fx * 100) + "% " + Math.round(fy * 100) + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(;i < len; ++i) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stop = stops[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf color = stop.color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity = stop.opacity;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity = isNumber(opacity) ? opacity : 1;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct = stop.offset || i/(len-1);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct *= (r * 2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(pct <= 1)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct = Math.round(100 * pct) + "%";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf oi = i > 0 ? i + 1 : "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode["opacity" + oi] = opacity + "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf colorstring += ", " + pct + " " + color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct = stops[1].offset || 0;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pct *= 100;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(parseInt(pct, 10) < 100)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf colorstring += ", 100% " + color;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillNode.colors.value = colorstring.substr(2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _addTransform: function(type, args)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!this._transformArgs)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._transformArgs = {};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._transformArgs[type] = Array.prototype.slice.call(args, 0);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._updateTransform();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _updateTransform: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var host = this,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node = host.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = host.get("x"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = host.get("y"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transformOrigin,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transX,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transY,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf tx,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf ty,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf originX,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf originY,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf absRot,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf radCon,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf sinRadians,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cosRadians,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x2,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y2,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf coordSize,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transformArgs = host._transformArgs;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(transformArgs)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = host.get("width");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = host.get("height");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf coordSize = node.coordSize;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(transformArgs.hasOwnProperty("translate"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transX = 0 - (coordSize.x/w * host._translateX);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transY = 0 - (coordSize.y/h * host._translateY);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.coordOrigin = transX + "," + transY;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(transformArgs.hasOwnProperty("rotate"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transformOrigin = host.get("transformOrigin");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf tx = transformOrigin[0];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf ty = transformOrigin[1];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf originX = w * (tx - 0.5);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf originY = h * (ty - 0.5);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf absRot = Math.abs(host._rotation);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf radCon = Math.PI/180;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf sinRadians = parseFloat(parseFloat(Math.sin(absRot * radCon)).toFixed(8));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cosRadians = parseFloat(parseFloat(Math.cos(absRot * radCon)).toFixed(8));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x2 = (originX * cosRadians) - (originY * sinRadians);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y2 = (originX * sinRadians) + (originY * cosRadians);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.rotation = host._rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = x + (originX - x2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = y + (originY - y2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.left = x + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.top = y + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._graphic.addToRedrawQueue(this);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Storage for translateX
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _translateX: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Storage for translateY
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _translateY: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Applies translate transformation.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method translate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x The x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y The y-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf translate: function(x, y)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._translateX = x;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._translateY = y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._addTransform("translate", arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Applies a skew to the x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method skewX:q
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf skewX: function(x)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Applies a skew to the x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method skewX:q
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf skewY: function(y)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _rotation: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Applies a rotation.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method rotate
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotate: function(deg)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._rotation = deg;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._addTransform("rotate", arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Applies a scale transform
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method scale
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} val
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf scale: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Applies a matrix transformation
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method matrix
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf matrix: function(a, b, c, d, e, f)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf isMouseEvent: function(type)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(type.indexOf('mouse') > -1 || type.indexOf('click') > -1)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return true;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return false;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf before: function(type, fn)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.isMouseEvent(type))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.before(type, fn, "#" + this.get("id"));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.on.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf on: function(type, fn)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.isMouseEvent(type))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.on(type, fn, "#" + this.get("id"));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.on.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf after: function(type, fn)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.isMouseEvent(type))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.after(type, fn, "#" + this.get("id"));
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.on.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang _draw: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = this.get("width"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = this.get("height");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!node)
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.createNode();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillChangeHandler();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeChangeHandler();
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang node.style.width = w + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.height = h + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._updateTransform();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _updateHandler: function(e)
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.visible = "hidden";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._draw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.visible = "visible";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Creates a graphic node
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _createGraphicNode
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} type node type to create
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} specified pointer-events value
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return HTMLElement
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _createGraphicNode: function(type)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf type = type || this._type;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return document.createElement('<' + type + ' xmlns="urn:schemas-microsft.com:vml" class="vml' + type + '"/>');
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Value function for fill attribute
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _getDefaultFill
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getDefaultFill: function() {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf type: "solid",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cx: 0.5,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cy: 0.5,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fx: 0.5,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fy: 0.5,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf r: 0.5
e07d9cb85217949d497b02d7211de8a197d2f2ebzf };
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Value function for stroke attribute
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _getDefaultStroke
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getDefaultStroke: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf weight: 1,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf dashstyle: "none",
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang color: "#000",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf opacity: 1.0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf };
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf set: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var host = this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf AttributeLite.prototype.set.apply(host, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(host.initialized)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf host._updateHandler();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Returns the bounds for a shape.
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method getBounds
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getBounds: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang var w = this.get("width"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = this.get("height"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke = this.get("stroke"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = this.get("x"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = this.get("y"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf wt = 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bounds = {};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(stroke && stroke.weight)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf wt = stroke.weight;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bounds.left = x - wt;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bounds.top = y - wt;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bounds.right = x + w + wt;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bounds.bottom = y + h + wt;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return bounds;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Destroys shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method destroy
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf destroy: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var parentNode = this._graphic && this._graphic._node ? this._graphic._node : null,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node = this.node;
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang if(this.node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._fillNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.removeChild(this._fillNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._strokeNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.removeChild(this._strokeNode);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(parentNode)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentNode.removeChild(node);
ff3124eff995e6cd8ebd8c6543648e0670920034ff }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLShape.ATTRS = {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * 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
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * fraction of the shape's corresponding bounding box dimension. The default value is [0.5, 0.5].
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute transformOrigin
ff3124eff995e6cd8ebd8c6543648e0670920034ff * @type Array
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf transformOrigin: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf valueFn: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return [0.5, 0.5];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * The rotation (in degrees) of the shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute rotation
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rotation: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.rotate(val);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._rotation;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Performs a translate on the x-coordinate. When translating x and y coordinates,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * use the <code>translate</code> method.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute translateX
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf translateX: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._translateX;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._translateX = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._addTransform("translate", [val, this._translateY]);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Performs a translate on the y-coordinate. When translating x and y coordinates,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * use the <code>translate</code> method.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute translateX
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf translateY: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._translateY;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._translateY = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._addTransform("translate", [this._translateX, val]);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the x position of shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute x
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the y position of shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute y
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Unique id for class instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute id
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf id: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf valueFn: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.guid();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.setAttribute("id", val);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute width
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf width: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute height
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf height: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates whether the shape is visible.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute visible
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Boolean
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf visible: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val){
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf visibility = val ? "visible" : "hidden";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.visibility = visibility;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Contains information about the fill of the shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>color</dt><dd>The color of the fill.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the fill. The default value is 1.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>type</dt><dd>Type of fill.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>solid</dt><dd>Solid single color fill. (default)</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>linear</dt><dd>Linear gradient fill.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>radial</dt><dd>Radial gradient fill.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * </dl>
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * </dd>
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * </dl>
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang *
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * <p>If a gradient (linear or radial) is specified as the fill type. The following properties are used:
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * <dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>stops</dt><dd>An array of objects containing the following properties:
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>color</dt><dd>The color of the stop.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the stop. The default value is 1. Note: No effect for IE <= 8</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>offset</dt><dd>Number between 0 and 1 indicating where the color stop is positioned.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * </dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * </dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt></dt><dd></dd>
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * <dt></dt><dd></dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt></dt><dd></dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * </dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * </p>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute fill
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf valueFn: "_getDefaultFill",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var i,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf tmpl = this.get("fill") || this._getDefaultFill();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf //ensure, fill type is solid if color is explicitly passed.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(val.hasOwnProperty("color"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val.type = "solid";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i in val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(val.hasOwnProperty(i))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf tmpl[i] = val[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill = tmpl;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill && fill.color)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill.color === undefined || fill.color == "none")
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf fill.color = null;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return fill;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Contains information about the stroke of the shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>color</dt><dd>The color of the stroke.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <dt>weight</dt><dd>Number that indicates the width of the stroke.</dd>
ff3124eff995e6cd8ebd8c6543648e0670920034ff * <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the stroke. The default value is 1.</dd>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * <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
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * length of the dash. The second index indicates the length of gap.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * </dl>
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute stroke
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf valueFn: "_getDefaultStroke",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var i,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf tmpl = this.get("stroke") || this._getDefaultStroke();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i in val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(val.hasOwnProperty(i))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang tmpl[i] = val[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke = tmpl;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return stroke;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
fb91fd8a302dfb13e250bbefb6a3970c2edc3ae3zf * Indicates whether or not the instance will size itself based on its contents.
fb91fd8a302dfb13e250bbefb6a3970c2edc3ae3zf *
fb91fd8a302dfb13e250bbefb6a3970c2edc3ae3zf * @attribute autoSize
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Boolean
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf autoSize: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: false
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Determines whether the instance will receive mouse events.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute pointerEvents
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type string
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pointerEvents: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: "visiblePainted"
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Reference to the container Graphic.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute graphic
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Graphic
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf graphic: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf readOnly: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._graphic;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.VMLShape = VMLShape;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf/**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * The VMLPath class creates a graphic object with editable
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * properties.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * @class VMLPath
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @extends VMLShape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLPath = function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf{
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLPath.superclass.constructor.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLPath.NAME = "vmlPath";
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.extend(VMLPath, Y.VMLShape, Y.merge(Y.VMLDrawing.prototype, {
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the type of shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @property _type
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @readOnly
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _type: "shape",
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws the graphic.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _draw
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _draw: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var fill = this.get("fill"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf stroke = this.get("stroke"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node = this.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = this.get("width"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = this.get("height"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf path = this.get("path"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pathEnd = "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.visible = "hidden";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._fillChangeHandler();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._strokeChangeHandler();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(path)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(fill && fill.color)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pathEnd += ' x';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(stroke)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf pathEnd += ' e';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(path)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.path = path + pathEnd;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(w && h)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.coordSize = w + ', ' + h;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.position = "absolute";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.width = w + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.height = h + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path = path;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.style.visible = "visible";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._updateTransform();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Completes a drawing operation.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method end
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf end: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._draw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Clears the path.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method clear
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf clear: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._path = "";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf}));
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLPath.ATTRS = Y.merge(Y.VMLShape.ATTRS, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the width of the shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute width
ff3124eff995e6cd8ebd8c6543648e0670920034ff * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf width: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._width;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._width = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * Indicates the height of the shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute height
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf height: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._height;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
fb91fd8a302dfb13e250bbefb6a3970c2edc3ae3zf
fb91fd8a302dfb13e250bbefb6a3970c2edc3ae3zf setter: function(val)
fb91fd8a302dfb13e250bbefb6a3970c2edc3ae3zf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._height = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the path used for the node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute path
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf path: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf readOnly: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._path;
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang }
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang }
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang});
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker FangY.VMLPath = VMLPath;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf/**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws rectangles
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLRect = function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf{
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLRect.superclass.constructor.apply(this, arguments);
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang};
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLRect.NAME = "vmlRect";
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.extend(VMLRect, Y.VMLShape, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the type of shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @property _type
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @readOnly
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _type: "rect"
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLRect.ATTRS = Y.VMLShape.ATTRS;
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.VMLRect = VMLRect;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf/**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws an ellipse
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLEllipse = function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf{
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLEllipse.superclass.constructor.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLEllipse.NAME = "vmlEllipse";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.extend(VMLEllipse, Y.VMLShape, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the type of shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @property _type
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @readOnly
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _type: "oval"
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLEllipse.ATTRS = Y.merge(Y.VMLShape.ATTRS, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Horizontal radius for the ellipse.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute xRadius
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf xRadius: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf lazyAdd: false,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var val = this.get("width");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val = Math.round((val/2) * 100)/100;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var w = val * 2;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("width", w);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Vertical radius for the ellipse.
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute yRadius
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf yRadius: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf lazyAdd: false,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var val = this.get("height");
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val = Math.round((val/2) * 100)/100;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var h = val * 2;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("height", h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.VMLEllipse = VMLEllipse;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf/**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Draws an circle
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLCircle = function(cfg)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf{
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLCircle.superclass.constructor.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLCircle.NAME = "vmlCircle";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.extend(VMLCircle, VMLShape, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the type of shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @property _type
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @readOnly
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _type: "oval"
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLCircle.ATTRS = Y.merge(VMLShape.ATTRS, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Horizontal radius for the circle.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute radius
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf radius: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf lazyAdd: false,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Width of the circle
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute width
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf width: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("radius", val/2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var radius = this.get("radius"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val = radius && radius > 0 ? radius * 2 : 0;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Width of the circle
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute width
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf height: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("radius", val/2);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var radius = this.get("radius"),
e07d9cb85217949d497b02d7211de8a197d2f2ebzf val = radius && radius > 0 ? radius * 2 : 0;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.VMLCircle = VMLCircle;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf/**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * VMLGraphic is a simple drawing api that allows for basic drawing operations.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @class VMLGraphic
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @constructor
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLGraphic = function() {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf VMLGraphic.superclass.constructor.apply(this, arguments);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLGraphic.NAME = "vmlGraphic";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfVMLGraphic.ATTRS = {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf render: {},
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Unique id for class instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute id
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type String
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf id: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf valueFn: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return Y.guid();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = this._node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.setAttribute("id", val);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Key value pairs in which a shape instance is associated with its id.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute shapes
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @readOnly
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf shapes: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf readOnly: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._shapes;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Object containing size and coordinate data for the content of a Graphic in relation to the coordSpace node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute contentBounds
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Object
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf contentBounds: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf readOnly: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._contentBounds;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * The html element that represents to coordinate system of the Graphic instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute node
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type HTMLElement
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf readOnly: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf width: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.width = val + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf height: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.height = val + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Determines how the size of instance is calculated. If true, the width and height are determined by the size of the contents.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * If false, the width and height values are either explicitly set or determined by the size of the parent node's dimensions.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute autoSize
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Boolean
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @default false
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf autoSize: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: false
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * When overflow is set to true, by default, the viewBox will resize to greater values but not values. (for performance)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * When resizing the viewBox down is desirable, set the resizeDown value to true.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute resizeDown
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Boolean
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf resizeDown: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._resizeDown;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._resizeDown = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._redraw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the x-coordinate for the instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute x
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._x;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._x = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.left = val + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates the y-coordinate for the instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute y
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Number
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getter: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._y;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._y = val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.top = val + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Indicates whether or not the instance will automatically redraw after a change is made to a shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * This property will get set to false when batching operations.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @attribute autoDraw
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @type Boolean
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @default true
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf autoDraw: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: true
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf visible: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf value: true,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setter: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._toggleVisible(val);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return val;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf};
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.extend(VMLGraphic, Y.BaseGraphic, {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _x: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _y: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Gets the current position of the graphic instance in page coordinates.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method getXY
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Array The XY position of the shape.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getXY: function()
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang var node = Y.one(this._node),
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang xy;
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang if(node)
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang xy = node.getXY();
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang }
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang return xy;
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang },
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang /**
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @private
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @property _resizeDown
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @type Boolean
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang */
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang _resizeDown: false,
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang /**
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * Initializes the class.
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang *
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @method initializer
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * @private
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang */
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang initializer: function(config) {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang var render = this.get("render");
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang this._shapes = {};
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang this._contentBounds = {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang left: 0,
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang top: 0,
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang right: 0,
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer bottom: 0
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang };
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang this._node = this._createGraphic();
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang this._node.setAttribute("id", this.get("id"));
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang if(render)
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer this.render(render);
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang }
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang },
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang /**
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * Adds the graphics node to the dom.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer *
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * @method render
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer * @param {HTMLElement} parentNode node in which to render the graphics node into.
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer render: function(render) {
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer var parentNode = Y.one(render),
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer w = this.get("width") || parseInt(parentNode.getComputedStyle("width"), 10),
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer h = this.get("height") || parseInt(parentNode.getComputedStyle("height"), 10);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentNode = parentNode || DOCUMENT.body;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentNode.appendChild(this._node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.setSize(w, h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.parentNode = parentNode;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("width", w);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("height", h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Removes all nodes.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method destroy
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf destroy: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.clear();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.parentNode.removeChild(this._node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Generates a shape instance by type.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method getShape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} type type of shape to generate.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Object} cfg attributes for the shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getShape: function(cfg)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf cfg.graphic = this;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var shape = new this._shapeClass[cfg.type](cfg);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.addShape(shape);
020c47705d28102a8df83a43ddf08e34dde21f22ql return shape;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Adds a shape instance to the graphic instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method addShape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Shape} shape The shape instance to be added to the graphic.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf addShape: function(shape)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var node = shape.node,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentNode = this._frag || this._node;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.get("autoDraw"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf parentNode.appendChild(node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf else
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._getDocFrag().appendChild(node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Removes a shape instance from from the graphic instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method removeShape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Shape|String}
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf removeShape: function(shape)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!shape instanceof VMLShape)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(Y_LANG.isString(shape))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf shape = this._shapes[shape];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(shape && shape instanceof VMLShape)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf shape.destroy();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf delete this._shapes[shape.get("id")];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.get("autoDraw"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._redraw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Removes all shape instances from the dom.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method removeAllShapes
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
ff3124eff995e6cd8ebd8c6543648e0670920034ff removeAllShapes: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var shapes = this._shapes,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i in shapes)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang if(shapes.hasOwnProperty(i))
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang {
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang shapes[i].destroy();
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang }
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang }
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang this._shapes = {};
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang },
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Removes all child nodes.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _removeChildren
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param node
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _removeChildren: function(node)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(node.hasChildNodes())
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var child;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf while(node.firstChild)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf child = node.firstChild;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._removeChildren(child);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf node.removeChild(child);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Clears the graphics object.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method clear
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf clear: function() {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._removeAllShapes();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._removeChildren(this._node);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Toggles visibility
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _toggleVisible
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {HTMLElement} node element to toggle
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Boolean} val indicates visibilitye
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _toggleVisible: function(val)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang var i,
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang shapes = this._shapes,
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang visibility = val ? "visible" : "hidden";
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang if(shapes)
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang for(i in shapes)
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang if(shapes.hasOwnProperty(i))
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang {
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang shapes[i].set("visible", val);
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang }
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.visibility = visibility;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang /**
5644143a6cf1e70bc2e78d5140970830aae0e8cdQuaker Fang * Sets the size of the graphics object.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method setSize
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param w {Number} width to set for the instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param h {Number} height to set for the instance.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setSize: function(w, h) {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf w = Math.round(w);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf h = Math.round(h);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.width = w + 'px';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.height = h + 'px';
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.coordSize = w + ' ' + h;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Sets the positon of the graphics object.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method setPosition
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} x x-coordinate for the object.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Number} y y-coordinate for the object.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf setPosition: function(x, y)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf x = Math.round(x);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf y = Math.round(y);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.left = x + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.style.top = y + "px";
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Creates a group element
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method _createGraphic
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang _createGraphic: function() {
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang var group = document.createElement('<group xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:block;zoom:1;" />');
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang group.style.display = "block";
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang group.style.position = 'absolute';
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang return group;
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang },
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang /**
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * Creates a graphic node
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang *
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * @method _createGraphicNode
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} type node type to create
fe3e6e3a98f98e7ab1a751934c0116fb914b9c82Quaker Fang * @param {String} pe specified pointer-events value
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return HTMLElement
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _createGraphicNode: function(type)
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return document.createElement('<' + type + ' xmlns="urn:schemas-microsft.com:vml" style="behavior:url(#default#VML);display:inline-block;zoom:1;" />');
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Returns a shape based on the id of its dom node.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method getShapeById
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {String} id Dom id of the shape's node attribute.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @return Shape
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf getShapeById: function(id)
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._shapes[id];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @private
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _shapeClass: {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf circle: Y.VMLCircle,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf rect: Y.VMLRect,
ff3124eff995e6cd8ebd8c6543648e0670920034ff path: Y.VMLPath,
ff3124eff995e6cd8ebd8c6543648e0670920034ff ellipse: Y.VMLEllipse
ff3124eff995e6cd8ebd8c6543648e0670920034ff },
ff3124eff995e6cd8ebd8c6543648e0670920034ff
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang * Allows for creating multiple shapes in order to batch appending and redraw operations.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method batch
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param {Function} method Method to execute.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf batch: function(method)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var autoDraw = this.get("autoDraw");
ff3124eff995e6cd8ebd8c6543648e0670920034ff this.set("autoDraw", false);
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang method.apply();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._redraw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this.set("autoDraw", autoDraw);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getDocFrag: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!this._frag)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._frag = document.createDocumentFragment();
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return this._frag;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang
e07d9cb85217949d497b02d7211de8a197d2f2ebzf /**
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * Adds a shape to the redraw queue and calculates the contentBounds.
e07d9cb85217949d497b02d7211de8a197d2f2ebzf *
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @method addToRedrawQueue
e07d9cb85217949d497b02d7211de8a197d2f2ebzf * @param shape {SVGShape}
e07d9cb85217949d497b02d7211de8a197d2f2ebzf */
e07d9cb85217949d497b02d7211de8a197d2f2ebzf addToRedrawQueue: function(shape)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var shapeBox,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._shapes[shape.get("id")] = shape;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(!this.get("resizeDown"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf shapeBox = shape.getBounds();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box = this._contentBounds;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.left = box.left < shapeBox.left ? box.left : shapeBox.left;
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang box.top = box.top < shapeBox.top ? box.top : shapeBox.top;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.right = box.right > shapeBox.right ? box.right : shapeBox.right;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.bottom = box.bottom > shapeBox.bottom ? box.bottom : shapeBox.bottom;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.width = box.right - box.left;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.height = box.bottom - box.top;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._contentBounds = box;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.get("autoDraw"))
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._redraw();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang _redraw: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var box = this.get("resizeDown") ? this._getUpdatedContentBounds() : this._contentBounds;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this.get("autoSize"))
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
1a932f2eab9b00d713acc4205d96ca2485bf2712Quaker Fang this.setSize(box.right, box.bottom);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(this._frag)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._node.appendChild(this._frag);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._frag = null;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf },
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf _getUpdatedContentBounds: function()
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf var bounds,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf i,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf shape,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf queue = this._shapes,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box = {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf left: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf top: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf right: 0,
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bottom: 0
e07d9cb85217949d497b02d7211de8a197d2f2ebzf };
e07d9cb85217949d497b02d7211de8a197d2f2ebzf for(i in queue)
e07d9cb85217949d497b02d7211de8a197d2f2ebzf {
e07d9cb85217949d497b02d7211de8a197d2f2ebzf if(queue.hasOwnProperty(i))
3a1a8936dac0ebe7e956fa122b0b0d15e62d4108zf {
3a1a8936dac0ebe7e956fa122b0b0d15e62d4108zf shape = queue[i];
e07d9cb85217949d497b02d7211de8a197d2f2ebzf bounds = shape.getBounds();
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.left = Math.min(box.left, bounds.left);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.top = Math.min(box.top, bounds.top);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.right = Math.max(box.right, bounds.right);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.bottom = Math.max(box.bottom, bounds.bottom);
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.width = box.right - box.left;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf box.height = box.bottom - box.top;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf this._contentBounds = box;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf return box;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf }
e07d9cb85217949d497b02d7211de8a197d2f2ebzf});
e07d9cb85217949d497b02d7211de8a197d2f2ebzfY.VMLGraphic = VMLGraphic;
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf
e07d9cb85217949d497b02d7211de8a197d2f2ebzf}, '@VERSION@' ,{requires:['graphics'], skinnable:false});
e07d9cb85217949d497b02d7211de8a197d2f2ebzf