src/cm/media/js/lib/yui/yui3-3.15.0/build/series-line-util/series-line-util.js
author ymh <ymh.work@gmail.com>
Fri, 14 Mar 2014 13:16:10 +0100
changeset 611 fa66f4bb1563
parent 602 e16a97fb364a
permissions -rw-r--r--
add some more custom config and put every thing in comment in the custom.yaml template
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('series-line-util', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * Provides functionality for drawing lines in a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 * @module charts
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @submodule series-line-util
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
 * Utility class used for drawing lines.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
 * @class Lines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
 * @submodule series-line-util
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
var Y_Lang = Y.Lang;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
function Lines(){}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
Lines.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
     * @property _lineDefaults
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
     * @type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
    _lineDefaults: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
     * Creates a graphic in which to draw a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
     * @method _getGraphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
     * @return Graphic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    _getGraphic: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
        var graphic = this.get("graphic") || this.get("graph").get("graphic");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
        if(!this._lineGraphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
            this._lineGraphic = graphic.addShape({type: "path"});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        this._lineGraphic.clear();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        return this._lineGraphic;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
     * Toggles visibility
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
     * @method _toggleVisible
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
     * @param {Boolean} visible indicates visibilitye
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    _toggleVisible: function(visible)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
        if(this._lineGraphic)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
            this._lineGraphic.set("visible", visible);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
     * Draws lines for the series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
     * @method drawLines
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    drawLines: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
        if(this.get("xcoords").length < 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
        var isNumber = Y_Lang.isNumber,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
            xcoords,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
            ycoords,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
            direction = this.get("direction"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
            len,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
            lastPointValid,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
            pointValid,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            noPointsRendered = true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
            lastValidX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
            lastValidY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
            nextX,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            nextY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
            i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
            styles = this.get("styles").line,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
            lineType = styles.lineType,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
            lc = styles.color || this._getDefaultColor(this.get("graphOrder"), "line"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
            lineAlpha = styles.alpha,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
            dashLength = styles.dashLength,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
            gapSpace = styles.gapSpace,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
            connectDiscontinuousPoints = styles.connectDiscontinuousPoints,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
            discontinuousType = styles.discontinuousType,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
            discontinuousDashLength = styles.discontinuousDashLength,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
            discontinuousGapSpace = styles.discontinuousGapSpace,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
            path = this._getGraphic();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
        if(this._stacked)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
            xcoords = this.get("stackedXCoords");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            ycoords = this.get("stackedYCoords");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            xcoords = this.get("xcoords");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
            ycoords = this.get("ycoords");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
        len = direction === "vertical" ? ycoords.length : xcoords.length;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
        path.set("stroke", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
            weight: styles.weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
            color: lc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
            opacity: lineAlpha
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
        for(i = 0; i < len; i = ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
            nextX = xcoords[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
            nextY = ycoords[i];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
            pointValid = isNumber(nextX) && isNumber(nextY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
            if(!pointValid)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
                lastPointValid = pointValid;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
                continue;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
            if(noPointsRendered)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
                noPointsRendered = false;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
                path.moveTo(nextX, nextY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
            else if(lastPointValid)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
                if(lineType !== "dashed")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
                    path.lineTo(nextX, nextY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
                    this.drawDashedLine(path, lastValidX, lastValidY, nextX, nextY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
                                                dashLength,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
                                                gapSpace);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
            else if(!connectDiscontinuousPoints)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
                path.moveTo(nextX, nextY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
            else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
            {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
                if(discontinuousType !== "solid")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
                    this.drawDashedLine(path, lastValidX, lastValidY, nextX, nextY,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
                                                discontinuousDashLength,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
                                                discontinuousGapSpace);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
                else
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
                {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
                    path.lineTo(nextX, nextY);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
            lastValidX = nextX;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
            lastValidY = nextY;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
            lastPointValid = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
        path.end();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
     * Connects data points with a consistent curve for a series.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
     * @method drawSpline
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
    drawSpline: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
        if(this.get("xcoords").length < 1)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
            return;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
        var xcoords = this.get("xcoords"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
            ycoords = this.get("ycoords"),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
            curvecoords = this.getCurveControlPoints(xcoords, ycoords),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
            len = curvecoords.length,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
            cx1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
            cx2,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
            cy1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
            cy2,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
            x,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
            y,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
            i = 0,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
            styles = this.get("styles").line,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
            path = this._getGraphic(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
            lineAlpha = styles.alpha,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
            color = styles.color || this._getDefaultColor(this.get("graphOrder"), "line");
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
        path.set("stroke", {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
            weight: styles.weight,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
            color: color,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
            opacity: lineAlpha
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
        path.moveTo(xcoords[0], ycoords[0]);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
        for(; i < len; i = ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
            x = curvecoords[i].endx;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
            y = curvecoords[i].endy;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
            cx1 = curvecoords[i].ctrlx1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
            cx2 = curvecoords[i].ctrlx2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
            cy1 = curvecoords[i].ctrly1;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
            cy2 = curvecoords[i].ctrly2;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
            path.curveTo(cx1, cy1, cx2, cy2, x, y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
        path.end();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
     * Draws a dashed line between two points.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
     * @method drawDashedLine
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
     * @param {Number} xStart	The x position of the start of the line
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
     * @param {Number} yStart	The y position of the start of the line
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
     * @param {Number} xEnd		The x position of the end of the line
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
     * @param {Number} yEnd		The y position of the end of the line
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
     * @param {Number} dashSize	the size of dashes, in pixels
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
     * @param {Number} gapSize	the size of gaps between dashes, in pixels
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
     * @private
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
    drawDashedLine: function(path, xStart, yStart, xEnd, yEnd, dashSize, gapSize)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
        dashSize = dashSize || 10;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
        gapSize = gapSize || 10;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
        var segmentLength = dashSize + gapSize,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
            xDelta = xEnd - xStart,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
            yDelta = yEnd - yStart,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
            delta = Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2)),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
            segmentCount = Math.floor(Math.abs(delta / segmentLength)),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
            radians = Math.atan2(yDelta, xDelta),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
            xCurrent = xStart,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
            yCurrent = yStart,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
            i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
        xDelta = Math.cos(radians) * segmentLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
        yDelta = Math.sin(radians) * segmentLength;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
        for(i = 0; i < segmentCount; ++i)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
            path.moveTo(xCurrent, yCurrent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
            path.lineTo(xCurrent + Math.cos(radians) * dashSize, yCurrent + Math.sin(radians) * dashSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
            xCurrent += xDelta;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
            yCurrent += yDelta;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
        path.moveTo(xCurrent, yCurrent);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
        delta = Math.sqrt((xEnd - xCurrent) * (xEnd - xCurrent) + (yEnd - yCurrent) * (yEnd - yCurrent));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
        if(delta > dashSize)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
            path.lineTo(xCurrent + Math.cos(radians) * dashSize, yCurrent + Math.sin(radians) * dashSize);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        else if(delta > 0)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
        {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
            path.lineTo(xCurrent + Math.cos(radians) * delta, yCurrent + Math.sin(radians) * delta);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
        path.moveTo(xEnd, yEnd);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
     * Default values for `styles` attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
     * @method _getLineDefaults
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
     * @return Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
    _getLineDefaults: function()
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
    {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
        return {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
            alpha: 1,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
            weight: 6,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
            lineType:"solid",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
            dashLength:10,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
            gapSpace:10,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
            connectDiscontinuousPoints:true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
            discontinuousType:"solid",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
            discontinuousDashLength:10,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
            discontinuousGapSpace:10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
Y.augment(Lines, Y.Attribute);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
Y.Lines = Lines;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
}, '@VERSION@');