component.js 2.53 KB
/**
 * @author NHN Ent. FE Development Team <dl_javascript@nhn.com>
 * @fileoverview Component interface
 */

/**
 * Component interface
 * @class
 * @param {string} name - component name
 * @param {Graphics} graphics - Graphics instance
 * @ignore
 */
class Component {
  constructor(name, graphics) {
    /**
     * Component name
     * @type {string}
     */
    this.name = name;

    /**
     * Graphics instance
     * @type {Graphics}
     */
    this.graphics = graphics;
  }

  /**
   * Fire Graphics event
   * @returns {Object} return value
   */
  fire(...args) {
    const context = this.graphics;

    return this.graphics.fire.apply(context, args);
  }

  /**
   * Save image(background) of canvas
   * @param {string} name - Name of image
   * @param {fabric.Image} oImage - Fabric image instance
   */
  setCanvasImage(name, oImage) {
    this.graphics.setCanvasImage(name, oImage);
  }

  /**
   * Returns canvas element of fabric.Canvas[[lower-canvas]]
   * @returns {HTMLCanvasElement}
   */
  getCanvasElement() {
    return this.graphics.getCanvasElement();
  }

  /**
   * Get fabric.Canvas instance
   * @returns {fabric.Canvas}
   */
  getCanvas() {
    return this.graphics.getCanvas();
  }

  /**
   * Get canvasImage (fabric.Image instance)
   * @returns {fabric.Image}
   */
  getCanvasImage() {
    return this.graphics.getCanvasImage();
  }

  /**
   * Get image name
   * @returns {string}
   */
  getImageName() {
    return this.graphics.getImageName();
  }

  /**
   * Get image editor
   * @returns {ImageEditor}
   */
  getEditor() {
    return this.graphics.getEditor();
  }

  /**
   * Return component name
   * @returns {string}
   */
  getName() {
    return this.name;
  }

  /**
   * Set image properties
   * @param {Object} setting - Image properties
   * @param {boolean} [withRendering] - If true, The changed image will be reflected in the canvas
   */
  setImageProperties(setting, withRendering) {
    this.graphics.setImageProperties(setting, withRendering);
  }

  /**
   * Set canvas dimension - css only
   * @param {Object} dimension - Canvas css dimension
   */
  setCanvasCssDimension(dimension) {
    this.graphics.setCanvasCssDimension(dimension);
  }

  /**
   * Set canvas dimension - css only
   * @param {Object} dimension - Canvas backstore dimension
   */
  setCanvasBackstoreDimension(dimension) {
    this.graphics.setCanvasBackstoreDimension(dimension);
  }

  /**
   * Adjust canvas dimension with scaling image
   */
  adjustCanvasDimension() {
    this.graphics.adjustCanvasDimension();
  }
}

export default Component;