    import { defaultValue } from '../../../util'
    import { Symbol } from '../../../base/symbol'
    /**
     * 三维专题图-分段信息
     * @class ClassBreakInfo
     * @moduleEX RendererModule
     * @classdesc 三维专题图-分段信息
     * @param {Object} options 初始化参数
     * @param {Number} [options.minValue] 设置分段间隔的最小值
     * @param {Number} [options.maxValue] 设置分段间隔的最大值
     * @param {Symbol} [options.symbol] 符号，用来渲染分段间隔最小-最大值之间的要素
     * @param {String} [options.label] 标签信息
     * @param {Boolean} [options.visible = true] 是否可视化分段信息
     */
    class ClassBreakInfo {
      constructor(options) {
        options = defaultValue(options, {})
        /**
         * 设置分段间隔的最小值
         * @member {Number} ClassBreakInfo.prototype.minValue
         */
        this.minValue = options.minValue
        /**
         * 设置分段间隔的最大值
         * @member {Number} ClassBreakInfo.prototype.maxValue
         */
        this.maxValue = options.maxValue
        /**
         *符号，用来渲染分段间隔最小-最大值之间的要素
         * @member {Symbol} ClassBreakInfo.prototype.symbol
         */
        this.symbol = Symbol.fromJSON(options.symbol)
        /**
         * 标签信息
         * @member {String} ClassBreakInfo.prototype.label
         */
        this.label = defaultValue(options.label, null)
        /**
         * 标签信息
         * @member {String} ClassBreakInfo.prototype.description
         */
        this.description = defaultValue(options.description, null)
        /**
         * 是否可视化分段信息
         * @member {Boolean} ClassBreakInfo.prototype.visible
         */
        this.visible = defaultValue(options.visible, true)
      }

      /**
       * @description 将JSON格式的分段信息转换为JS对象
       * @param {Object} json 分段信息的实例化JSON
       */
      static fromJSON(json) {
        json = defaultValue(json, {})
        return new ClassBreakInfo(json)
      }

      /**
       * 将JS对象转换为JSON格式
       * @returns {Object} 分段信息的实例化JSON
       */
      toJSON() {
        return {
          minValue: this.minValue,
          maxValue: this.maxValue,
          symbol: this.symbol.toJSON(),
          label: this.label,
          description: this.description,
          visible: this.visible
        }
      }

      /**
       * 克隆ClassBreakInfo对象
       * @return {ClassBreakInfo} 克隆后的ClassBreakInfo对象
       */
      clone() {
        return new ClassBreakInfo(this.toJSON())
      }
    }

    export default ClassBreakInfo