    import Zondy from '../Zondy'
    import { defaultValue } from '../../util'
    import { SymbolType } from '../enum'
    import FillSymbol from './FillSymbol'

    /**
     * 简单填充符号，参考示例：<a href='#new-SimpleFillSymbol'>[填充符号样式]</a>
     * <br><br>[ES5引入方式]：<br/>
     * Zondy.Symbol.SimpleFillSymbol() <br/>
     * [ES6引入方式]：<br/>
     * import { SimpleFillSymbol } from "@mapgis/webclient-common" <br/>
     * <br/>
     * @class SimpleFillSymbol
     * @moduleEX BaseModule
     * @extends FillSymbol
     * @param {Object} options 构造参数
     * @param {Color|String} [options.color = new Color(255, 255, 255, 0.25)] 填充颜色
     * @param {SimpleLineSymbol} [options.outline = new SimpleLineSymbol()] 外边线样式
     * @param {String} [options.style = 'solid'] 填充样式，默认"solid",可选"backward-diagonal"|"cross"|"diagonal-cross"|"forward-diagonal"|"horizontal"|"none"|"solid"|"vertical"
     *
     * @summary <h5>支持如下方法：</h5>
     * [1、克隆并返回新的符号对象]{@link Symbol#clone} <br/>
     * [2、导出一个JSON对像]{@link Symbol#toJSON} <br/>
     * <a href='#fromJSON'>[3、通过json构造并返回一个新的SimpleFillSymbol对象]</a>
     *
     * @example <caption><h7 id='new-SimpleFillSymbol'>填充符号样式</h7></caption>
     * // ES5引入方式
     * const { SimpleFillSymbol } = Zondy.Symbol
     * const { Color } = Zondy
     * // ES6引入方式
     * import { SimpleFillSymbol, Color } from "@mapgis/webclient-common"
     * const simpleFillSymbol = new SimpleFillSymbol({
     *   // 填充颜色
     *   color: new Color(255, 0, 0, 1),
     *   // 填充样式
     *   style: "solid",
     *   // 外边线样式
     *   outline: new SimpleLineSymbol({
     *     // 外边线颜色
     *     color: new Color(255, 0, 0, 1),
     *     // 外边线宽度
     *     width: 2
     *   })
     * })
     */
    class SimpleFillSymbol extends FillSymbol {
      constructor(options) {
        super(options)
        options = defaultValue(options, {})
        /**
         * 符号类型
         * @member {String} SimpleFillSymbol.prototype.type
         */
        this.type = SymbolType.simpleFill
        /**
         * 填充样式
         * @member {String} SimpleFillSymbol.prototype.style
         */
        this.style = defaultValue(options.style, 'solid')
      }

      /**
       * 通过json构造并返回一个新的SimpleFillSymbol对象<a id='fromJSON'></a>
       * @param {Object} json 符号的实例化JSON
       * @return {SimpleFillSymbol} 新的SimpleFillSymbol对象
       * @example <caption><h7>通过json构造并返回一个新的SimpleFillSymbol对象</h7></caption>
       */
      static fromJSON(json) {
        json = defaultValue(json, {})
        return new SimpleFillSymbol(json)
      }

      /**
       * 克隆并返回新的符号对象
       * @return {SimpleFillSymbol} 克隆后的新符号对象
       */
      clone() {
        return new SimpleFillSymbol(this.toJSON())
      }

      /**
       * 导出为JSON对象
       * @return {Object} JSON对像
       */
      toJSON() {
        const json = super.toJSON()
        json.style = this.style
        return json
      }
    }
    Zondy.Symbol.SimpleFillSymbol = SimpleFillSymbol
    export default SimpleFillSymbol