text: /**
   * @author Antonio Raúl Guijarro Contreras <alu0101100494@ull.edu.es>
   * @file Declaración de la clase Shape. Generalización de metodos y atributos de las
   * figuras.
   * @copyright Antonio Raúl Guijarro Contreras 2020
   * @since 13.03.2020
   */
  
  'use strinc'
  
  
  /** 
   * Clase padre de las figuras. Almacena métodos para poder dibujar dentro de un canvas
   * las figuras que hereden de él.
  */
  class Shape {
  
    /**
     * @static Almacena todos los posibles bordes, es decir, si son redondeados,
     * cuadrados o butt.
     */
    static lineCap = {
      butt: 'butt',
      round: 'round',
      square: 'square'
    }
  
    /**
     * @static Almacena un conjunto de patrones para el stroke. Línea continua, discontinua con varias
     * distancias y patrones de separación
     */
    static dashLine = {
      continuous: [],
      discontinuousVeryShort: [1, 1],
      discontinuousShort: [10, 10],
      discontinuousLong: [20, 5],
      discontinuousMediumDot: [15, 3, 3, 3],
      discontinuousLong3Dot: [20, 3, 3, 3, 3, 3, 3, 3],
      discontinuousLongShort: [12, 3, 3]
    }
  
    /**
     * Constructor de la clase Shape.
     * @param {string} color Color en formato CSS
     * @class Shape
     */
    constructor(color = 'black') {
      this.lineCap = Shape.lineCap.square;
      this.fillStyle = color;
      this.strokeStyle = color;
      this.strokeWidth = 1;
      this.rotate = 0;
      this.scale = [1, 1];
      this.isDiscontinuous = false;
      this.distanceDiscontinuous = [10 ,10];
    }
  
  
    /* istanbul ignore next   */
    /**
     * Asienta los atributos de la figura para ser dibujada.
     * @param {context} ctx Contexto del canvas.
     */
    baseDraw(ctx) {
      if (ctx != null) {
        ctx.beginPath();
        if (this.isDiscontinuous) {
          ctx.setLineDash(this.distanceDiscontinuous);
        } else {
          ctx.setLineDash([0, 0]);
        }
        ctx.lineWidth = this.strokeWidth;
        ctx.lineCap = this.lineCap;
        ctx.fillStyle = this.fillStyle;
        ctx.strokeStyle = this.strokeStyle;
        ctx.rotate(this.rotate);
        ctx.scale(...this.scale);
      }
    }
  }
  
  export default Shape;