    import { defaultValue, defined, SymbolType } from '@mapgis/webclient-common'
    import CesiumPluginUtil from '../CesiumPluginUtil'

    /**
     * @description 转换简单线符号为Cesium Graphics样式
     * @param {String} type 几何样式
     * @param {*} paintStyle graphics样式
     * @param {*} symbol 符号
     * @return {*}
     */
    function convertSimpleLineSymbolToGraphicStyle(type, paintStyle, symbol) {
      const color = CesiumPluginUtil.convertColorToRgb(symbol.color)
      paintStyle['color'] = color

      if (symbol && defined(symbol.width)) {
        paintStyle['width'] = symbol.width
      }
      // 不支持线首尾角
      // 不支持线接角
      // 不支持线style
      // 无法设置marker
    }

    /**
     * @description 转换填充符号为Cesium Graphics样式
     * @param {String} type 几何样式
     * @param {*} paintStyle graphics样式
     * @param {*} symbol 符号
     * @return {*}
     */
    function convertSimpleFillSymbolToGraphicStyle(type, paintStyle, symbol) {
      switch (type) {
        case 'rectangle': {
          paintStyle['color'] = CesiumPluginUtil.convertColorToRgb(symbol.color)
          // 无法设置区域边线
          // 无法设置区域边线透明度
          // 无法设置style
          break
        }
        case 'circle': {
          paintStyle['color'] = CesiumPluginUtil.convertColorToRgb(symbol.color)
          // 无法设置区域边线
          // 无法设置区域边线透明度
          // 无法设置style
          break
        }
        case 'polygon': {
          paintStyle['color'] = CesiumPluginUtil.convertColorToRgb(symbol.color)
          // 无法设置区域边线
          // 无法设置区域边线透明度
          // 无法设置style
          break
        }
        default: {
          paintStyle['color'] = CesiumPluginUtil.convertColorToRgb(symbol.color)
        }
      }
    }
    /**
     * @description 转换点符号为Cesium Graphics样式
     * @param {String} type 几何样式
     * @param {*} paintStyle graphics样式
     * @param {*} symbol 符号
     * @return {*}
     */
    function convertSimpleMarkerSymbolToGraphicStyle(type, paintStyle, symbol) {
      /**
       * const pictureMarkerSymbol = new PictureMarkerSymbol({
            color: new Color(252, 100, 22, 1),
            angle: 90,
            xoffset: -1,
            yoffset: 5,
            height: 20,
            width: 30,
            url: "xxx",
            outline: new SimpleLineSymbol({
              color: new Color(255, 0, 0, 1),
              width: 2,
            }),
          });
       *
       */

      // 无法设置xoffset、yoffset
      paintStyle['color'] = CesiumPluginUtil.convertColorToRgb(symbol.color)
      if (defined(symbol.outline)) {
        const _paintStyle = {}
        convertSimpleLineSymbolToGraphicStyle(type, _paintStyle, symbol.outline)
        if (defined(_paintStyle['color'])) {
          paintStyle['outlineColor'] = _paintStyle['color']
        }

        if (defined(_paintStyle['width'])) {
          paintStyle['outlineWidth'] = _paintStyle['width']
        }
      }
      paintStyle['pixelSize'] = parseFloat(defaultValue(symbol['size'], 10))

      // 无法支持angle
      // 无法支持path
      // 无法支持style
    }

    /**
     * @description 转换点符号为Cesium Graphics样式
     * @param {String} type 几何样式
     * @param {*} paintStyle graphics样式
     * @param {*} symbol 符号
     * @return {*}
     */
    function convertPictureMarkerSymbolToGraphicStyle(type, paintStyle, symbol) {
      /**
     *
      *  new Cesium.Graphic({
          //标绘类型
          type: 'billboard',
          //标绘位置
          positions: [Cesium.Cartesian3.fromDegrees(114.4052, 30.4630, 0)],
          //标绘样式
          style: {
              //广告牌图片URL
              image: 'http://192.168.82.89:8200/NoneSpatialData/image/icon.png',
              //广告牌宽度
              width: 64,
              //广告牌高度
              height: 64,
              //离地高度
              offsetHeight: 600
          }
      })
     *
     */

      paintStyle['color'] = CesiumPluginUtil.convertColorToRgb(symbol.color)
      if (defined(symbol.outline)) {
        const _paintStyle = {}
        convertSimpleLineSymbolToGraphicStyle(type, _paintStyle, symbol.outline)
        if (defined(_paintStyle['color'])) {
          paintStyle['outlineColor'] = _paintStyle['color']
        }

        if (defined(_paintStyle['width'])) {
          paintStyle['outlineWidth'] = _paintStyle['width']
        }
      }

      if (defined(symbol.height)) {
        paintStyle['height'] = symbol.height
      }

      if (defined(symbol.width)) {
        paintStyle['width'] = symbol.width
      }

      if (defined(symbol.url)) {
        paintStyle['image'] = symbol.url
      }

      // 无法设置xoffset、yoffset
      // 无法支持angle
      // 无法支持path
      // 无法支持style
    }

    class ConvertSymbolToGraphicStyle {
      constructor() {}

      /**
       * @description 转换为cesium graphic Style
       * @public
       * @param {*} symbol
       * @param {*} type
       * @return {*}
       */
      static convertSymbolToGraphicStyle(symbol, type) {
        const style = {}
        switch (symbol.type) {
          case SymbolType.marker: {
            convertSimpleMarkerSymbolToGraphicStyle(type, style, symbol)
            break
          }
          case SymbolType.pictureMarker: {
            convertPictureMarkerSymbolToGraphicStyle(type, style, symbol)
            break
          }
          case SymbolType.simpleLine: {
            convertSimpleLineSymbolToGraphicStyle(type, style, symbol)
            break
          }
          case SymbolType.simpleFill: {
            convertSimpleFillSymbolToGraphicStyle(type, style, symbol)
            break
          }
          default: {
            convertSimpleFillSymbolToGraphicStyle(type, style, symbol)
            break
          }
        }
        return style
      }
    }
    export default ConvertSymbolToGraphicStyle