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