import {Style} from "./Style";
import {GradientColorStop} from "./GradientColorStop";
/**
* Gradient style is used to represent any type of gradient based style.
*
* It handles any gradient based operations and should be used as base for other gradient styles.
*
* @class
* @extends {Style}
*/
function GradientStyle()
{
Style.call(this);
/**
* List of colors that compose this gradient ordered.
*
* You need to add at least one color stop to have a visible gradient.
*
* @type {GradientColorStop[]}
*/
this.colors = [];
}
GradientStyle.prototype = Object.create(Style.prototype);
/**
* Add a new color stop defined by an offset and a color to the gradient.
*
* If the offset is not between 0 and 1 inclusive, or if color can't be parsed as a CSS color, an error is raised.
*
* @param {number} offset Offset of the color stop between 0 and 1 inclusive.
* @param {string} color CSS color value.
*/
GradientStyle.prototype.addColorStop = function(offset, color)
{
this.colors.push(new GradientColorStop(offset, color));
};
GradientStyle.prototype.serialize = function()
{
return {
colors: this.colors
};
};
GradientStyle.prototype.parse = function(data)
{
var colors = [];
for(var i = 0; i < data.colors.length; i++)
{
colors.push(new GradientColorStop(data.colors[i].offset, data.colors[i].color));
}
this.colors = colors;
};
export {GradientStyle};