File: graphics/js/ShapeGroup.js
- /**
- * The graphics-group submodule allows from drawing a shape multiple times within a single instance.
- *
- * @module graphics
- * @submodule graphics-group
- */
- var ShapeGroup,
- CircleGroup,
- RectGroup,
- EllipseGroup,
- DiamondGroup,
- Y_Lang = Y.Lang;
-
- /**
- * Abstract class for creating groups of shapes with the same styles and dimensions.
- *
- * @class ShapeGroup
- * @constructor
- * @submodule graphics-group
- */
-
- ShapeGroup = function()
- {
- ShapeGroup.superclass.constructor.apply(this, arguments);
- };
-
- ShapeGroup.NAME = "shapeGroup";
-
- Y.extend(ShapeGroup, Y.Path, {
- /**
- * Updates the shape.
- *
- * @method _draw
- * @private
- */
- _draw: function()
- {
- var xvalues = this.get("xvalues"),
- yvalues = this.get("yvalues"),
- x,
- y,
- xRad,
- yRad,
- i = 0,
- len,
- dimensions = this.get("dimensions"),
- width = dimensions.width,
- height = dimensions.height,
- radius = dimensions.radius,
- yRadius = dimensions.yRadius,
- widthIsArray = Y_Lang.isArray(width),
- heightIsArray = Y_Lang.isArray(height),
- radiusIsArray = Y_Lang.isArray(radius),
- yRadiusIsArray = Y_Lang.isArray(yRadius);
- if(xvalues && yvalues && xvalues.length > 0)
- {
- this.clear();
-
- len = xvalues.length;
- for(; i < len; ++i)
- {
- x = xvalues[i];
- y = yvalues[i];
- xRad = radiusIsArray ? radius[i] : radius;
- yRad = yRadiusIsArray ? yRadius[i] : yRadius;
- if(!isNaN(x) && !isNaN(y) && !isNaN(xRad))
- {
- this.drawShape({
- x: x,
- y: y,
- width: widthIsArray ? width[i] : width,
- height: heightIsArray ? height[i] : height,
- radius: xRad,
- yRadius: yRad
- });
- this.closePath();
- }
- }
- this._closePath();
- }
- },
-
- /**
- * Parses and array of lengths into radii
- *
- * @method _getRadiusCollection
- * @param {Array} val Array of lengths
- * @return Array
- * @private
- */
- _getRadiusCollection: function(val)
- {
- var i = 0,
- len = val.length,
- radii = [];
- for(; i < len; ++i)
- {
- radii[i] = val[i] * 0.5;
- }
- return radii;
- }
- });
-
- ShapeGroup.ATTRS = Y.merge(Y.Path.ATTRS, {
- dimensions: {
- getter: function()
- {
- var dimensions = this._dimensions,
- radius,
- yRadius,
- width,
- height;
- if(dimensions.hasOwnProperty("radius"))
- {
- return dimensions;
- }
- else
- {
- width = dimensions.width;
- height = dimensions.height;
- radius = Y_Lang.isArray(width) ? this._getRadiusCollection(width) : (width * 0.5);
- yRadius = Y_Lang.isArray(height) ? this._getRadiusCollection(height) : (height * 0.5);
- return {
- width: width,
- height: height,
- radius: radius,
- yRadius: yRadius
- };
- }
- },
-
- setter: function(val)
- {
- this._dimensions = val;
- return val;
- }
- },
- xvalues: {
- getter: function()
- {
- return this._xvalues;
- },
- setter: function(val)
- {
- this._xvalues = val;
- }
- },
- yvalues: {
- getter: function()
- {
- return this._yvalues;
- },
- setter: function(val)
- {
- this._yvalues = val;
- }
- }
- });
- Y.ShapeGroup = ShapeGroup;
-
-