Source: LineStyle.js

/*
 * @Description: In User Settings Edit
 * @Author: xiaoying
 * @Date: 2019-09-10 16:19:14
 * @LastEditTime: 2019-09-11 09:23:47
 * @LastEditors: mayuanye
 */
import { NativeModules } from 'react-native';
let LS = NativeModules.JSLineStyle;

/**
 * @class LineStyle
 * @description 线样式(实线)
 */
export default class LineStyle {
  /**
   * 构造一个新的LineStyle对象,可通过无参或有参构造。
   * 有参构造的参数为:颜色(string,eg:'rgba(128, 128, 128, 128)')、线宽(float类型的Number)
   *
   * @memberof LineStyle
   * @returns {Promise<LineStyle>}
   */
  async createObj() {
    try {
      if (
        typeof arguments[0] === 'string' &&
        typeof arguments[1] === 'number'
      ) {
        let { LineStyleId } = await LS.createObjByCW(
          arguments[0],
          arguments[1]
        );
        let lineStyle = new LineStyle();
        lineStyle._MGLineStyleId = LineStyleId;
        return lineStyle;
      } else {
        let { LineStyleId } = await LS.createObj();
        let lineStyle = new LineStyle();
        lineStyle._MGLineStyleId = LineStyleId;
        return lineStyle;
      }
    } catch (e) {
      console.error(e);
    }
  }

  // /**
  //  * 通过颜色、线宽构造一个新的LineStyle对象
  //  *
  //  * @memberof LineStyle
  //  * @param {Number} color 颜色(int类型的Number)
  //  * @param {Number} width 线宽(float类型的Number)
  //  * @returns {Promise<LineStyle>}
  //  */
  // async createObjByCW(color, width){
  //     try {
  //         var {LineStyleId} = await LS.createObjByCW(color, width);
  //         var lineStyle = new LineStyle();
  //         lineStyle._MGLineStyleId = LineStyleId;
  //         return lineStyle;
  //     } catch (e) {
  //         console.error(e);
  //     }
  // }

  /**
   * 获取线的颜色
   *
   * @memberof LineStyle
   * @returns {String} 线颜色 
   */
  async getColor() {
    try {
      let color = await LS.getColor(this._MGLineStyleId);
      return color;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置线颜色
   *
   * @memberof LineStyle
   * @param {String} color 线颜色 eg:'rgba(128, 128, 128, 128)'
   * @returns {Promise<Void>}
   */
  async setColor(color) {
    try {
      await LS.setColor(this._MGLineStyleId, color);
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 获取线宽
   *
   * @memberof LineStyle
   * @returns {Number} 线宽 (float类型的Number)
   */
  async getWidth() {
    try {
      let width = await LS.getWidth(this._MGLineStyleId);
      return width;
    } catch (e) {
      console.error(e);
    }
  }

  /**
   * 设置线宽
   *
   * @memberof LineStyle
   * @param {Number} width 线宽(dp) (float类型的Number)
   * @returns {Promise<Void>}
   */
  async setWidth(width) {
    try {
      await LS.setWidth(this._MGLineStyleId, width);
    } catch (e) {
      console.error(e);
    }
  }
}