    import FillSymbol from './FillSymbol'
    import { SymbolType } from '../enum'
    import { defaultValue } from '../../util'
    /**
     * 简单标记符号
     * @class PictureFillSymbol
     * @extends FillSymbol
     * @moduleEX BaseModule
     * @classdesc 图片填充符号
     * @param {options} options 构造参数
     * @param {String} [options.type = 'picture-fill'] 简单填充符号类型，只能是picture-fill
     * @param {Number} [options.height=12] 简单填充符号高度，默认为12，单位像素
     * @param {String} [options.url] 图片请求地址,支持baseUrl
     * @param {Number} [options.width=12] 简单填充符号宽度，默认为12，单位像素
     * @param {Number} [options.xoffset=0] x方向偏移，默认为0，单位像素
     * @param {Number} [options.xscale=1] x方向拉伸
     * @param {Number} [options.yoffset=0] y方向偏移，默认为0，单位像素
     * @param {Number} [options.yscale=1] y方向拉伸
     */
    class PictureFillSymbol extends FillSymbol {
      constructor(options) {
        super(options)
        options = defaultValue(options, {})
        /**
         * 符号类型
         * @member {String} PictureFillSymbol.prototype.type
         */
        this.type = SymbolType.pictureFill
        /**
         * 简单填充符号高度，默认为12，单位像素
         * @member {Number} PictureFillSymbol.prototype.height
         */
        this.height = defaultValue(options.height, 12)
        /**
         * 图片请求地址
         * @member {String} PictureFillSymbol.prototype.url
         */
        this.url = defaultValue(options.url, '')
        /**
         * 简单填充符号宽度，默认为12，单位像素
         * @member {Number} PictureFillSymbol.prototype.width
         */
        this.width = defaultValue(options.width, 12)
        /**
         * x方向偏移，默认为0，单位像素
         * @member {Number} PictureFillSymbol.prototype.xoffset
         */
        this.xoffset = defaultValue(options.xoffset, 0)
        /**
         * x方向拉伸
         * @member {Number} PictureFillSymbol.prototype.xscale
         */
        this.xscale = defaultValue(options.xscale, 1)
        /**
         *  y方向偏移，默认为0，单位像素
         * @member {Number} PictureFillSymbol.prototype.yoffset
         */
        this.yoffset = defaultValue(options.yoffset, 0)
        /**
         * y方向拉伸
         * @member {String} PictureFillSymbol.prototype.yscale
         */
        this.yscale = defaultValue(options.yscale, 1)
      }

      /**
       * @description 将JSON格式的符号转换为JS对象
       * @param {PictureFillSymbol} 符号的实例化对象
       */
      static fromJSON(json) {
        json = defaultValue(json, {})
        return new PictureFillSymbol(json)
      }

      /**
       * 将JS对象转换为JSON格式
       * @returns {Object} 符号的实例化JSON
       */
      toJSON() {
        return {
          type: this.type,
          height: this.height,
          outline: this.outline.toJSON(),
          url: this.url,
          width: this.width,
          xoffset: this.xoffset,
          xscale: this.xscale,
          yoffset: this.yoffset,
          yscale: this.yscale
        }
      }

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

    export default PictureFillSymbol