src/cm/media/js/lib/yui/yui_3.10.3/build/graphics-svg/graphics-svg.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('graphics-svg', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
var IMPLEMENTATION = "svg",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    SHAPE = "shape",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
	SPLITPATHPATTERN = /[a-z][^a-z]*/ig,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
    SPLITARGSPATTERN = /[\-]?[0-9]*[0-9|\.][0-9]*/g,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
    Y_LANG = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
	AttributeLite = Y.AttributeLite,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
	SVGGraphic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
    SVGShape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
	SVGCircle,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
	SVGRect,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
	SVGPath,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
	SVGEllipse,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    SVGPieSlice,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    DOCUMENT = Y.config.doc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    _getClassName = Y.ClassNameManager.getClassName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
function SVGDrawing(){}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Drawing.html">`Drawing`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
 * `SVGDrawing` is not intended to be used directly. Instead, use the <a href="Drawing.html">`Drawing`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Drawing.html">`Drawing`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
 * class will point to the `SVGDrawing` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
 * @class SVGDrawing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
SVGDrawing.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
     * Rounds a value to the nearest hundredth.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
     * @method _round
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
     * @param {Number} val Value to be rounded.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
     * @return Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    _round: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        return Math.round(val * 100)/100;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
     * Maps path to methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
     * @property _pathSymbolToMethod
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
    _pathSymbolToMethod: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        M: "moveTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        m: "relativeMoveTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        L: "lineTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        l: "relativeLineTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        C: "curveTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        c: "relativeCurveTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        Q: "quadraticCurveTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        q: "relativeQuadraticCurveTo",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        z: "closePath",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        Z: "closePath"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * Current x position of the drawing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     * @property _currentX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    _currentX: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     * Current y position of the drqwing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     * @property _currentY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    _currentY: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
     * Indicates the type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    _type: "path",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
     * Draws a bezier curve.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
     * @method curveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
     * @param {Number} cp1x x-coordinate for the first control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
     * @param {Number} cp1y y-coordinate for the first control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
     * @param {Number} cp2x x-coordinate for the second control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
     * @param {Number} cp2y y-coordinate for the second control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
     * @param {Number} x x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
     * @param {Number} y y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    curveTo: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        this._curveTo.apply(this, [Y.Array(arguments), false]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
     * Draws a bezier curve relative to the current coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
     * @method relativeCurveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
     * @param {Number} cp1x x-coordinate for the first control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
     * @param {Number} cp1y y-coordinate for the first control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
     * @param {Number} cp2x x-coordinate for the second control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     * @param {Number} cp2y y-coordinate for the second control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     * @param {Number} x x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     * @param {Number} y y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    relativeCurveTo: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        this._curveTo.apply(this, [Y.Array(arguments), true]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     * Implements curveTo methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
     * @method _curveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     * @param {Array} args The arguments to be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
     * @param {Boolean} relative Indicates whether or not to use relative coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    _curveTo: function(args, relative) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        var w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            h,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            pts,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
            cp1x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
            cp1y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            cp2x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
            cp2y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            bottom,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
            top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            pathArrayLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            currentArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            command = relative ? "c" : "C",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            relativeX = relative ? parseFloat(this._currentX) : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
            relativeY = relative ? parseFloat(this._currentY) : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
        if(this._pathType !== command)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
            this._pathType = command;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
            currentArray = [command];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
            currentArray = this._pathArray[Math.max(0, this._pathArray.length - 1)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
            if(!currentArray)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                currentArray = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        pathArrayLen = this._pathArray.length - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        this._pathArray[pathArrayLen] = this._pathArray[pathArrayLen].concat(args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        len = args.length - 5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        for(i = 0; i < len; i = i + 6)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
            cp1x = parseFloat(args[i]) + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
            cp1y = parseFloat(args[i + 1]) + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
            cp2x = parseFloat(args[i + 2]) + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
            cp2y = parseFloat(args[i + 3]) + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
            x = parseFloat(args[i + 4]) + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
            y = parseFloat(args[i + 5]) + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            right = Math.max(x, Math.max(cp1x, cp2x));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
            bottom = Math.max(y, Math.max(cp1y, cp2y));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
            left = Math.min(x, Math.min(cp1x, cp2x));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
            top = Math.min(y, Math.min(cp1y, cp2y));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
            w = Math.abs(right - left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
            h = Math.abs(bottom - top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
            pts = [[this._currentX, this._currentY] , [cp1x, cp1y], [cp2x, cp2y], [x, y]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
            this._setCurveBoundingBox(pts, w, h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
            this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
            this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
     * Draws a quadratic bezier curve.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
     * @method quadraticCurveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
     * @param {Number} cpx x-coordinate for the control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
     * @param {Number} cpy y-coordinate for the control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
     * @param {Number} x x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
     * @param {Number} y y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
    quadraticCurveTo: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        this._quadraticCurveTo.apply(this, [Y.Array(arguments), false]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
     * Draws a quadratic bezier curve relative to the current position.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
     * @method quadraticCurveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
     * @param {Number} cpx x-coordinate for the control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
     * @param {Number} cpy y-coordinate for the control point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
     * @param {Number} x x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
     * @param {Number} y y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    relativeQuadraticCurveTo: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
        this._quadraticCurveTo.apply(this, [Y.Array(arguments), true]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     * Implements quadraticCurveTo methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
     * @method _quadraticCurveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
     * @param {Array} args The arguments to be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
     * @param {Boolean} relative Indicates whether or not to use relative coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
    _quadraticCurveTo: function(args, relative) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        var cpx,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            cpy,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            pathArrayLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            currentArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            w,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
            h,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            pts,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
            right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
            left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            bottom,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            command = relative ? "q" : "Q",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            relativeX = relative ? parseFloat(this._currentX) : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            relativeY = relative ? parseFloat(this._currentY) : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        if(this._pathType !== command)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            this._pathType = command;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            currentArray = [command];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
            currentArray = this._pathArray[Math.max(0, this._pathArray.length - 1)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            if(!currentArray)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
                currentArray = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        pathArrayLen = this._pathArray.length - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        this._pathArray[pathArrayLen] = this._pathArray[pathArrayLen].concat(args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        len = args.length - 3;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        for(i = 0; i < len; i = i + 4)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            cpx = parseFloat(args[i]) + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
            cpy = parseFloat(args[i + 1]) + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            x = parseFloat(args[i + 2]) + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            y = parseFloat(args[i + 3]) + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
            right = Math.max(x, cpx);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            bottom = Math.max(y, cpy);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
            left = Math.min(x, cpx);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
            top = Math.min(y, cpy);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            w = Math.abs(right - left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            h = Math.abs(bottom - top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            pts = [[this._currentX, this._currentY] , [cpx, cpy], [x, y]];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
            this._setCurveBoundingBox(pts, w, h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
     * Draws a rectangle.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
     * @method drawRect
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
     * @param {Number} x x-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
     * @param {Number} y y-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
     * @param {Number} w width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
     * @param {Number} h height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    drawRect: function(x, y, w, h) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        this.moveTo(x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        this.lineTo(x + w, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
        this.lineTo(x + w, y + h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
        this.lineTo(x, y + h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        this.lineTo(x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
     * Draws a rectangle with rounded corners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
     * @method drawRoundRect
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
     * @param {Number} x x-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
     * @param {Number} y y-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
     * @param {Number} w width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
     * @param {Number} h height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
     * @param {Number} ew width of the ellipse used to draw the rounded corners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
     * @param {Number} eh height of the ellipse used to draw the rounded corners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    drawRoundRect: function(x, y, w, h, ew, eh) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        this.moveTo(x, y + eh);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        this.lineTo(x, y + h - eh);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        this.quadraticCurveTo(x, y + h, x + ew, y + h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        this.lineTo(x + w - ew, y + h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
        this.quadraticCurveTo(x + w, y + h, x + w, y + h - eh);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        this.lineTo(x + w, y + eh);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
        this.quadraticCurveTo(x + w, y, x + w - ew, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        this.lineTo(x + ew, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        this.quadraticCurveTo(x, y, x, y + eh);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
     * Draws a circle.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
     * @method drawCircle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
     * @param {Number} x y-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
     * @param {Number} y x-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
     * @param {Number} r radius
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
	drawCircle: function(x, y, radius) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        var circum = radius * 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        this._drawingComplete = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
        this._trackSize(x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
        this._trackSize(x + circum, y + circum);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        this._pathArray.push(["M", x + radius, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
        this._pathArray.push(["A",  radius, radius, 0, 1, 0, x + radius, y + circum]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
        this._pathArray.push(["A",  radius, radius, 0, 1, 0, x + radius, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
        this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
     * Draws an ellipse.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
     * @method drawEllipse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
     * @param {Number} x x-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
     * @param {Number} y y-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
     * @param {Number} w width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
     * @param {Number} h height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
	drawEllipse: function(x, y, w, h) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        var radius = w * 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
            yRadius = h * 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
        this._drawingComplete = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        this._trackSize(x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
        this._trackSize(x + w, y + h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        this._pathArray.push(["M", x + radius, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
        this._pathArray.push(["A",  radius, yRadius, 0, 1, 0, x + radius, y + h]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
        this._pathArray.push(["A",  radius, yRadius, 0, 1, 0, x + radius, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
        this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
     * Draws a diamond.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
     * @method drawDiamond
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
     * @param {Number} x y-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
     * @param {Number} y x-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
     * @param {Number} width width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
     * @param {Number} height height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    drawDiamond: function(x, y, width, height)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        var midWidth = width * 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
            midHeight = height * 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        this.moveTo(x + midWidth, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
        this.lineTo(x + width, y + midHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
        this.lineTo(x + midWidth, y + height);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
        this.lineTo(x, y + midHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
        this.lineTo(x + midWidth, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
     * Draws a wedge.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
     * @method drawWedge
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
     * @param {Number} x x-coordinate of the wedge's center point
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
     * @param {Number} y y-coordinate of the wedge's center point
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
     * @param {Number} startAngle starting angle in degrees
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
     * @param {Number} arc sweep of the wedge. Negative values draw clockwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
     * @param {Number} radius radius of wedge. If [optional] yRadius is defined, then radius is the x radius.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
     * @param {Number} yRadius [optional] y radius for wedge.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
    drawWedge: function(x, y, startAngle, arc, radius, yRadius)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
        var segs,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
            segAngle,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            theta,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            angle,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
            angleMid,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
            ax,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            ay,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            bx,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            by,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            cx,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            cy,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
            diameter = radius * 2,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
            currentArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
            pathArrayLen;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        yRadius = yRadius || radius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        if(this._pathType !== "M")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
            this._pathType = "M";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
            currentArray = ["M"];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            currentArray = this._getCurrentArray();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
        pathArrayLen = this._pathArray.length - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        this._pathArray[pathArrayLen].push(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        this._pathArray[pathArrayLen].push(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
        // limit sweep to reasonable numbers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
        if(Math.abs(arc) > 360)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
            arc = 360;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
        // First we calculate how many segments are needed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
        // for a smooth arc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
        segs = Math.ceil(Math.abs(arc) / 45);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
        // Now calculate the sweep of each segment.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        segAngle = arc / segs;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        // The math requires radians rather than degrees. To convert from degrees
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
        // use the formula (degrees/180)*Math.PI to get radians.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        theta = -(segAngle / 180) * Math.PI;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        // convert angle startAngle to radians
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
        angle = (startAngle / 180) * Math.PI;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
        if(segs > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
            // draw a line from the center to the start of the curve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            ax = x + Math.cos(startAngle / 180 * Math.PI) * radius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
            ay = y + Math.sin(startAngle / 180 * Math.PI) * yRadius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
            this._pathType = "L";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
            pathArrayLen++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
            this._pathArray[pathArrayLen] = ["L"];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            this._pathArray[pathArrayLen].push(this._round(ax));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
            this._pathArray[pathArrayLen].push(this._round(ay));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
            pathArrayLen++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
            this._pathType = "Q";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
            this._pathArray[pathArrayLen] = ["Q"];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
            for(i = 0; i < segs; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
                angle += theta;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
                angleMid = angle - (theta / 2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
                bx = x + Math.cos(angle) * radius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                by = y + Math.sin(angle) * yRadius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                cx = x + Math.cos(angleMid) * (radius / Math.cos(theta / 2));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                cy = y + Math.sin(angleMid) * (yRadius / Math.cos(theta / 2));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                this._pathArray[pathArrayLen].push(this._round(cx));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                this._pathArray[pathArrayLen].push(this._round(cy));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
                this._pathArray[pathArrayLen].push(this._round(bx));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
                this._pathArray[pathArrayLen].push(this._round(by));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
        this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
        this._trackSize(diameter, diameter);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
     * Draws a line segment using the current line style from the current drawing position to the specified x and y coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
     * @method lineTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
     * @param {Number} point1 x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
     * @param {Number} point2 y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    lineTo: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        this._lineTo.apply(this, [Y.Array(arguments), false]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
     * Draws a line segment using the current line style from the current drawing position to the relative x and y coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
     * @method relativeLineTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
     * @param {Number} point1 x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
     * @param {Number} point2 y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    relativeLineTo: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        this._lineTo.apply(this, [Y.Array(arguments), true]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
     * Implements lineTo methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
     * @method _lineTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
     * @param {Array} args The arguments to be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
     * @param {Boolean} relative Indicates whether or not to use relative coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    _lineTo: function(args, relative) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
        var point1 = args[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
            pathArrayLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
            currentArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
            x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
            y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
            command = relative ? "l" : "L",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
            relativeX = relative ? parseFloat(this._currentX) : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
            relativeY = relative ? parseFloat(this._currentY) : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
        this._shapeType = "path";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
        len = args.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
        if(this._pathType !== command)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
            this._pathType = command;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
            currentArray = [command];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
            this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
            currentArray = this._getCurrentArray();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
        pathArrayLen = this._pathArray.length - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
        if (typeof point1 === 'string' || typeof point1 === 'number') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
            for (i = 0; i < len; i = i + 2) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
                x = parseFloat(args[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                y = parseFloat(args[i + 1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                this._pathArray[pathArrayLen].push(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                this._pathArray[pathArrayLen].push(y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
                x = x + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                y = y + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
                this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
                this._trackSize.apply(this, [x, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
            for (i = 0; i < len; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
                x = parseFloat(args[i][0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
                y = parseFloat(args[i][1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
                this._pathArray[pathArrayLen].push(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
                this._pathArray[pathArrayLen].push(y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
                this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
                this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
                x = x + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                y = y + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
                this._trackSize.apply(this, [x, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
     * Moves the current drawing position to specified x and y coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
     * @method moveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
     * @param {Number} x x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
     * @param {Number} y y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
    moveTo: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
        this._moveTo.apply(this, [Y.Array(arguments), false]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
     * Moves the current drawing position relative to specified x and y coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
     * @method relativeMoveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
     * @param {Number} x x-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
     * @param {Number} y y-coordinate for the end point.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
    relativeMoveTo: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        this._moveTo.apply(this, [Y.Array(arguments), true]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
     * Implements moveTo methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
     * @method _moveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
     * @param {Array} args The arguments to be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
     * @param {Boolean} relative Indicates whether or not to use relative coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
    _moveTo: function(args, relative) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        var pathArrayLen,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
            currentArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
            x = parseFloat(args[0]),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
            y = parseFloat(args[1]),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
            command = relative ? "m" : "M",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
            relativeX = relative ? parseFloat(this._currentX) : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
            relativeY = relative ? parseFloat(this._currentY) : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
        this._pathArray = this._pathArray || [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
        this._pathType = command;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
        currentArray = [command];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
        this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
        pathArrayLen = this._pathArray.length - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
        this._pathArray[pathArrayLen] = this._pathArray[pathArrayLen].concat([x, y]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
        x = x + relativeX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
        y = y + relativeY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
        this._currentX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
        this._currentY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
        this._trackSize(x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
     * Completes a drawing operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
     * @method end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
    end: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
        this._closePath();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
     * Clears the path.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
     * @method clear
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
    clear: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
        this._currentX = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        this._currentY = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
        this._width = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
        this._height = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
        this._left = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        this._right = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
        this._top = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
        this._bottom = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
        this._pathArray = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
        this._path = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
        this._pathType = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
     * Draws the path.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
     * @method _closePath
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
    _closePath: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
        var pathArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
            segmentArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
            pathType,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
            val,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
            path = "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
            node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
            left = parseFloat(this._left),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
            top = parseFloat(this._top),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
            fill = this.get("fill");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
        if(this._pathArray)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
            pathArray = this._pathArray.concat();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
            while(pathArray && pathArray.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
                segmentArray = pathArray.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
                len = segmentArray.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
                pathType = segmentArray[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
                if(pathType === "A")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
                    path += pathType + segmentArray[1] + "," + segmentArray[2];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
                else if(pathType === "z" || pathType === "Z")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
                    path += " z ";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
                else if(pathType === "C" || pathType === "c")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
                    path += pathType + (segmentArray[1] - left)+ "," + (segmentArray[2] - top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
                else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
                    path += " " + pathType + parseFloat(segmentArray[1] - left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
                switch(pathType)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
                    case "L" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
                    case "l" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
                    case "M" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
                    case "m" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
                    case "Q" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
                    case "q" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
                        for(i = 2; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
                            val = (i % 2 === 0) ? top : left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
                            val = segmentArray[i] - val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
                            path += ", " + parseFloat(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
                    case "A" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
                        val = " " + parseFloat(segmentArray[3]) + " " + parseFloat(segmentArray[4]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
                        val += "," + parseFloat(segmentArray[5]) + " " + parseFloat(segmentArray[6] - left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
                        val += "," + parseFloat(segmentArray[7] - top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
                        path += " " + val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
                    case "C" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
                    case "c" :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
                        for(i = 3; i < len - 1; i = i + 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
                        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
                            val = parseFloat(segmentArray[i] - left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
                            val = val + ", ";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
                            val = val + parseFloat(segmentArray[i + 1] - top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
                            path += " " + val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
            if(fill && fill.color)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
                path += 'z';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
            Y.Lang.trim(path);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
            if(path)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
                node.setAttribute("d", path);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
            this._path = path;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
            this._fillChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
            this._strokeChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
            this._updateTransform();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
     * Ends a fill and stroke
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
     * @method closePath
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
    closePath: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
        this._pathArray.push(["z"]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
     * Returns the current array of drawing commands.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
     * @method _getCurrentArray
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
     * @return Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
    _getCurrentArray: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
        var currentArray = this._pathArray[Math.max(0, this._pathArray.length - 1)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
        if(!currentArray)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
            currentArray = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
            this._pathArray.push(currentArray);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
        return currentArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
     * Returns the points on a curve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
     * @method getBezierData
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
     * @param Array points Array containing the begin, end and control points of a curve.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
     * @param Number t The value for incrementing the next set of points.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
     * @return Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
    getBezierData: function(points, t) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
        var n = points.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
            tmp = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
            j;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
        for (i = 0; i < n; ++i){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
            tmp[i] = [points[i][0], points[i][1]]; // save input
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
        for (j = 1; j < n; ++j) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
            for (i = 0; i < n - j; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
                tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
                tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
        return [ tmp[0][0], tmp[0][1] ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
     * Calculates the bounding box for a curve
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
     * @method _setCurveBoundingBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
     * @param Array pts Array containing points for start, end and control points of a curve.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
     * @param Number w Width used to calculate the number of points to describe the curve.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
     * @param Number h Height used to calculate the number of points to describe the curve.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
    _setCurveBoundingBox: function(pts, w, h)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
        var i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
            left = this._currentX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
            right = left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
            top = this._currentY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
            bottom = top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
            len = Math.round(Math.sqrt((w * w) + (h * h))),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
            t = 1/len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
            xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
        for(i = 0; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            xy = this.getBezierData(pts, t * i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
            left = isNaN(left) ? xy[0] : Math.min(xy[0], left);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
            right = isNaN(right) ? xy[0] : Math.max(xy[0], right);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
            top = isNaN(top) ? xy[1] : Math.min(xy[1], top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
            bottom = isNaN(bottom) ? xy[1] : Math.max(xy[1], bottom);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
        left = Math.round(left * 10)/10;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
        right = Math.round(right * 10)/10;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
        top = Math.round(top * 10)/10;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
        bottom = Math.round(bottom * 10)/10;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
        this._trackSize(right, bottom);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
        this._trackSize(left, top);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
     * Updates the size of the graphics object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
     * @method _trackSize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
     * @param {Number} w width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
     * @param {Number} h height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
    _trackSize: function(w, h) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
        if (w > this._right) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
            this._right = w;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
        if(w < this._left)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
            this._left = w;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
        if (h < this._top)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
            this._top = h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
        if (h > this._bottom)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
            this._bottom = h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
        this._width = this._right - this._left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
        this._height = this._bottom - this._top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
Y.SVGDrawing = SVGDrawing;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Shape.html">`Shape`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
 * `SVGShape` is not intended to be used directly. Instead, use the <a href="Shape.html">`Shape`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Shape.html">`Shape`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
 * class will point to the `SVGShape` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
 * @class SVGShape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
 * @param {Object} cfg (optional) Attribute configs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
SVGShape = function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
    this._transforms = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
    this.matrix = new Y.Matrix();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
    this._normalizedMatrix = new Y.Matrix();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
    SVGShape.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
SVGShape.NAME = "shape";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
Y.extend(SVGShape, Y.GraphicBase, Y.mix({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
     * Storage for x attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
     * @property _x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
    _x: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
     * Storage for y attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
     * @property _y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
    _y: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
     * Init method, invoked during construction.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
     * Calls `initializer` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
     * @method init
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
	init: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
		this.initializer.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
	 * Initializes the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
	 * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
	initializer: function(cfg)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
		var host = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
            graphic = cfg.graphic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
            data = this.get("data");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
		host.createNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
		if(graphic)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
            host._setGraphic(graphic);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
        if(data)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
            host._parsePathData(data);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
        host._updateHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
     * Set the Graphic instance for the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
     * @method _setGraphic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
     * @param {Graphic | Node | HTMLElement | String} render This param is used to determine the graphic instance. If it is a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
     * `Graphic` instance, it will be assigned to the `graphic` attribute. Otherwise, a new Graphic instance will be created
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
     * and rendered into the dom element that the render represents.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
    _setGraphic: function(render)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
        var graphic;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
        if(render instanceof Y.SVGGraphic)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
            this._graphic = render;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
            render = Y.one(render);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
            graphic = new Y.SVGGraphic({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
                render: render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
            graphic._appendShape(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
            this._graphic = graphic;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
	 * Add a class name to each node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
	 * @method addClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
	 * @param {String} className the class name to add to the node's class attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
	addClass: function(className)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
        var node = this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
		node.className.baseVal = Y_LANG.trim([node.className.baseVal, className].join(' '));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
	 * Removes a class name from each node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
	 * @method removeClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
	 * @param {String} className the class name to remove from the node's class attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
	removeClass: function(className)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
		var node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
			classString = node.className.baseVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
		classString = classString.replace(new RegExp(className + ' '), className).replace(new RegExp(className), '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
		node.className.baseVal = classString;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
	 * Gets the current position of the node in page coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
	 * @method getXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
	 * @return Array The XY position of the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
	getXY: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
		var graphic = this._graphic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
			parentXY = graphic.getXY(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
			x = this._x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
			y = this._y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
		return [parentXY[0] + x, parentXY[1] + y];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
	 * Set the position of the shape in page coordinates, regardless of how the node is positioned.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
	 * @method setXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
	 * @param {Array} Contains x & y values for new position (coordinates are page-based)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
	setXY: function(xy)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
		var graphic = this._graphic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
			parentXY = graphic.getXY();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
		this._x = xy[0] - parentXY[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
		this._y = xy[1] - parentXY[1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
        this.set("transform", this.get("transform"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
	 * Determines whether the node is an ancestor of another HTML element in the DOM hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
	 * @method contains
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
	 * @param {SVGShape | HTMLElement} needle The possible node or descendent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
	 * @return Boolean Whether or not this shape is the needle or its ancestor.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
	contains: function(needle)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
		return needle === Y.one(this.node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
	 * Compares nodes to determine if they match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
	 * Node instances can be compared to each other and/or HTMLElements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
	 * @method compareTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
	 * @param {HTMLElement | Node} refNode The reference node to compare to the node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
	 * @return {Boolean} True if the nodes match, false if they do not.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
	compareTo: function(refNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
		var node = this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
		return node === refNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
	 * Test if the supplied node matches the supplied selector.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
	 * @method test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
	 * @param {String} selector The CSS selector to test against.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
	 * @return Boolean Wheter or not the shape matches the selector.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
	test: function(selector)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
		return Y.Selector.test(this.node, selector);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
	 * Value function for fill attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
	 * @method _getDefaultFill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
	 * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
	_getDefaultFill: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
		return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
			type: "solid",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
			opacity: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
			cx: 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
			cy: 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
			fx: 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
			fy: 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
			r: 0.5
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
		};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
	 * Value function for stroke attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
	 * @method _getDefaultStroke
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
	 * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
	_getDefaultStroke: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
		return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
			weight: 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
			dashstyle: "none",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
			color: "#000",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
			opacity: 1.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
		};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
	 * Creates the dom node for the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
     * @method createNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
	 * @return HTMLElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
	createNode: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
		var host = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
            node = DOCUMENT.createElementNS("http://www.w3.org/2000/svg", "svg:" + this._type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
			id = host.get("id"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
            name = host.name,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
            concat = host._camelCaseConcat,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
			pointerEvents = host.get("pointerEvents");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
		host.node = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
		host.addClass(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
            _getClassName(SHAPE) +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
            " " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
            _getClassName(concat(IMPLEMENTATION, SHAPE)) +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
            " " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
            _getClassName(name) +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
            " " +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
            _getClassName(concat(IMPLEMENTATION, name))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
        );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
        if(id)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
			node.setAttribute("id", id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
		if(pointerEvents)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
			node.setAttribute("pointer-events", pointerEvents);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
        if(!host.get("visible"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
            Y.one(node).setStyle("visibility", "hidden");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
     * Overrides default `on` method. Checks to see if its a dom interaction event. If so,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
     * return an event attached to the `node` element. If not, return the normal functionality.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
     * @method on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
     * @param {String} type event type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
     * @param {Object} callback function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
	on: function(type, fn)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
		if(Y.Node.DOM_EVENTS[type])
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
			return Y.one("#" +  this.get("id")).on(type, fn);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
		return Y.on.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
	 * Adds a stroke to the shape node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
	 * @method _strokeChangeHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
	_strokeChangeHandler: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
		var node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
			stroke = this.get("stroke"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
			strokeOpacity,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
			dashstyle,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
			dash,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
			linejoin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
		if(stroke && stroke.weight && stroke.weight > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
			linejoin = stroke.linejoin || "round";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
			strokeOpacity = parseFloat(stroke.opacity);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
			dashstyle = stroke.dashstyle || "none";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
			dash = Y_LANG.isArray(dashstyle) ? dashstyle.toString() : dashstyle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
			stroke.color = stroke.color || "#000000";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
			stroke.weight = stroke.weight || 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
			stroke.opacity = Y_LANG.isNumber(strokeOpacity) ? strokeOpacity : 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
			stroke.linecap = stroke.linecap || "butt";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
			node.setAttribute("stroke-dasharray", dash);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
			node.setAttribute("stroke", stroke.color);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
			node.setAttribute("stroke-linecap", stroke.linecap);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
			node.setAttribute("stroke-width",  stroke.weight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
			node.setAttribute("stroke-opacity", stroke.opacity);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
			if(linejoin === "round" || linejoin === "bevel")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
				node.setAttribute("stroke-linejoin", linejoin);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
			else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
				linejoin = parseInt(linejoin, 10);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
				if(Y_LANG.isNumber(linejoin))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
				{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
					node.setAttribute("stroke-miterlimit",  Math.max(linejoin, 1));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
					node.setAttribute("stroke-linejoin", "miter");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
				}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
		else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
			node.setAttribute("stroke", "none");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
	 * Adds a fill to the shape node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
	 * @method _fillChangeHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
	_fillChangeHandler: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
		var node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
			fill = this.get("fill"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
			fillOpacity,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
			type;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
		if(fill)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
			type = fill.type;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
			if(type === "linear" || type === "radial")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
				this._setGradientFill(fill);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
				node.setAttribute("fill", "url(#grad" + this.get("id") + ")");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
			else if(!fill.color)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
				node.setAttribute("fill", "none");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
			else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
                fillOpacity = parseFloat(fill.opacity);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
				fillOpacity = Y_LANG.isNumber(fillOpacity) ? fillOpacity : 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
				node.setAttribute("fill", fill.color);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
				node.setAttribute("fill-opacity", fillOpacity);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
		else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
			node.setAttribute("fill", "none");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
	 * Creates a gradient fill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
	 * @method _setGradientFill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
	 * @param {String} type gradient type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
	_setGradientFill: function(fill) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
		var offset,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
			opacity,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
			color,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
			stopNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
            newStop,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
			isNumber = Y_LANG.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
			graphic = this._graphic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
			type = fill.type,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
			gradientNode = graphic.getGradientNode("grad" + this.get("id"), type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
			stops = fill.stops,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
			w = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
			h = this.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
			rotation = fill.rotation || 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
			radCon = Math.PI/180,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
            tanRadians = parseFloat(parseFloat(Math.tan(rotation * radCon)).toFixed(8)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
			len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
			def,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
			stop,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
			x1 = "0%",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
			x2 = "100%",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
			y1 = "0%",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
			y2 = "0%",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
			cx = fill.cx,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
			cy = fill.cy,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
			fx = fill.fx,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
			fy = fill.fy,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
			r = fill.r,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
            stopNodes = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
		if(type === "linear")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
            cx = w/2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
            cy = h/2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
            if(Math.abs(tanRadians) * w/2 >= h/2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
                if(rotation < 180)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
                    y1 = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
                    y2 = h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
                else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
                    y1 = h;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
                    y2 = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
                x1 = cx - ((cy - y1)/tanRadians);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
                x2 = cx - ((cy - y2)/tanRadians);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
                if(rotation > 90 && rotation < 270)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
                    x1 = w;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
                    x2 = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
                else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
                    x1 = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
                    x2 = w;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
                y1 = ((tanRadians * (cx - x1)) - cy) * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
                y2 = ((tanRadians * (cx - x2)) - cy) * -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
            x1 = Math.round(100 * x1/w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
            x2 = Math.round(100 * x2/w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
            y1 = Math.round(100 * y1/h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
            y2 = Math.round(100 * y2/h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
            //Set default value if not valid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
            x1 = isNumber(x1) ? x1 : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
            x2 = isNumber(x2) ? x2 : 100;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
            y1 = isNumber(y1) ? y1 : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
            y2 = isNumber(y2) ? y2 : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
            gradientNode.setAttribute("spreadMethod", "pad");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
			gradientNode.setAttribute("width", w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
			gradientNode.setAttribute("height", h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
            gradientNode.setAttribute("x1", x1 + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
            gradientNode.setAttribute("x2", x2 + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
            gradientNode.setAttribute("y1", y1 + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
            gradientNode.setAttribute("y2", y2 + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
		else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
			gradientNode.setAttribute("cx", (cx * 100) + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
			gradientNode.setAttribute("cy", (cy * 100) + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
			gradientNode.setAttribute("fx", (fx * 100) + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
			gradientNode.setAttribute("fy", (fy * 100) + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
			gradientNode.setAttribute("r", (r * 100) + "%");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
		len = stops.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
		def = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
        for(i = 0; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
            if(this._stops && this._stops.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
                stopNode = this._stops.shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
                newStop = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
                stopNode = graphic._createGraphicNode("stop");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
                newStop = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
			stop = stops[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
			opacity = stop.opacity;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
			color = stop.color;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
			offset = stop.offset || i/(len - 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
			offset = Math.round(offset * 100) + "%";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
			opacity = isNumber(opacity) ? opacity : 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
			opacity = Math.max(0, Math.min(1, opacity));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
			def = (i + 1) / len;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
			stopNode.setAttribute("offset", offset);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
			stopNode.setAttribute("stop-color", color);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
			stopNode.setAttribute("stop-opacity", opacity);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
			if(newStop)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
                gradientNode.appendChild(stopNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
            stopNodes.push(stopNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
        while(this._stops && this._stops.length > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
            gradientNode.removeChild(this._stops.shift());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
        this._stops = stopNodes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
    _stops: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
     * Sets the value of an attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
     * @method set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
     * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
     * be passed in to set multiple attributes at once.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
     * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
     * the name param.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
	set: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
		var host = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
		AttributeLite.prototype.set.apply(host, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
		if(host.initialized)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
			host._updateHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
	 * Specifies a 2d translation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
	 * @method translate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
	 * @param {Number} x The value to transate on the x-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
	 * @param {Number} y The value to translate on the y-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
	translate: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
		this._addTransform("translate", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
	 * Translates the shape along the x-axis. When translating x and y coordinates,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
	 * use the `translate` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
	 * @method translateX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
	 * @param {Number} x The value to translate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
	translateX: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
        this._addTransform("translateX", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
	 * Translates the shape along the y-axis. When translating x and y coordinates,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
	 * use the `translate` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
	 * @method translateY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
	 * @param {Number} y The value to translate.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
	translateY: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
        this._addTransform("translateY", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
     * Skews the shape around the x-axis and y-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
     * @method skew
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
     * @param {Number} x The value to skew on the x-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
     * @param {Number} y The value to skew on the y-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
    skew: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
        this._addTransform("skew", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
	 * Skews the shape around the x-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
	 * @method skewX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
	 * @param {Number} x x-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
    skewX: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
        this._addTransform("skewX", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
	 * Skews the shape around the y-axis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
	 * @method skewY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
	 * @param {Number} y y-coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
    skewY: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
        this._addTransform("skewY", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
	 * Rotates the shape clockwise around it transformOrigin.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
	 * @method rotate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
	 * @param {Number} deg The degree of the rotation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
    rotate: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
        this._addTransform("rotate", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
	 * Specifies a 2d scaling operation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
	 * @method scale
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
	 * @param {Number} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
    scale: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
        this._addTransform("scale", arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
     * Adds a transform to the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
     * @method _addTransform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
     * @param {String} type The transform being applied.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
     * @param {Array} args The arguments for the transform.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
	_addTransform: function(type, args)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
        args = Y.Array(args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
        this._transform = Y_LANG.trim(this._transform + " " + type + "(" + args.join(", ") + ")");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
        args.unshift(type);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
        this._transforms.push(args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
        if(this.initialized)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
            this._updateTransform();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
     * Applies all transforms.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
     * @method _updateTransform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
	_updateTransform: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
		var isPath = this._type === "path",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
            node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
			key,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
			transform,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
			transformOrigin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
			x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
			y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1568
            tx,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1569
            ty,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1570
            matrix = this.matrix,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1571
            normalizedMatrix = this._normalizedMatrix,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
            len = this._transforms.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
        if(isPath || (this._transforms && this._transforms.length > 0))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1576
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1577
            x = this._x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1578
            y = this._y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1579
            transformOrigin = this.get("transformOrigin");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1580
            tx = x + (transformOrigin[0] * this.get("width"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1581
            ty = y + (transformOrigin[1] * this.get("height"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
            //need to use translate for x/y coords
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1583
            if(isPath)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1584
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1585
                //adjust origin for custom shapes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1586
                if(!(this instanceof Y.SVGPath))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
                    tx = this._left + (transformOrigin[0] * this.get("width"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
                    ty = this._top + (transformOrigin[1] * this.get("height"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
                normalizedMatrix.init({dx: x + this._left, dy: y + this._top});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
            normalizedMatrix.translate(tx, ty);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
            for(i = 0; i < len; ++i)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
                key = this._transforms[i].shift();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
                if(key)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
                    normalizedMatrix[key].apply(normalizedMatrix, this._transforms[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
                    matrix[key].apply(matrix, this._transforms[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1602
                if(isPath)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1603
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1604
                    this._transforms[i].unshift(key);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1605
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
            normalizedMatrix.translate(-tx, -ty);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
            transform = "matrix(" + normalizedMatrix.a + "," +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
                            normalizedMatrix.b + "," +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
                            normalizedMatrix.c + "," +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
                            normalizedMatrix.d + "," +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
                            normalizedMatrix.dx + "," +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
                            normalizedMatrix.dy + ")";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
        this._graphic.addToRedrawQueue(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
        if(transform)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
            node.setAttribute("transform", transform);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
        if(!isPath)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1622
            this._transforms = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
	 * Draws the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
	 * @method _draw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1631
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1632
	_draw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1633
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1634
		var node = this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
		node.setAttribute("width", this.get("width"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
		node.setAttribute("height", this.get("height"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
		node.setAttribute("x", this._x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
		node.setAttribute("y", this._y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1639
		node.style.left = this._x + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1640
		node.style.top = this._y + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1641
		this._fillChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1642
		this._strokeChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1643
		this._updateTransform();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1644
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1645
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
     * Updates `Shape` based on attribute changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1649
     * @method _updateHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1650
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1651
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1652
	_updateHandler: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
		this._draw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1658
     * Storage for the transform attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1659
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1660
     * @property _transform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1661
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1662
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1663
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1664
    _transform: "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
	 * Returns the bounds for a shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
     * Calculates the a new bounding box from the original corner coordinates (base on size and position) and the transform matrix.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1670
     * The calculated bounding box is used by the graphic instance to calculate its viewBox.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1671
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1672
	 * @method getBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
	 * @return Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
	getBounds: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
		var type = this._type,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
			stroke = this.get("stroke"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
            w = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
			h = this.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
			x = type === "path" ? 0 : this._x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
			y = type === "path" ? 0 : this._y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
            wt = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
        if(type !== "path")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
            if(stroke && stroke.weight)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
                wt = stroke.weight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1689
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1690
            w = (x + w + wt) - (x - wt);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1691
            h = (y + h + wt) - (y - wt);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1692
            x -= wt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1693
            y -= wt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1694
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1695
		return this._normalizedMatrix.getContentRect(w, h, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1696
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1697
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1698
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1699
     * Places the shape above all other shapes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1700
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1701
     * @method toFront
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1702
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1703
    toFront: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1704
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1705
        var graphic = this.get("graphic");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1706
        if(graphic)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1707
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1708
            graphic._toFront(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1709
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1710
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1711
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1712
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1713
     * Places the shape underneath all other shapes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1714
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1715
     * @method toFront
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1716
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1717
    toBack: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1718
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1719
        var graphic = this.get("graphic");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1720
        if(graphic)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1721
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1722
            graphic._toBack(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1723
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1724
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1725
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1726
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1727
     * Parses path data string and call mapped methods.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1728
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1729
     * @method _parsePathData
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1730
     * @param {String} val The path data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1731
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1732
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1733
    _parsePathData: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1734
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1735
        var method,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1736
            methodSymbol,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1737
            args,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1738
            commandArray = Y.Lang.trim(val.match(SPLITPATHPATTERN)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1739
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1740
            len,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1741
            str,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1742
            symbolToMethod = this._pathSymbolToMethod;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1743
        if(commandArray)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1744
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1745
            this.clear();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1746
            len = commandArray.length || 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1747
            for(i = 0; i < len; i = i + 1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1748
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1749
                str = commandArray[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1750
                methodSymbol = str.substr(0, 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1751
                args = str.substr(1).match(SPLITARGSPATTERN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1752
                method = symbolToMethod[methodSymbol];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1753
                if(method)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1754
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1755
                    if(args)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1756
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1757
                        this[method].apply(this, args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1758
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1759
                    else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1760
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1761
                        this[method].apply(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1762
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1763
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1764
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1765
            this.end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1766
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1767
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1768
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1769
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1770
     * Destroys the shape instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1771
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1772
     * @method destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1773
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1774
    destroy: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1775
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1776
        var graphic = this.get("graphic");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1777
        if(graphic)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1778
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1779
            graphic.removeShape(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1780
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1781
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1782
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1783
            this._destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1784
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1785
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1786
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1787
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1788
     *  Implementation for shape destruction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1789
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1790
     *  @method destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1791
     *  @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1792
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1793
    _destroy: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1794
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1795
        if(this.node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1796
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1797
            Y.Event.purgeElement(this.node, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1798
            if(this.node.parentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1799
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1800
                this.node.parentNode.removeChild(this.node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1801
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1802
            this.node = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1803
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1804
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1805
 }, Y.SVGDrawing.prototype));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1806
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1807
SVGShape.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1808
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1809
	 * 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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1810
	 * fraction of the shape's corresponding bounding box dimension. The default value is [0.5, 0.5].
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1811
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1812
	 * @config transformOrigin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1813
	 * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1814
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1815
	transformOrigin: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1816
		valueFn: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1817
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1818
			return [0.5, 0.5];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1819
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1820
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1821
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1822
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1823
     * <p>A string containing, in order, transform operations applied to the shape instance. The `transform` string can contain the following values:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1824
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1825
     *    <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1826
     *        <dt>rotate</dt><dd>Rotates the shape clockwise around it transformOrigin.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1827
     *        <dt>translate</dt><dd>Specifies a 2d translation.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1828
     *        <dt>skew</dt><dd>Skews the shape around the x-axis and y-axis.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1829
     *        <dt>scale</dt><dd>Specifies a 2d scaling operation.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1830
     *        <dt>translateX</dt><dd>Translates the shape along the x-axis.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1831
     *        <dt>translateY</dt><dd>Translates the shape along the y-axis.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1832
     *        <dt>skewX</dt><dd>Skews the shape around the x-axis.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1833
     *        <dt>skewY</dt><dd>Skews the shape around the y-axis.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1834
     *        <dt>matrix</dt><dd>Specifies a 2D transformation matrix comprised of the specified six values.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1835
     *    </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1836
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1837
     * <p>Applying transforms through the transform attribute will reset the transform matrix and apply a new transform. The shape class also contains
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1838
     * corresponding methods for each transform that will apply the transform to the current matrix. The below code illustrates how you might use the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1839
     * `transform` attribute to instantiate a recangle with a rotation of 45 degrees.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1840
            var myRect = new Y.Rect({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1841
                type:"rect",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1842
                width: 50,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1843
                height: 40,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1844
                transform: "rotate(45)"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1845
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1846
     * <p>The code below would apply `translate` and `rotate` to an existing shape.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1847
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1848
        myRect.set("transform", "translate(40, 50) rotate(45)");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1849
	 * @config transform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1850
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1851
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1852
	transform: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1853
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1854
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1855
            this.matrix.init();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1856
            this._normalizedMatrix.init();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1857
            this._transforms = this.matrix.getTransformArray(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1858
            this._transform = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1859
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1860
		},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1861
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1862
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1863
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1864
            return this._transform;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1865
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1866
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1867
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1868
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1869
	 * Unique id for class instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1870
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1871
	 * @config id
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1872
	 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1873
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1874
	id: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1875
		valueFn: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1876
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1877
			return Y.guid();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1878
		},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1879
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1880
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1881
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1882
			var node = this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1883
			if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1884
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1885
				node.setAttribute("id", val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1886
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1887
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1888
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1889
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1890
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1891
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1892
	 * Indicates the x position of shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1893
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1894
	 * @config x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1895
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1896
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1897
	x: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1898
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1899
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1900
            return this._x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1901
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1902
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1903
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1904
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1905
            var transform = this.get("transform");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1906
            this._x = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1907
            if(transform)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1908
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1909
                this.set("transform", transform);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1910
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1911
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1912
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1913
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1914
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1915
	 * Indicates the y position of shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1916
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1917
	 * @config y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1918
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1919
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1920
	y: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1921
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1922
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1923
            return this._y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1924
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1925
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1926
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1927
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1928
            var transform = this.get("transform");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1929
            this._y = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1930
            if(transform)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1931
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1932
                this.set("transform", transform);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1933
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1934
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1935
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1936
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1937
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1938
	 * Indicates the width of the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1939
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1940
	 * @config width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1941
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1942
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1943
	width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1944
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1945
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1946
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1947
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1948
	 * Indicates the height of the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1949
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1950
	 * @config height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1951
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1952
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1953
	height: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1954
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1955
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1956
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1957
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1958
	 * Indicates whether the shape is visible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1959
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1960
	 * @config visible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1961
	 * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1962
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1963
	visible: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1964
		value: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1965
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1966
		setter: function(val){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1967
			var visibility = val ? "visible" : "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1968
			if(this.node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1969
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1970
                this.node.style.visibility = visibility;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1971
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1972
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1973
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1974
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1975
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1976
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1977
	 * Contains information about the fill of the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1978
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1979
     *      <dt>color</dt><dd>The color of the fill.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1980
     *      <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the fill. The default value is 1.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1981
     *      <dt>type</dt><dd>Type of fill.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1982
     *          <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1983
     *              <dt>solid</dt><dd>Solid single color fill. (default)</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1984
     *              <dt>linear</dt><dd>Linear gradient fill.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1985
     *              <dt>radial</dt><dd>Radial gradient fill.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1986
     *          </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1987
     *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1988
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1989
     *  <p>If a `linear` or `radial` is specified as the fill type. The following additional property is used:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1990
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1991
     *      <dt>stops</dt><dd>An array of objects containing the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1992
     *          <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1993
     *              <dt>color</dt><dd>The color of the stop.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1994
     *              <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the stop. The default value is 1.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1995
     *              Note: No effect for IE 6 - 8</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1996
     *              <dt>offset</dt><dd>Number between 0 and 1 indicating where the color stop is positioned.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1997
     *          </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1998
     *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1999
     *      <p>Linear gradients also have the following property:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2000
     *      <dt>rotation</dt><dd>Linear gradients flow left to right by default. The rotation property allows you to change the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2001
     *      flow by rotation. (e.g. A rotation of 180 would make the gradient pain from right to left.)</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2002
     *      <p>Radial gradients have the following additional properties:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2003
     *      <dt>r</dt><dd>Radius of the gradient circle.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2004
     *      <dt>fx</dt><dd>Focal point x-coordinate of the gradient.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2005
     *      <dt>fy</dt><dd>Focal point y-coordinate of the gradient.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2006
     *      <dt>cx</dt><dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2007
     *          <p>The x-coordinate of the center of the gradient circle. Determines where the color stop begins. The default value 0.5.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2008
     *          <p><strong>Note: </strong>Currently, this property is not implemented for corresponding `CanvasShape` and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2009
     *          `VMLShape` classes which are used on Android or IE 6 - 8.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2010
     *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2011
     *      <dt>cy</dt><dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2012
     *          <p>The y-coordinate of the center of the gradient circle. Determines where the color stop begins. The default value 0.5.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2013
     *          <p><strong>Note: </strong>Currently, this property is not implemented for corresponding `CanvasShape` and `VMLShape`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2014
     *          classes which are used on Android or IE 6 - 8.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2015
     *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2016
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2017
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2018
	 * @config fill
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2019
	 * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2020
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2021
	fill: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2022
		valueFn: "_getDefaultFill",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2023
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2024
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2025
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2026
			var fill,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2027
				tmpl = this.get("fill") || this._getDefaultFill();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2028
			fill = (val) ? Y.merge(tmpl, val) : null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2029
			if(fill && fill.color)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2030
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2031
				if(fill.color === undefined || fill.color === "none")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2032
				{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2033
					fill.color = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2034
				}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2035
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2036
			return fill;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2037
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2038
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2039
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2040
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2041
	 * Contains information about the stroke of the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2042
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2043
     *      <dt>color</dt><dd>The color of the stroke.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2044
     *      <dt>weight</dt><dd>Number that indicates the width of the stroke.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2045
     *      <dt>opacity</dt><dd>Number between 0 and 1 that indicates the opacity of the stroke. The default value is 1.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2046
     *      <dt>dashstyle</dt>Indicates whether to draw a dashed stroke. When set to "none", a solid stroke is drawn. When set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2047
     *      to an array, the first index indicates the length of the dash. The second index indicates the length of gap.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2048
     *      <dt>linecap</dt><dd>Specifies the linecap for the stroke. The following values can be specified:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2049
     *          <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2050
     *              <dt>butt (default)</dt><dd>Specifies a butt linecap.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2051
     *              <dt>square</dt><dd>Specifies a sqare linecap.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2052
     *              <dt>round</dt><dd>Specifies a round linecap.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2053
     *          </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2054
     *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2055
     *      <dt>linejoin</dt><dd>Specifies a linejoin for the stroke. The following values can be specified:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2056
     *          <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2057
     *              <dt>round (default)</dt><dd>Specifies that the linejoin will be round.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2058
     *              <dt>bevel</dt><dd>Specifies a bevel for the linejoin.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2059
     *              <dt>miter limit</dt><dd>An integer specifying the miter limit of a miter linejoin. If you want to specify a linejoin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2060
     *              of miter, you simply specify the limit as opposed to having separate miter and miter limit values.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2061
     *          </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2062
     *      </dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2063
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2064
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2065
	 * @config stroke
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2066
	 * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2067
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2068
	stroke: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2069
		valueFn: "_getDefaultStroke",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2070
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2071
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2072
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2073
			var tmpl = this.get("stroke") || this._getDefaultStroke(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2074
                wt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2075
            if(val && val.hasOwnProperty("weight"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2076
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2077
                wt = parseInt(val.weight, 10);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2078
                if(!isNaN(wt))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2079
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2080
                    val.weight = wt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2081
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2082
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2083
            return (val) ? Y.merge(tmpl, val) : null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2084
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2085
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2086
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2087
	// Only implemented in SVG
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2088
	// Determines whether the instance will receive mouse events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2089
	//
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2090
	// @config pointerEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2091
	// @type string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2092
	//
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2093
	pointerEvents: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2094
		valueFn: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2095
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2096
			var val = "visiblePainted",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2097
				node = this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2098
			if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2099
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2100
				node.setAttribute("pointer-events", val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2101
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2102
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2103
		},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2105
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2106
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2107
			var node = this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2108
			if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2109
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2110
				node.setAttribute("pointer-events", val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2111
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2112
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2113
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2114
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2116
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2117
	 * Dom node for the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2118
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2119
	 * @config node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2120
	 * @type HTMLElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2121
	 * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2122
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2123
	node: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2124
		readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2126
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2127
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2128
            return this.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2129
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2130
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2132
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2133
     * Represents an SVG Path string. This will be parsed and added to shape's API to represent the SVG data across all
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2134
     * implementations. Note that when using VML or SVG implementations, part of this content will be added to the DOM using
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2135
     * respective VML/SVG attributes. If your content comes from an untrusted source, you will need to ensure that no
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2136
     * malicious code is included in that content.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2137
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2138
     * @config data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2139
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2140
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2141
    data: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2142
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2143
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2144
            if(this.get("node"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2145
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2146
                this._parsePathData(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2147
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2148
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2149
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2150
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2152
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2153
	 * Reference to the parent graphic instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2154
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2155
	 * @config graphic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2156
	 * @type SVGGraphic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2157
	 * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2158
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2159
	graphic: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2160
		readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2162
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2163
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2164
            return this._graphic;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2165
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2166
	}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2167
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2168
Y.SVGShape = SVGShape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2170
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2171
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Path.html">`Path`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2172
 * `SVGPath` is not intended to be used directly. Instead, use the <a href="Path.html">`Path`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2173
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Path.html">`Path`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2174
 * class will point to the `SVGPath` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2175
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2176
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2177
 * @class SVGPath
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2178
 * @extends SVGShape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2179
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2180
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2181
SVGPath = function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2182
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2183
	SVGPath.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2184
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2185
SVGPath.NAME = "path";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2186
Y.extend(SVGPath, Y.SVGShape, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2187
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2188
     * Left edge of the path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2189
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2190
     * @property _left
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2191
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2192
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2193
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2194
    _left: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2196
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2197
     * Right edge of the path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2198
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2199
     * @property _right
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2200
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2201
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2202
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2203
    _right: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2204
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2205
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2206
     * Top edge of the path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2207
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2208
     * @property _top
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2209
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2210
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2211
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2212
    _top: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2214
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2215
     * Bottom edge of the path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2216
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2217
     * @property _bottom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2218
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2219
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2220
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2221
    _bottom: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2223
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2224
     * Indicates the type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2225
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2226
     * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2227
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2228
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2229
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2230
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2231
    _type: "path",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2233
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2234
     * Storage for path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2235
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2236
     * @property _path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2237
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2238
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2239
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2240
	_path: ""
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2241
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2243
SVGPath.ATTRS = Y.merge(Y.SVGShape.ATTRS, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2244
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2245
	 * Indicates the path used for the node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2246
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2247
	 * @config path
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2248
	 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2249
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2250
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2251
	path: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2252
		readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2254
		getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2255
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2256
			return this._path;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2257
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2258
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2260
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2261
	 * Indicates the width of the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2262
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2263
	 * @config width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2264
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2265
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2266
	width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2267
		getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2268
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2269
			var val = Math.max(this._right - this._left, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2270
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2271
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2272
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2274
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2275
	 * Indicates the height of the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2276
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2277
	 * @config height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2278
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2279
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2280
	height: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2281
		getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2282
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2283
			return Math.max(this._bottom - this._top, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2284
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2285
	}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2286
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2287
Y.SVGPath = SVGPath;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2288
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2289
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Rect.html">`Rect`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2290
 * `SVGRect` is not intended to be used directly. Instead, use the <a href="Rect.html">`Rect`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2291
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Rect.html">`Rect`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2292
 * class will point to the `SVGRect` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2293
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2294
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2295
 * @class SVGRect
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2296
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2297
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2298
SVGRect = function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2299
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2300
	SVGRect.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2301
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2302
SVGRect.NAME = "rect";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2303
Y.extend(SVGRect, Y.SVGShape, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2304
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2305
     * Indicates the type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2306
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2307
     * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2308
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2309
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2310
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2311
    _type: "rect"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2312
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2313
SVGRect.ATTRS = Y.SVGShape.ATTRS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2314
Y.SVGRect = SVGRect;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2315
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2316
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Ellipse.html">`Ellipse`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2317
 * `SVGEllipse` is not intended to be used directly. Instead, use the <a href="Ellipse.html">`Ellipse`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2318
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Ellipse.html">`Ellipse`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2319
 * class will point to the `SVGEllipse` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2320
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2321
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2322
 * @class SVGEllipse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2323
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2324
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2325
SVGEllipse = function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2326
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2327
	SVGEllipse.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2328
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2330
SVGEllipse.NAME = "ellipse";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2332
Y.extend(SVGEllipse, SVGShape, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2333
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2334
	 * Indicates the type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2335
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2336
	 * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2337
	 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2338
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2339
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2340
	_type: "ellipse",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2341
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2342
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2343
	 * Updates the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2344
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2345
	 * @method _draw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2346
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2347
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2348
	_draw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2349
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2350
		var node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2351
			w = this.get("width"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2352
			h = this.get("height"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2353
			x = this.get("x"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2354
			y = this.get("y"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2355
			xRadius = w * 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2356
			yRadius = h * 0.5,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2357
			cx = x + xRadius,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2358
			cy = y + yRadius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2359
		node.setAttribute("rx", xRadius);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2360
		node.setAttribute("ry", yRadius);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2361
		node.setAttribute("cx", cx);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2362
		node.setAttribute("cy", cy);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2363
		this._fillChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2364
		this._strokeChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2365
		this._updateTransform();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2366
	}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2367
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2369
SVGEllipse.ATTRS = Y.merge(SVGShape.ATTRS, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2370
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2371
	 * Horizontal radius for the ellipse.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2372
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2373
	 * @config xRadius
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2374
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2375
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2376
	xRadius: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2377
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2378
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2379
			this.set("width", val * 2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2380
		},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2381
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2382
		getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2383
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2384
			var val = this.get("width");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2385
			if(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2386
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2387
				val *= 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2388
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2389
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2390
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2391
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2392
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2393
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2394
	 * Vertical radius for the ellipse.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2395
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2396
	 * @config yRadius
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2397
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2398
	 * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2399
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2400
	yRadius: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2401
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2402
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2403
			this.set("height", val * 2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2404
		},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2406
		getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2407
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2408
			var val = this.get("height");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2409
			if(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2410
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2411
				val *= 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2412
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2413
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2414
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2415
	}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2416
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2417
Y.SVGEllipse = SVGEllipse;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2418
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2419
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Circle.html">`Circle`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2420
 * `SVGCircle` is not intended to be used directly. Instead, use the <a href="Circle.html">`Circle`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2421
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Circle.html">`Circle`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2422
 * class will point to the `SVGCircle` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2423
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2424
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2425
 * @class SVGCircle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2426
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2427
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2428
 SVGCircle = function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2429
 {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2430
    SVGCircle.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2431
 };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2432
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2433
 SVGCircle.NAME = "circle";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2435
 Y.extend(SVGCircle, Y.SVGShape, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2437
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2438
     * Indicates the type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2439
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2440
     * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2441
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2442
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2443
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2444
    _type: "circle",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2445
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2446
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2447
     * Updates the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2448
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2449
     * @method _draw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2450
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2451
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2452
    _draw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2453
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2454
        var node = this.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2455
            x = this.get("x"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2456
            y = this.get("y"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2457
            radius = this.get("radius"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2458
            cx = x + radius,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2459
            cy = y + radius;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2460
        node.setAttribute("r", radius);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2461
        node.setAttribute("cx", cx);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2462
        node.setAttribute("cy", cy);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2463
        this._fillChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2464
        this._strokeChangeHandler();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2465
        this._updateTransform();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2466
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2467
 });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2468
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2469
SVGCircle.ATTRS = Y.merge(Y.SVGShape.ATTRS, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2470
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2471
	 * Indicates the width of the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2472
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2473
	 * @config width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2474
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2475
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2476
    width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2477
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2478
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2479
            this.set("radius", val/2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2480
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2481
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2482
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2483
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2484
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2485
            return this.get("radius") * 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2486
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2487
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2488
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2489
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2490
	 * Indicates the height of the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2491
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2492
	 * @config height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2493
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2494
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2495
    height: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2496
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2497
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2498
            this.set("radius", val/2);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2499
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2500
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2502
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2503
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2504
            return this.get("radius") * 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2505
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2506
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2507
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2508
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2509
     * Radius of the circle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2510
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2511
     * @config radius
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2512
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2513
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2514
    radius: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2515
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2516
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2517
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2518
Y.SVGCircle = SVGCircle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2519
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2520
 * Draws pie slices
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2521
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2522
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2523
 * @class SVGPieSlice
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2524
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2525
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2526
SVGPieSlice = function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2527
{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2528
	SVGPieSlice.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2529
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2530
SVGPieSlice.NAME = "svgPieSlice";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2531
Y.extend(SVGPieSlice, Y.SVGShape, Y.mix({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2532
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2533
     * Indicates the type of shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2534
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2535
     * @property _type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2536
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2537
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2538
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2539
    _type: "path",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2540
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2541
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2542
	 * Change event listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2543
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2544
	 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2545
	 * @method _updateHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2546
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2547
	_draw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2548
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2549
        var x = this.get("cx"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2550
            y = this.get("cy"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2551
            startAngle = this.get("startAngle"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2552
            arc = this.get("arc"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2553
            radius = this.get("radius");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2554
        this.clear();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2555
        this.drawWedge(x, y, startAngle, arc, radius);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2556
		this.end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2557
	}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2558
 }, Y.SVGDrawing.prototype));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2559
SVGPieSlice.ATTRS = Y.mix({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2560
    cx: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2561
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2562
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2564
    cy: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2565
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2566
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2567
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2568
     * Starting angle in relation to a circle in which to begin the pie slice drawing.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2569
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2570
     * @config startAngle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2571
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2572
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2573
    startAngle: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2574
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2575
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2576
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2577
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2578
     * Arc of the slice.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2579
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2580
     * @config arc
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2581
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2582
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2583
    arc: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2584
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2585
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2586
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2587
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2588
     * Radius of the circle in which the pie slice is drawn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2589
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2590
     * @config radius
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2591
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2592
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2593
    radius: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2594
        value: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2595
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2596
}, Y.SVGShape.ATTRS);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2597
Y.SVGPieSlice = SVGPieSlice;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2598
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2599
 * <a href="http://www.w3.org/TR/SVG/">SVG</a> implementation of the <a href="Graphic.html">`Graphic`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2600
 * `SVGGraphic` is not intended to be used directly. Instead, use the <a href="Graphic.html">`Graphic`</a> class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2601
 * If the browser has <a href="http://www.w3.org/TR/SVG/">SVG</a> capabilities, the <a href="Graphic.html">`Graphic`</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2602
 * class will point to the `SVGGraphic` class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2603
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2604
 * @module graphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2605
 * @class SVGGraphic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2606
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2607
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2608
SVGGraphic = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2609
    SVGGraphic.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2610
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2611
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2612
SVGGraphic.NAME = "svgGraphic";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2613
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2614
SVGGraphic.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2615
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2616
     * Whether or not to render the `Graphic` automatically after to a specified parent node after init. This can be a Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2617
     * instance or a CSS selector string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2618
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2619
     * @config render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2620
     * @type Node | String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2621
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2622
    render: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2623
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2624
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2625
	 * Unique id for class instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2626
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2627
	 * @config id
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2628
	 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2629
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2630
	id: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2631
		valueFn: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2632
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2633
			return Y.guid();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2634
		},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2635
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2636
		setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2637
		{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2638
			var node = this._node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2639
			if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2640
			{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2641
				node.setAttribute("id", val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2642
			}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2643
			return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2644
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2645
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2646
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2647
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2648
     * Key value pairs in which a shape instance is associated with its id.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2649
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2650
     *  @config shapes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2651
     *  @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2652
     *  @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2653
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2654
    shapes: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2655
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2656
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2657
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2658
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2659
            return this._shapes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2660
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2661
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2662
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2663
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2664
     *  Object containing size and coordinate data for the content of a Graphic in relation to the coordSpace node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2665
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2666
     *  @config contentBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2667
     *  @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2668
     *  @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2669
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2670
    contentBounds: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2671
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2672
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2673
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2674
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2675
            return this._contentBounds;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2676
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2677
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2678
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2679
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2680
     *  The html element that represents to coordinate system of the Graphic instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2681
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2682
     *  @config node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2683
     *  @type HTMLElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2684
     *  @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2685
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2686
    node: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2687
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2688
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2689
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2690
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2691
            return this._node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2692
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2693
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2694
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2695
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2696
	 * Indicates the width of the `Graphic`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2697
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2698
	 * @config width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2699
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2700
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2701
    width: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2702
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2703
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2704
            if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2705
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2706
                this._node.style.width = val + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2707
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2708
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2709
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2710
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2711
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2712
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2713
	 * Indicates the height of the `Graphic`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2714
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2715
	 * @config height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2716
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2717
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2718
    height: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2719
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2720
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2721
            if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2722
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2723
                this._node.style.height = val  + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2724
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2725
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2726
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2727
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2728
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2729
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2730
     *  Determines the sizing of the Graphic.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2731
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2732
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2733
     *      <dt>sizeContentToGraphic</dt><dd>The Graphic's width and height attributes are, either explicitly set through the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2734
     *      <code>width</code> and <code>height</code> attributes or are determined by the dimensions of the parent element. The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2735
     *      content contained in the Graphic will be sized to fit with in the Graphic instance's dimensions. When using this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2736
     *      setting, the <code>preserveAspectRatio</code> attribute will determine how the contents are sized.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2737
     *      <dt>sizeGraphicToContent</dt><dd>(Also accepts a value of true) The Graphic's width and height are determined by the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2738
     *      size and positioning of the content.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2739
     *      <dt>false</dt><dd>The Graphic's width and height attributes are, either explicitly set through the <code>width</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2740
     *      and <code>height</code> attributes or are determined by the dimensions of the parent element. The contents of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2741
     *      Graphic instance are not affected by this setting.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2742
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2743
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2744
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2745
     *  @config autoSize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2746
     *  @type Boolean | String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2747
     *  @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2748
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2749
    autoSize: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2750
        value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2751
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2752
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2753
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2754
     * Determines how content is sized when <code>autoSize</code> is set to <code>sizeContentToGraphic</code>.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2755
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2756
     *  <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2757
     *      <dt>none<dt><dd>Do not force uniform scaling. Scale the graphic content of the given element non-uniformly if necessary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2758
     *      such that the element's bounding box exactly matches the viewport rectangle.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2759
     *      <dt>xMinYMin</dt><dd>Force uniform scaling position along the top left of the Graphic's node.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2760
     *      <dt>xMidYMin</dt><dd>Force uniform scaling horizontally centered and positioned at the top of the Graphic's node.<dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2761
     *      <dt>xMaxYMin</dt><dd>Force uniform scaling positioned horizontally from the right and vertically from the top.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2762
     *      <dt>xMinYMid</dt>Force uniform scaling positioned horizontally from the left and vertically centered.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2763
     *      <dt>xMidYMid (the default)</dt><dd>Force uniform scaling with the content centered.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2764
     *      <dt>xMaxYMid</dt><dd>Force uniform scaling positioned horizontally from the right and vertically centered.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2765
     *      <dt>xMinYMax</dt><dd>Force uniform scaling positioned horizontally from the left and vertically from the bottom.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2766
     *      <dt>xMidYMax</dt><dd>Force uniform scaling horizontally centered and position vertically from the bottom.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2767
     *      <dt>xMaxYMax</dt><dd>Force uniform scaling positioned horizontally from the right and vertically from the bottom.</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2768
     *  </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2769
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2770
     * @config preserveAspectRatio
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2771
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2772
     * @default xMidYMid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2773
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2774
    preserveAspectRatio: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2775
        value: "xMidYMid"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2776
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2777
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2778
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2779
     * The contentBounds will resize to greater values but not to smaller values. (for performance)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2780
     * When resizing the contentBounds down is desirable, set the resizeDown value to true.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2781
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2782
     * @config resizeDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2783
     * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2784
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2785
    resizeDown: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2786
        value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2787
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2788
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2789
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2790
	 * Indicates the x-coordinate for the instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2791
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2792
	 * @config x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2793
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2794
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2795
    x: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2796
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2797
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2798
            return this._x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2799
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2800
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2801
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2802
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2803
            this._x = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2804
            if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2805
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2806
                this._node.style.left = val + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2807
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2808
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2809
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2810
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2811
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2812
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2813
	 * Indicates the y-coordinate for the instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2814
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2815
	 * @config y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2816
	 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2817
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2818
    y: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2819
        getter: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2820
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2821
            return this._y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2822
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2823
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2824
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2825
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2826
            this._y = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2827
            if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2828
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2829
                this._node.style.top = val + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2830
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2831
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2832
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2833
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2834
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2835
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2836
     * Indicates whether or not the instance will automatically redraw after a change is made to a shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2837
     * This property will get set to false when batching operations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2838
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2839
     * @config autoDraw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2840
     * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2841
     * @default true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2842
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2843
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2844
    autoDraw: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2845
        value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2846
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2847
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2848
    visible: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2849
        value: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2850
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2851
        setter: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2852
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2853
            this._toggleVisible(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2854
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2855
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2856
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2857
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2858
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2859
    //  Indicates the pointer-events setting for the svg:svg element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2860
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2861
    //  @config pointerEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2862
    //  @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2863
    //
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2864
    pointerEvents: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2865
        value: "none"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2866
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2867
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2868
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2869
Y.extend(SVGGraphic, Y.GraphicBase, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2870
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2871
     * Sets the value of an attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2872
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2873
     * @method set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2874
     * @param {String|Object} name The name of the attribute. Alternatively, an object of key value pairs can
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2875
     * be passed in to set multiple attributes at once.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2876
     * @param {Any} value The value to set the attribute to. This value is ignored if an object is received as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2877
     * the name param.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2878
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2879
	set: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2880
	{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2881
		var host = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2882
            attr = arguments[0],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2883
            redrawAttrs = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2884
                autoDraw: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2885
                autoSize: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2886
                preserveAspectRatio: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2887
                resizeDown: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2888
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2889
            key,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2890
            forceRedraw = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2891
		AttributeLite.prototype.set.apply(host, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2892
        if(host._state.autoDraw === true && Y.Object.size(this._shapes) > 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2893
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2894
            if(Y_LANG.isString && redrawAttrs[attr])
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2895
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2896
                forceRedraw = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2897
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2898
            else if(Y_LANG.isObject(attr))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2899
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2900
                for(key in redrawAttrs)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2901
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2902
                    if(redrawAttrs.hasOwnProperty(key) && attr[key])
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2903
                    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2904
                        forceRedraw = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2905
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2906
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2907
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2908
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2909
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2910
        if(forceRedraw)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2911
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2912
            host._redraw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2913
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2914
	},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2915
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2916
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2917
     * Storage for `x` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2918
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2919
     * @property _x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2920
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2921
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2922
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2923
    _x: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2924
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2925
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2926
     * Storage for `y` attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2927
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2928
     * @property _y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2929
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2930
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2931
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2932
    _y: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2933
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2934
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2935
     * Gets the current position of the graphic instance in page coordinates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2936
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2937
     * @method getXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2938
     * @return Array The XY position of the shape.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2939
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2940
    getXY: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2941
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2942
        var node = Y.one(this._node),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2943
            xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2944
        if(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2945
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2946
            xy = node.getXY();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2947
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2948
        return xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2949
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2950
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2951
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2952
     * Initializes the class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2953
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2954
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2955
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2956
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2957
    initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2958
        var render = this.get("render"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2959
            visibility = this.get("visible") ? "visible" : "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2960
        this._shapes = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2961
		this._contentBounds = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2962
            left: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2963
            top: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2964
            right: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2965
            bottom: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2966
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2967
        this._gradients = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2968
        this._node = DOCUMENT.createElement('div');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2969
        this._node.style.position = "absolute";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2970
        this._node.style.left = this.get("x") + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2971
        this._node.style.top = this.get("y") + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2972
        this._node.style.visibility = visibility;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2973
        this._contentNode = this._createGraphics();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2974
        this._contentNode.style.visibility = visibility;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2975
        this._contentNode.setAttribute("id", this.get("id"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2976
        this._node.appendChild(this._contentNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2977
        if(render)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2978
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2979
            this.render(render);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2980
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2981
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2982
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2983
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2984
     * Adds the graphics node to the dom.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2985
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2986
     * @method render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2987
     * @param {HTMLElement} parentNode node in which to render the graphics node into.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2988
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2989
    render: function(render) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2990
        var parentNode = Y.one(render),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2991
            w = this.get("width") || parseInt(parentNode.getComputedStyle("width"), 10),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2992
            h = this.get("height") || parseInt(parentNode.getComputedStyle("height"), 10);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2993
        parentNode = parentNode || Y.one(DOCUMENT.body);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2994
        parentNode.append(this._node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2995
        this.parentNode = parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2996
        this.set("width", w);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2997
        this.set("height", h);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2998
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  2999
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3001
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3002
     * Removes all nodes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3003
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3004
     * @method destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3005
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3006
    destroy: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3007
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3008
        this.removeAllShapes();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3009
        if(this._contentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3010
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3011
            this._removeChildren(this._contentNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3012
            if(this._contentNode.parentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3013
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3014
                this._contentNode.parentNode.removeChild(this._contentNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3015
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3016
            this._contentNode = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3017
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3018
        if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3019
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3020
            this._removeChildren(this._node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3021
            Y.one(this._node).remove(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3022
            this._node = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3023
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3024
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3025
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3026
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3027
     * Generates a shape instance by type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3028
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3029
     * @method addShape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3030
     * @param {Object} cfg attributes for the shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3031
     * @return Shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3032
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3033
    addShape: function(cfg)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3034
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3035
        cfg.graphic = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3036
        if(!this.get("visible"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3037
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3038
            cfg.visible = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3039
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3040
        var ShapeClass = this._getShapeClass(cfg.type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3041
            shape = new ShapeClass(cfg);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3042
        this._appendShape(shape);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3043
        return shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3044
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3045
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3046
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3047
     * Adds a shape instance to the graphic instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3048
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3049
     * @method _appendShape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3050
     * @param {Shape} shape The shape instance to be added to the graphic.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3051
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3052
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3053
    _appendShape: function(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3054
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3055
        var node = shape.node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3056
            parentNode = this._frag || this._contentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3057
        if(this.get("autoDraw"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3058
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3059
            parentNode.appendChild(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3060
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3061
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3062
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3063
            this._getDocFrag().appendChild(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3064
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3065
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3066
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3067
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3068
     * Removes a shape instance from from the graphic instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3069
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3070
     * @method removeShape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3071
     * @param {Shape|String} shape The instance or id of the shape to be removed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3072
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3073
    removeShape: function(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3074
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3075
        if(!(shape instanceof SVGShape))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3076
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3077
            if(Y_LANG.isString(shape))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3078
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3079
                shape = this._shapes[shape];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3080
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3081
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3082
        if(shape && shape instanceof SVGShape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3083
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3084
            shape._destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3085
            delete this._shapes[shape.get("id")];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3086
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3087
        if(this.get("autoDraw"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3088
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3089
            this._redraw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3090
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3091
        return shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3092
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3093
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3094
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3095
     * Removes all shape instances from the dom.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3096
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3097
     * @method removeAllShapes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3098
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3099
    removeAllShapes: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3100
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3101
        var shapes = this._shapes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3102
            i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3103
        for(i in shapes)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3104
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3105
            if(shapes.hasOwnProperty(i))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3106
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3107
                shapes[i]._destroy();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3108
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3109
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3110
        this._shapes = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3111
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3113
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3114
     * Removes all child nodes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3115
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3116
     * @method _removeChildren
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3117
     * @param {HTMLElement} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3118
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3119
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3120
    _removeChildren: function(node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3121
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3122
        if(node.hasChildNodes())
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3123
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3124
            var child;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3125
            while(node.firstChild)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3126
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3127
                child = node.firstChild;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3128
                this._removeChildren(child);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3129
                node.removeChild(child);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3130
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3131
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3132
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3133
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3134
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3135
     * Clears the graphics object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3136
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3137
     * @method clear
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3138
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3139
    clear: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3140
        this.removeAllShapes();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3141
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3143
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3144
     * Toggles visibility
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3145
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3146
     * @method _toggleVisible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3147
     * @param {Boolean} val indicates visibilitye
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3148
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3149
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3150
    _toggleVisible: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3151
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3152
        var i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3153
            shapes = this._shapes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3154
            visibility = val ? "visible" : "hidden";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3155
        if(shapes)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3156
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3157
            for(i in shapes)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3158
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3159
                if(shapes.hasOwnProperty(i))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3160
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3161
                    shapes[i].set("visible", val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3162
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3163
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3164
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3165
        if(this._contentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3166
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3167
            this._contentNode.style.visibility = visibility;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3168
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3169
        if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3170
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3171
            this._node.style.visibility = visibility;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3172
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3173
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3175
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3176
     * Returns a shape class. Used by `addShape`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3177
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3178
     * @method _getShapeClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3179
     * @param {Shape | String} val Indicates which shape class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3180
     * @return Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3181
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3182
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3183
    _getShapeClass: function(val)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3184
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3185
        var shape = this._shapeClass[val];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3186
        if(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3187
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3188
            return shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3189
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3190
        return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3191
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3193
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3194
     * Look up for shape classes. Used by `addShape` to retrieve a class for instantiation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3195
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3196
     * @property _shapeClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3197
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3198
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3199
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3200
    _shapeClass: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3201
        circle: Y.SVGCircle,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3202
        rect: Y.SVGRect,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3203
        path: Y.SVGPath,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3204
        ellipse: Y.SVGEllipse,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3205
        pieslice: Y.SVGPieSlice
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3206
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3208
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3209
     * Returns a shape based on the id of its dom node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3210
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3211
     * @method getShapeById
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3212
     * @param {String} id Dom id of the shape's node attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3213
     * @return Shape
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3214
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3215
    getShapeById: function(id)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3216
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3217
        var shape = this._shapes[id];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3218
        return shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3219
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3221
	/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3222
	 * Allows for creating multiple shapes in order to batch appending and redraw operations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3223
	 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3224
	 * @method batch
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3225
	 * @param {Function} method Method to execute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3226
	 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3227
    batch: function(method)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3228
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3229
        var autoDraw = this.get("autoDraw");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3230
        this.set("autoDraw", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3231
        method();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3232
        this.set("autoDraw", autoDraw);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3233
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3235
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3236
     * Returns a document fragment to for attaching shapes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3237
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3238
     * @method _getDocFrag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3239
     * @return DocumentFragment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3240
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3241
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3242
    _getDocFrag: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3243
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3244
        if(!this._frag)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3245
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3246
            this._frag = DOCUMENT.createDocumentFragment();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3247
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3248
        return this._frag;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3249
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3251
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3252
     * Redraws all shapes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3253
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3254
     * @method _redraw
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3255
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3256
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3257
    _redraw: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3258
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3259
        var autoSize = this.get("autoSize"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3260
            preserveAspectRatio = this.get("preserveAspectRatio"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3261
            box = this.get("resizeDown") ? this._getUpdatedContentBounds() : this._contentBounds,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3262
            left = box.left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3263
            right = box.right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3264
            top = box.top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3265
            bottom = box.bottom,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3266
            width = right - left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3267
            height = bottom - top,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3268
            computedWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3269
            computedHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3270
            computedLeft,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3271
            computedTop,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3272
            node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3273
        if(autoSize)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3274
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3275
            if(autoSize === "sizeContentToGraphic")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3276
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3277
                node = Y.one(this._node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3278
                computedWidth = parseFloat(node.getComputedStyle("width"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3279
                computedHeight = parseFloat(node.getComputedStyle("height"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3280
                computedLeft = computedTop = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3281
                this._contentNode.setAttribute("preserveAspectRatio", preserveAspectRatio);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3282
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3283
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3284
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3285
                computedWidth = width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3286
                computedHeight = height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3287
                computedLeft = left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3288
                computedTop = top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3289
                this._state.width = width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3290
                this._state.height = height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3291
                if(this._node)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3292
                {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3293
                    this._node.style.width = width + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3294
                    this._node.style.height = height + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3295
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3296
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3297
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3298
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3299
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3300
                computedWidth = width;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3301
                computedHeight = height;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3302
                computedLeft = left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3303
                computedTop = top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3304
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3305
        if(this._contentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3306
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3307
            this._contentNode.style.left = computedLeft + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3308
            this._contentNode.style.top = computedTop + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3309
            this._contentNode.setAttribute("width", computedWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3310
            this._contentNode.setAttribute("height", computedHeight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3311
            this._contentNode.style.width = computedWidth + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3312
            this._contentNode.style.height = computedHeight + "px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3313
            this._contentNode.setAttribute("viewBox", "" + left + " " + top + " " + width + " " + height + "");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3314
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3315
        if(this._frag)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3316
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3317
            if(this._contentNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3318
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3319
                this._contentNode.appendChild(this._frag);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3320
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3321
            this._frag = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3322
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3323
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3324
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3325
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3326
     * Adds a shape to the redraw queue and calculates the contentBounds. Used internally
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3327
     * by `Shape` instances.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3328
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3329
     * @method addToRedrawQueue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3330
     * @param shape {SVGShape}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3331
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3332
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3333
    addToRedrawQueue: function(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3334
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3335
        var shapeBox,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3336
            box;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3337
        this._shapes[shape.get("id")] = shape;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3338
        if(!this.get("resizeDown"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3339
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3340
            shapeBox = shape.getBounds();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3341
            box = this._contentBounds;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3342
            box.left = box.left < shapeBox.left ? box.left : shapeBox.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3343
            box.top = box.top < shapeBox.top ? box.top : shapeBox.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3344
            box.right = box.right > shapeBox.right ? box.right : shapeBox.right;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3345
            box.bottom = box.bottom > shapeBox.bottom ? box.bottom : shapeBox.bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3346
            box.width = box.right - box.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3347
            box.height = box.bottom - box.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3348
            this._contentBounds = box;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3349
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3350
        if(this.get("autoDraw"))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3351
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3352
            this._redraw();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3353
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3354
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3356
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3357
     * Recalculates and returns the `contentBounds` for the `Graphic` instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3358
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3359
     * @method _getUpdatedContentBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3360
     * @return {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3361
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3362
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3363
    _getUpdatedContentBounds: function()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3364
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3365
        var bounds,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3366
            i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3367
            shape,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3368
            queue = this._shapes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3369
            box = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3370
        for(i in queue)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3371
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3372
            if(queue.hasOwnProperty(i))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3373
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3374
                shape = queue[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3375
                bounds = shape.getBounds();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3376
                box.left = Y_LANG.isNumber(box.left) ? Math.min(box.left, bounds.left) : bounds.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3377
                box.top = Y_LANG.isNumber(box.top) ? Math.min(box.top, bounds.top) : bounds.top;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3378
                box.right = Y_LANG.isNumber(box.right) ? Math.max(box.right, bounds.right) : bounds.right;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3379
                box.bottom = Y_LANG.isNumber(box.bottom) ? Math.max(box.bottom, bounds.bottom) : bounds.bottom;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3380
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3381
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3382
        box.left = Y_LANG.isNumber(box.left) ? box.left : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3383
        box.top = Y_LANG.isNumber(box.top) ? box.top : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3384
        box.right = Y_LANG.isNumber(box.right) ? box.right : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3385
        box.bottom = Y_LANG.isNumber(box.bottom) ? box.bottom : 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3386
        this._contentBounds = box;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3387
        return box;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3388
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3389
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3390
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3391
     * Creates a contentNode element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3392
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3393
     * @method _createGraphics
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3394
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3395
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3396
    _createGraphics: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3397
        var contentNode = this._createGraphicNode("svg"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3398
            pointerEvents = this.get("pointerEvents");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3399
        contentNode.style.position = "absolute";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3400
        contentNode.style.top = "0px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3401
        contentNode.style.left = "0px";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3402
        contentNode.style.overflow = "auto";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3403
        contentNode.setAttribute("overflow", "auto");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3404
        contentNode.setAttribute("pointer-events", pointerEvents);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3405
        return contentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3406
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3407
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3408
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3409
     * Creates a graphic node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3410
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3411
     * @method _createGraphicNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3412
     * @param {String} type node type to create
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3413
     * @param {String} pe specified pointer-events value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3414
     * @return HTMLElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3415
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3416
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3417
    _createGraphicNode: function(type, pe)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3418
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3419
        var node = DOCUMENT.createElementNS("http://www.w3.org/2000/svg", "svg:" + type),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3420
            v = pe || "none";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3421
        if(type !== "defs" && type !== "stop" && type !== "linearGradient" && type !== "radialGradient")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3422
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3423
            node.setAttribute("pointer-events", v);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3424
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3425
        return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3426
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3427
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3428
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3429
     * Returns a reference to a gradient definition based on an id and type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3430
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3431
     * @method getGradientNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3432
     * @param {String} key id that references the gradient definition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3433
     * @param {String} type description of the gradient type
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3434
     * @return HTMLElement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3435
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3436
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3437
    getGradientNode: function(key, type)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3438
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3439
        var gradients = this._gradients,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3440
            gradient,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3441
            nodeType = type + "Gradient";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3442
        if(gradients.hasOwnProperty(key) && gradients[key].tagName.indexOf(type) > -1)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3443
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3444
            gradient = this._gradients[key];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3445
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3446
        else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3447
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3448
            gradient = this._createGraphicNode(nodeType);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3449
            if(!this._defs)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3450
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3451
                this._defs = this._createGraphicNode("defs");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3452
                this._contentNode.appendChild(this._defs);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3453
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3454
            this._defs.appendChild(gradient);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3455
            key = key || "gradient" + Math.round(100000 * Math.random());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3456
            gradient.setAttribute("id", key);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3457
            if(gradients.hasOwnProperty(key))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3458
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3459
                this._defs.removeChild(gradients[key]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3460
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3461
            gradients[key] = gradient;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3462
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3463
        return gradient;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3464
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3465
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3466
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3467
     * Inserts shape on the top of the tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3468
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3469
     * @method _toFront
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3470
     * @param {SVGShape} Shape to add.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3471
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3472
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3473
    _toFront: function(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3474
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3475
        var contentNode = this._contentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3476
        if(shape instanceof Y.SVGShape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3477
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3478
            shape = shape.get("node");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3479
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3480
        if(contentNode && shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3481
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3482
            contentNode.appendChild(shape);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3483
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3484
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3485
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3486
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3487
     * Inserts shape as the first child of the content node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3488
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3489
     * @method _toBack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3490
     * @param {SVGShape} Shape to add.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3491
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3492
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3493
    _toBack: function(shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3494
    {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3495
        var contentNode = this._contentNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3496
            targetNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3497
        if(shape instanceof Y.SVGShape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3498
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3499
            shape = shape.get("node");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3500
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3501
        if(contentNode && shape)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3502
        {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3503
            targetNode = contentNode.firstChild;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3504
            if(targetNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3505
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3506
                contentNode.insertBefore(shape, targetNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3507
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3508
            else
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3509
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3510
                contentNode.appendChild(shape);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3511
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3512
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3513
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3514
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3515
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3516
Y.SVGGraphic = SVGGraphic;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3517
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3518
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  3520
}, '3.10.3', {"requires": ["graphics"]});