Source: shape/Rectangle.js

import Sprite from '../Sprite';

/**
 * @class    Rectangle
 * @memberof shape
 * @extends  Sprite
 * @desc     A sprite that renders as a rectangle
 * @author   Chris Peters
 */
export default class Rectangle extends Sprite {
    constructor(x = 0, y = 0) {
        super(x, y);

        this._fill = '#000';
        this._stroke = '';
    }

    /**
     *
     * @memberof shape
     * @method Rectangle#render
     * @param  {Object}  context The CanvasRenderingContext2D object
     * @param  {Integer} factor  The 0-1-based model of elapsed time
     * @param  {Integer} ticks   Total elapsed ticks
     */
    render(context, factor, ticks) {
        context.save();
        super.render(context, factor, ticks);

        if (this._fill) {
            context.fillStyle = this._fill;
            context.fillRect(0, 0, this._width, this._height);
        }

        if (this._stroke) {
            context.strokeStyle = this._stroke;
            context.strokeRect(0, 0, this._width, this._height);
        }

        context.restore();
    }

    /**
     * [setFill description]
     *
     * @memberof shape
     * @method Rectangle#setFill
     * @param  {String} val The fill color hex, rgb, rgba, etc.
     */
    setFill(val) {
        this._fill = val;

        return this;
    }

    /**
     * [setStroke description]
     *
     * @memberof shape
     * @method Rectangle#setStroke
     * @param  {String} val The stroke color hex, rgb, rgba, etc.
     */
    setStroke(val) {
        this._stroke = val;

        return this;
    }
}