# Source: Geometry.js

    /**
     * @content 抽象基类，用于定义所有的几何对象基类功能组件
     * @author  2019-09-09
     */
    import { NativeModules } from 'react-native';
    import Rect from './Rect.js';

    let G = NativeModules.JSGeometry;

    /**
     * @class Geometry
     */
    export default class Geometry {
      /**
       * 清空几何数据
       * @memberOf Geometry
       * @returns {Promise} 清空数据成功返回1，失败返回0
       */
      async empty() {
        try {
          return await G.empty(this._MGGeometryId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 计算外包围盒
       * @memberOf Geometry
       * @returns {Promise.<Rect>} 包围盒信息
       */
      async calRect() {
        try {
          let { RectId } = await G.calRect(this._MGGeometryId);
          var rect = new Rect();
          rect._MGRectId = RectId;
          return rect;
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 是否在矩形内
       * @memberOf Geometry
       * @param rect 待比较的包围盒对象
       * @returns {Promise} 在包围盒内返回1，不在返回0
       */
      async isInRect(rect) {
        try {
          return await G.isInRect(this._MGGeometryId, rect._MGRectId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 是否和矩形相交
       * @memberOf Geometry
       * @param rect 待比较的包围盒对象
       * @returns {Promise} 和包围盒相交返回1，不相交返回0
       */
      async isInterRect(rect) {
        try {
          return await G.isInterRect(this._MGGeometryId, rect._MGRectId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 取几何维数
       * @memberOf Geometry
       * @return {Promise}几何维数
       */
      async getDimension() {
        try {
          return await G.getDimension(this._MGGeometryId);
        } catch (e) {
          console.error(e);
        }
      }

      /**
       * 获取存储内容长度
       * @memberOf Geometry
       * @return {Promise}存储长度
       */
      async length() {
        try {
          return await G.length(this._MGGeometryId);
        } catch (e) {
          console.error(e);
        }
      }
    }