text: 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};
  