类名 leaflet/document/theme/ThemeStyle.js
import { Zondy } from '@mapgis/webclient-common'
// eslint-disable-next-line import/no-extraneous-dependencies
import { extend } from '@mapgis/webclient-graphic-render'

/**
 * @class Zondy.ThemeLayer.ThemeStyle
 * @classdesc 客户端专题图风格类。
 * @param {Object} options - 可选参数。
 * @param {boolean} [options.fill=true] - 是否填充,不需要填充则设置为 false。如果 fill 与 stroke 同时为 false,将按 fill 与 stroke 的默认值渲染图层。
 * @param {string} [options.fillColor='#000000'] - 十六进制填充颜色。
 * @param {number} [options.fillOpacity=1] - 填充不透明度。取值范围[0, 1]。
 * @param {boolean} [options.stroke=false] -  是否描边,不需要描边则设置为false。如果 fill 与 stroke 同时为 false,将按 fill 与 stroke 的默认值渲染图层。
 * @param {string} [options.strokeColor='#000000'] - 十六进制描边颜色。
 * @param {number} [options.strokeOpacity=1] - 描边的不透明度。取值范围[0, 1]。
 * @param {number} [options.strokeWidth=1] - 线宽度/描边宽度。
 * @param {string} [options.strokeLinecap='butt'] - 线帽样式。strokeLinecap 有三种类型 “butt", "round", "square"。
 * @param {string} [options.strokeLineJoin='iter'] - 线段连接样式。strokeLineJoin 有三种类型 “miter", "round", "bevel"。
 * @param {string} [options.strokeDashstyle='solid'] - 虚线类型。strokeDashstyle 有八种类型 “dot",“dash",“dashdot",“longdash",“longdashdot",“solid", "dashed", "dotted"。solid 表示实线。
 * @param {number} [options.pointRadius=6] - 点半径,单位为像素。
 * @param {number} [options.shadowBlur=0] - 阴影模糊度,(大于 0 有效;)。注:请将 shadowColor 属性与 shadowBlur 属性一起使用,来创建阴影。
 * @param {string} [options.shadowColor='#000000'] - 阴影颜色。注:请将 shadowColor 属性与 shadowBlur 属性一起使用,来创建阴影。
 * @param {number} [options.shadowOffsetX=0] - 阴影 X 方向偏移值。
 * @param {number} [options.shadowOffsetY=0] - 阴影 Y 方向偏移值。
 * @param {string} options.label - 专题要素附加文本标签内容。
 * @param {string} [options.fontColor] - 附加文本字体颜色。
 * @param {number} [options.fontSize=12] - 附加文本字体大小,单位是像素。
 * @param {string} [options.fontStyle='normal'] - 附加文本字体样式。可设值:"normal", "italic", "oblique"。
 * @param {string} [options.fontVariant='normal'] - 附加文本字体变体。可设值:"normal", "small-caps"。
 * @param {string} [options.fontWeight='normal'] - 附加文本字体粗细。可设值:"normal", "bold", "bolder", "lighter"。
 * @param {string} [options.fontFamily='arial,sans-serif'] - 附加文本字体系列。fontFamily 值是字体族名称或/及类族名称的一个优先表,每个值逗号分割,
 *                             浏览器会使用它可识别的第一个可以使用具体的字体名称("times"、"courier"、"arial")或字体系列名称
 *                              ("serif"、"sans-serif"、"cursive"、"fantasy"、"monospace")。
 * @param {string} [options.labelPosition='top'] - 附加文本位置, 可以是 'inside', 'left', 'right', 'top', 'bottom'。
 * @param {string} [options.labelAlign='center'] - 附加文本水平对齐。可以是 'left', 'right', 'center'。
 * @param {string} [options.labelBaseline='middle'] - 附加文本垂直对齐。 可以是 'top', 'bottom', 'middle' 。
 * @param {number} [options.labelXOffset=0] - 附加文本在x轴方向的偏移量。
 * @param {number} [options.labelYOffset=0] - 附加文本在y轴方向的偏移量。
 */
class ThemeStyle {
  constructor(options) {
    options = options || {}
    /**
     * @member {boolean} [Zondy.ThemeLayer.ThemeStyle.prototype.fill=true]
     * @description 是否填充,不需要填充则设置为 false。如果 fill 与 stroke 同时为 false,将按 fill 与 stroke 的默认值渲染图层。
     */
    this.fill = true
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.fillColor="#000000"]
     * @description 十六进制填充颜色。
     */
    this.fillColor = '#000000'
    /**
     *  @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.fillOpacity=1]
     *  @description 填充不透明度。取值范围[0, 1]。
     */
    this.fillOpacity = 1
    /**
     * @member {boolean} [Zondy.ThemeLayer.ThemeStyle.prototype.stroke=false]
     * @description  是否描边,不需要描边则设置为false。如果 fill 与 stroke 同时为 false,将按 fill 与 stroke 的默认值渲染图层。
     */
    this.stroke = false
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.strokeColor="#000000"]
     * @description  十六进制描边颜色。
     */
    this.strokeColor = '#000000'
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.strokeOpacity=1]
     * @description  描边的不透明度。取值范围[0, 1]。
     */
    this.strokeOpacity = 1
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.strokeWidth=1]
     * @description  线宽度/描边宽度。
     */
    this.strokeWidth = 1
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.strokeLinecap="butt"]
     * @description  线帽样式;strokeLinecap 有三种类型 “butt", "round", "square" 。
     */
    this.strokeLinecap = 'butt'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.strokeLineJoin="miter"]
     * @description  线段连接样式;strokeLineJoin 有三种类型 “miter", "round", "bevel"。
     */
    this.strokeLineJoin = 'miter'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.strokeDashstyle="solid"]
     * @description   虚线类型; strokeDashstyle 有八种类型 “dot",“dash",“dashdot",“longdash",“longdashdot",“solid", "dashed", "dotted";
     * solid 表示实线。
     */
    this.strokeDashstyle = 'solid'
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.pointRadius=6]
     * @description   点半径。单位为像素。
     */
    this.pointRadius = 6
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.shadowBlur=0]
     * @description   阴影模糊度,(大于 0 有效)。注:请将 shadowColor 属性与 shadowBlur 属性一起使用,来创建阴影。
     */
    this.shadowBlur = 0
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.shadowColor='#000000']
     * @description  阴影颜色。注:请将 shadowColor 属性与 shadowBlur 属性一起使用,来创建阴影。
     */
    this.shadowColor = '#000000'
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.shadowOffsetX=0]
     * @description 阴影 X 方向偏移值。
     */
    this.shadowOffsetX = 0
    /**
     * @member {number} Zondy.ThemeLayer.ThemeStyle.prototype.shadowOffsetY
     * @description Y 方向偏移值。
     */
    this.shadowOffsetY = 0
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.label]
     * @description 专题要素附加文本标签内容。
     */
    this.label = ''
    /**
     * @member {boolean} [Zondy.ThemeLayer.ThemeStyle.prototype.labelRect=false]
     * @description 是否显示文本标签矩形背景。
     */
    this.labelRect = false
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.fontColor]
     * @description 附加文本字体颜色。
     */
    this.fontColor = ''
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.fontSize=12]
     * @description 附加文本字体大小,单位是像素。
     */
    this.fontSize = 12
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.fontStyle="normal"]
     * @description 附加文本字体样式。可设值:"normal", "italic", "oblique"。
     */
    this.fontStyle = 'normal'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.fontVariant="normal"]
     * @description 附加文本字体变体。可设值:"normal", "small-caps"。
     */
    this.fontVariant = 'normal'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.fontWeight="normal"]
     * @description 附加文本字体粗细。可设值:"normal", "bold", "bolder", "lighter"。
     */
    this.fontWeight = 'normal'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.fontFamily="arial,sans-serif"]
     * @description 附加文本字体系列。fontFamily 值是字体族名称或/及类族名称的一个优先表,每个值逗号分割,浏览器会使用它可识别的第一个
     * 可以使用具体的字体名称("times"、"courier"、"arial")或字体系列名称("serif"、"sans-serif"、"cursive"、"fantasy"、"monospace")。
     */
    this.fontFamily = 'arial,sans-serif'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.labelPosition='top']
     * @description 附加文本位置, 可以是 'inside', 'left', 'right', 'top', 'bottom'。
     */
    this.labelPosition = 'top'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.labelAlign='center']
     * @description 附加文本水平对齐。可以是 'left', 'right', 'center'。
     */
    this.labelAlign = 'center'
    /**
     * @member {string} [Zondy.ThemeLayer.ThemeStyle.prototype.labelBaseline='middle']
     * @description  附加文本垂直对齐。 可以是 'top', 'bottom', 'middle'。
     */
    this.labelBaseline = 'middle'
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.labelXOffset=0]
     * @description  附加文本在 X 轴方向的偏移量。
     */
    this.labelXOffset = 0
    /**
     * @member {number} [Zondy.ThemeLayer.ThemeStyle.prototype.labelYOffset=0]
     * @description 附加文本在 Y 轴方向的偏移量。
     */
    this.labelYOffset = 0

    extend(this, options)
  }
}

Zondy.ThemeLayer.ThemeStyle = ThemeStyle
export default ThemeStyle
构造函数
成员变量
方法
事件