Source: Rectangle.js

/**
 * @author Antonio Raúl Guijarro Contreras <alu0101100494@ull.edu.es>
 * @file Declaración de la clase Rectangle. hereda de Shape y simboliza la forma de un rectángulo
 * @copyright Antonio Raúl Guijarro Contreras 2020
 * @since 14.03.2020
 */

'use stric'

import Shape from "./Shape.js";
import Point from "./Point.js";

/** 
 * @extends Shape
 * hereda de de Shape y simboliza la forma de un rectángulo dentro
 * de un canvas.
*/
class Rectangle extends Shape {
  /**
   * Constructor de Rectangle
   * @param {Point} start Punto del triángulo.  Por defecto está asignado a (0, 0)
   * @param {number} width Punto del triángulo Por defecto está asignado a 0
   * @param {number} height Punto del triángulo Por defecto está asignado a 0
   */
  constructor(start = new Point(0, 0), width = 0, height = 0) {
    super();
    this.start = start;
    this.width = width;
    this.height = height;
  }

  /**
   * Retorna el área del rectángulo
   * @return {Number} Área del rectángulo
   */
  area() {
    return this.width * this.height;
  }

  /**
   * Retorna el perímetro del rectángulo
   * @return {Number} Perímetro del rectángulo
   */
  perimeter() {
    return this.width + this.height
  }

  /* istanbul ignore next   */
  /**
   * Se encarga de dibujar la figura que representa la clase
   * @param {Context} ctx Contexto del canvas, preferiblemente '2d'
   */
  draw(ctx) {
    if (ctx != null) {
      this.baseDraw(ctx);
      ctx.rect(this.start.x, this.start.y, this.width, this.height);
      ctx.stroke();
      ctx.fill();
    }
  }
}

export default Rectangle;