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