Source: view/ViewRectangleGraphics.js

/**
 * @author    Wolfgang Kowarschick <kowa@hs-augsburg.de>
 * @copyright 2017 - 2018
 * @license   CC-BY-NC-SA-4.0
 */

import {Graphics}    from 'pixi.js';
import {stringToHex} from '/wk_pixi/util/stringToHex';

/**
 * @property {ModelRectangle} model  - the model to be visualized
 * @property {PIXI.Graphics}  sprite - a graphic object that visualizes the model
 */
class ViewRectangleGraphics
{ /**
   * @param {Object}         p_pixi_app
   * @param {ModelRectangle} p_model
   * @param {Object}         p_config
   * @param {number}         [p_config.border      = 5]
   * @param {string}         [p_config.borderColor = '#AAAAAA']
   * @param {string}         [p_config.color       = '#FFAA00']
   */
  constructor
  ( p_pixi_app,
    p_model,
    { border:      p_border       = 0,
      borderColor: p_border_color = '#000000',
      color:       p_color        = '#000000'
    }
  )
  { const c_sprite = new Graphics();

    c_sprite.lineStyle(p_border, stringToHex(p_border_color), 1);
    c_sprite.beginFill(stringToHex(p_color));
    c_sprite.drawRect(0, 0,
                      p_model.width  - 2*p_border,
                      p_model.height - 2*p_border
                     );
    c_sprite.endFill();
  
    p_pixi_app.stage.addChild(c_sprite);
  
    this.sprite = c_sprite;
    this.model  = p_model;

    this.render();
  }

  render()
  { this.sprite.x = this.model.x;
    this.sprite.y = this.model.y;
  }
}

export {ViewRectangleGraphics};