import {Style} from "./Style";
import {GradientStyle} from "./GradientStyle";
import {Vector2} from "../../math/Vector2";
/**
* Linear gradient style, represents a gradient of colors from a point to another interpolating in between.
*
* Behind the of the two points used the color is solid.
*
* The get method returns a CanvasGradient https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient when generated.
*
* @class
* @extends {GradientStyle}
*/
function LinearGradientStyle()
{
GradientStyle.call(this);
/**
* The coordinates of the starting point of the gradient.
*
* @type {Vector2}
*/
this.start = new Vector2(-100, 0);
/**
* The coordinates of the ending point of the gradient.
*
* @type {Vector2}
*/
this.end = new Vector2(100, 0);
}
LinearGradientStyle.prototype = Object.create(GradientStyle.prototype);
Style.register(LinearGradientStyle, "LinearGradient");
LinearGradientStyle.prototype.get = function(context)
{
var style = context.createLinearGradient(this.start.x, this.start.y, this.end.x, this.end.y);
for(var i = 0; i < this.colors.length; i++)
{
style.addColorStop(this.colors[i].offset, this.colors[i].color);
}
return style;
};
LinearGradientStyle.prototype.serialize = function ()
{
var data = GradientStyle.prototype.serialize.call(this);
Object.assign(data, {
type: "LinearGradient",
start: this.start.toArray(),
end: this.end.toArray()
});
return data;
};
LinearGradientStyle.prototype.parse = function (data)
{
GradientStyle.prototype.parse.call(this, data);
this.start.fromArray(data.start);
this.end.fromArray(data.end);
};
export {LinearGradientStyle};