@antv/l7-layers 2.9.17-alpha.0 → 2.9.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/core/BaseLayer.js +10 -6
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/interface.d.ts +13 -0
- package/es/core/interface.js.map +1 -1
- package/es/core/triangulation.d.ts +0 -1
- package/es/core/triangulation.js +9 -36
- package/es/core/triangulation.js.map +1 -1
- package/es/image/index.d.ts +1 -1
- package/es/image/index.js +14 -2
- package/es/image/index.js.map +1 -1
- package/es/image/models/dataImage.d.ts +22 -0
- package/es/image/models/dataImage.js +235 -0
- package/es/image/models/dataImage.js.map +1 -0
- package/es/image/models/image.d.ts +1 -0
- package/es/image/models/image.js +8 -1
- package/es/image/models/image.js.map +1 -1
- package/es/image/models/index.d.ts +1 -1
- package/es/image/models/index.js +3 -1
- package/es/image/models/index.js.map +1 -1
- package/es/line/models/arc.js +2 -2
- package/es/line/models/arc.js.map +1 -1
- package/es/line/models/great_circle.js +2 -2
- package/es/line/models/line.js +1 -1
- package/es/line/models/simpleLine.d.ts +0 -1
- package/es/line/models/simpleLine.js +10 -53
- package/es/line/models/simpleLine.js.map +1 -1
- package/es/plugins/LayerModelPlugin.js +2 -0
- package/es/plugins/LayerModelPlugin.js.map +1 -1
- package/es/point/index.js +11 -7
- package/es/point/index.js.map +1 -1
- package/es/point/models/text.js +2 -0
- package/es/point/models/text.js.map +1 -1
- package/es/tile/manager/tileLayerManager.js +22 -2
- package/es/tile/manager/tileLayerManager.js.map +1 -1
- package/es/utils/extrude_polyline.d.ts +0 -15
- package/es/utils/extrude_polyline.js +6 -138
- package/es/utils/extrude_polyline.js.map +1 -1
- package/es/utils/simpleLine.d.ts +23 -0
- package/es/utils/simpleLine.js +105 -0
- package/es/utils/simpleLine.js.map +1 -0
- package/es/wind/models/wind.d.ts +2 -0
- package/es/wind/models/wind.js +62 -33
- package/es/wind/models/wind.js.map +1 -1
- package/es/wind/models/windRender.js +1 -1
- package/es/wind/models/windRender.js.map +1 -1
- package/lib/core/BaseLayer.js +10 -6
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/core/triangulation.js +10 -36
- package/lib/core/triangulation.js.map +1 -1
- package/lib/image/index.js +14 -2
- package/lib/image/index.js.map +1 -1
- package/lib/image/models/dataImage.js +250 -0
- package/lib/image/models/dataImage.js.map +1 -0
- package/lib/image/models/image.js +8 -1
- package/lib/image/models/image.js.map +1 -1
- package/lib/image/models/index.js +4 -1
- package/lib/image/models/index.js.map +1 -1
- package/lib/line/models/arc.js +2 -2
- package/lib/line/models/arc.js.map +1 -1
- package/lib/line/models/great_circle.js +2 -2
- package/lib/line/models/line.js +1 -1
- package/lib/line/models/simpleLine.js +10 -53
- package/lib/line/models/simpleLine.js.map +1 -1
- package/lib/plugins/LayerModelPlugin.js +2 -0
- package/lib/plugins/LayerModelPlugin.js.map +1 -1
- package/lib/point/index.js +11 -7
- package/lib/point/index.js.map +1 -1
- package/lib/point/models/text.js +2 -0
- package/lib/point/models/text.js.map +1 -1
- package/lib/tile/manager/tileLayerManager.js +22 -2
- package/lib/tile/manager/tileLayerManager.js.map +1 -1
- package/lib/utils/extrude_polyline.js +6 -140
- package/lib/utils/extrude_polyline.js.map +1 -1
- package/lib/utils/simpleLine.js +117 -0
- package/lib/utils/simpleLine.js.map +1 -0
- package/lib/wind/models/wind.js +61 -33
- package/lib/wind/models/wind.js.map +1 -1
- package/lib/wind/models/windRender.js +1 -1
- package/lib/wind/models/windRender.js.map +1 -1
- package/package.json +5 -5
package/lib/point/models/text.js
CHANGED
|
@@ -573,6 +573,8 @@ var TextModel = function (_BaseModel) {
|
|
|
573
573
|
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
574
574
|
}).then(function (model) {
|
|
575
575
|
_this4.layer.models = [model];
|
|
576
|
+
|
|
577
|
+
_this4.layer.renderLayers();
|
|
576
578
|
}).catch(function (err) {
|
|
577
579
|
console.warn(err);
|
|
578
580
|
_this4.layer.models = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/point/models/text.ts"],"names":["TextTriangulation","feature","that","id","vertices","indices","glyphInfoMap","size","centroid","coord","length","glyphQuads","forEach","quad","index","push","tex","x","y","height","tl","width","tr","br","bl","TextModel","callbackModel","layer","getLayerConfig","mask","maskInside","mapping","buildLayerModel","moduleName","vertexShader","textVert","fragmentShader","textFrag","triangulation","bind","depth","enable","blend","getBlend","stencil","then","model","catch","err","console","warn","initGlyph","updateTexture","filterGlyphs","reBuildModel","opacity","stroke","strokeWidth","textAnchor","textAllowOverlap","halo","gamma","raisingHeight","fontService","canvas","Object","keys","textCount","preTextStyle","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","rowCount","dataTexture","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_raisingHeight","Number","u_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_sdf_map","texture","u_halo_blur","u_gamma_scale","u_sdf_map_size","on","extent","textExtent","buildModels","zoom","mapService","getZoom","getBounds","flag","Math","abs","currentZoom","destroy","off","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","update","featureIdx","vertex","attributeIdx","rotate","Array","isArray","STATIC_DRAW","bounds","fontWeight","fontFamily","characterSet","item","shape","toString","char","indexOf","setFontOptions","iconfont","spacing","glyphInfo","map","textOffset","shaping","coordinates","originCentroid","version","originCoordinates","padding","rendererService","getViewportSize","collisionIndex","CollisionIndex","filterData","filter","fontScale","pixels","lngLatToContainer","placeCollisionBox","x1","left","x2","right","y1","top","y2","bottom","anchorPointX","anchorPointY","box","insertCollisionBox","initIconFontTex","initTextFont","generateGlyphLayout","textureHeight","mag","LINEAR","min","models","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport {\n boundsContains,\n calculateCentroid,\n getMask,\n padBounds,\n} from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport CollisionIndex from '../../utils/collision-index';\nimport {\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../../utils/symbol-layout';\nimport textFrag from '../shaders/text_frag.glsl';\nimport textVert from '../shaders/text_vert.glsl';\n\nexport function TextTriangulation(feature: IEncodeFeature) {\n // @ts-ignore\n const that = this as TextModel;\n const id = feature.id as number;\n const vertices: number[] = [];\n const indices: number[] = [];\n\n if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {\n return {\n vertices: [], // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices: [],\n size: 7,\n };\n }\n const centroid = that.glyphInfoMap[id].centroid as number[]; // 计算中心点\n const coord =\n centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;\n that.glyphInfoMap[id].glyphQuads.forEach(\n (quad: IGlyphQuad, index: number) => {\n vertices.push(\n ...coord,\n quad.tex.x,\n quad.tex.y + quad.tex.height,\n quad.tl.x,\n quad.tl.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y + quad.tex.height,\n quad.tr.x,\n quad.tr.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y,\n quad.br.x,\n quad.br.y,\n ...coord,\n quad.tex.x,\n quad.tex.y,\n quad.bl.x,\n quad.bl.y,\n );\n indices.push(\n 0 + index * 4,\n 1 + index * 4,\n 2 + index * 4,\n 2 + index * 4,\n 3 + index * 4,\n 0 + index * 4,\n );\n },\n );\n return {\n vertices, // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices,\n size: 7,\n };\n}\n\nexport default class TextModel extends BaseModel {\n public glyphInfo: IEncodeFeature[];\n public glyphInfoMap: {\n [key: string]: {\n shaping: any;\n glyphQuads: IGlyphQuad[];\n centroid: number[];\n };\n } = {};\n private texture: ITexture2D;\n private currentZoom: number = -1;\n private extent: [[number, number], [number, number]];\n private textureHeight: number = 0;\n private textCount: number = 0;\n private preTextStyle: Partial<IPointLayerStyleOptions> = {};\n public getUninforms(): IModelUniform {\n const {\n opacity = 1.0,\n stroke = '#fff',\n strokeWidth = 0,\n textAnchor = 'center',\n textAllowOverlap = false,\n halo = 0.5,\n gamma = 2.0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { canvas, mapping } = this.fontService;\n if (Object.keys(mapping).length !== this.textCount) {\n this.updateTexture();\n this.textCount = Object.keys(mapping).length;\n }\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeWidth,\n stroke,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n strokeWidth,\n stroke,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_raisingHeight: Number(raisingHeight),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 1.0,\n u_stroke_color: this.getStrokeColor(stroke),\n\n u_sdf_map: this.texture,\n u_halo_blur: halo,\n u_gamma_scale: gamma,\n u_sdf_map_size: [canvas.width, canvas.height],\n };\n }\n\n public initModels(callbackModel: (models: IModel[]) => void) {\n this.layer.on('remapping', this.mapping);\n this.extent = this.textExtent();\n const {\n textAnchor = 'center',\n textAllowOverlap = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n this.buildModels(callbackModel);\n }\n\n public buildModels = async (callbackModel: (models: IModel[]) => void) => {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.mapping();\n\n this.layer\n .buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n })\n .then((model) => {\n callbackModel([model]);\n })\n .catch((err) => {\n console.warn(err);\n callbackModel([]);\n });\n };\n public needUpdate() {\n const {\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n // textAllowOverlap 发生改变\n const zoom = this.mapService.getZoom();\n const extent = this.mapService.getBounds();\n const flag = boundsContains(this.extent, extent);\n // 文本不能压盖则进行过滤\n if (\n (!textAllowOverlap && (Math.abs(this.currentZoom - zoom) > 1 || !flag)) ||\n textAllowOverlap !== this.preTextStyle.textAllowOverlap\n ) {\n this.reBuildModel();\n return true;\n }\n return false;\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.layer.off('remapping', this.mapping);\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'textOffsets',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_textOffsets',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5], vertex[6]];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 12 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'textUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_tex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n\n private mapping = () => {\n this.initGlyph();\n this.updateTexture();\n this.filterGlyphs();\n this.reBuildModel();\n };\n private textExtent(): [[number, number], [number, number]] {\n const bounds = this.mapService.getBounds();\n return padBounds(bounds, 0.5);\n }\n /**\n * 生成文字纹理(生成文字纹理字典)\n */\n private initTextFont() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n for (const char of shape) {\n // 去重\n if (characterSet.indexOf(char) === -1) {\n characterSet.push(char);\n }\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: false,\n });\n }\n\n /**\n * 生成 iconfont 纹理字典\n */\n private initIconFontTex() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = `${shape}`;\n if (characterSet.indexOf(shape) === -1) {\n characterSet.push(shape);\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: true,\n });\n }\n\n /**\n * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)\n */\n private generateGlyphLayout(iconfont: boolean) {\n // TODO:更新文字布局\n const { mapping } = this.fontService;\n const {\n spacing = 2,\n textAnchor = 'center',\n // textOffset,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n\n this.glyphInfo = data.map((feature: IEncodeFeature) => {\n const { shape = '', id, size = 1, textOffset = [0, 0] } = feature;\n\n const shaping = shapeText(\n shape.toString(),\n mapping,\n // @ts-ignore\n size,\n textAnchor,\n 'left',\n spacing,\n textOffset,\n iconfont,\n );\n const glyphQuads = getGlyphQuads(shaping, textOffset, false);\n feature.shaping = shaping;\n feature.glyphQuads = glyphQuads;\n // feature.centroid = calculteCentroid(coordinates);\n\n feature.centroid = calculateCentroid(feature.coordinates);\n\n // 此时地图高德2.0 originCentroid == centroid\n feature.originCentroid =\n feature.version === 'GAODE2.x'\n ? calculateCentroid(feature.originCoordinates)\n : (feature.originCentroid = feature.centroid);\n\n this.glyphInfoMap[id as number] = {\n shaping,\n glyphQuads,\n centroid: calculateCentroid(feature.coordinates),\n };\n return feature;\n });\n }\n /**\n * 文字避让 depend on originCentorid\n */\n private filterGlyphs() {\n const {\n padding = [4, 4],\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (textAllowOverlap) {\n // 如果允许文本覆盖\n // this.layer.setEncodedData(this.glyphInfo);\n return;\n }\n this.glyphInfoMap = {};\n this.currentZoom = this.mapService.getZoom();\n this.extent = this.textExtent();\n const { width, height } = this.rendererService.getViewportSize();\n const collisionIndex = new CollisionIndex(width, height);\n const filterData = this.glyphInfo.filter((feature: IEncodeFeature) => {\n const { shaping, id = 0 } = feature;\n // const centroid = feature.centroid as [number, number];\n // const centroid = feature.originCentroid as [number, number];\n const centroid = (feature.version === 'GAODE2.x'\n ? feature.originCentroid\n : feature.centroid) as [number, number];\n const size = feature.size as number;\n const fontScale: number = size / 24;\n const pixels = this.mapService.lngLatToContainer(centroid);\n const { box } = collisionIndex.placeCollisionBox({\n x1: shaping.left * fontScale - padding[0],\n x2: shaping.right * fontScale + padding[0],\n y1: shaping.top * fontScale - padding[1],\n y2: shaping.bottom * fontScale + padding[1],\n anchorPointX: pixels.x,\n anchorPointY: pixels.y,\n });\n if (box && box.length) {\n // TODO:featureIndex\n collisionIndex.insertCollisionBox(box, id);\n return true;\n } else {\n return false;\n }\n });\n filterData.forEach((item) => {\n // @ts-ignore\n this.glyphInfoMap[item.id as number] = item;\n });\n // this.layer.setEncodedData(filterData);\n }\n /**\n * 初始化文字布局\n */\n private initGlyph() {\n const { iconfont = false } = this.layer.getLayerConfig();\n // 1.生成文字纹理(或是生成 iconfont)\n iconfont ? this.initIconFontTex() : this.initTextFont();\n // this.initTextFont();\n\n // 2.生成文字布局\n this.generateGlyphLayout(iconfont);\n }\n /**\n * 更新文字纹理\n */\n private updateTexture() {\n const { createTexture2D } = this.rendererService;\n const { canvas } = this.fontService;\n this.textureHeight = canvas.height;\n if (this.texture) {\n this.texture.destroy();\n }\n\n this.texture = createTexture2D({\n data: canvas,\n mag: gl.LINEAR,\n min: gl.LINEAR,\n width: canvas.width,\n height: canvas.height,\n });\n }\n\n private reBuildModel() {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.filterGlyphs();\n this.layer\n .buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n })\n .then((model) => {\n this.layer.models = [model];\n })\n .catch((err) => {\n console.warn(err);\n this.layer.models = [];\n });\n }\n}\n"],"file":"text.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/point/models/text.ts"],"names":["TextTriangulation","feature","that","id","vertices","indices","glyphInfoMap","size","centroid","coord","length","glyphQuads","forEach","quad","index","push","tex","x","y","height","tl","width","tr","br","bl","TextModel","callbackModel","layer","getLayerConfig","mask","maskInside","mapping","buildLayerModel","moduleName","vertexShader","textVert","fragmentShader","textFrag","triangulation","bind","depth","enable","blend","getBlend","stencil","then","model","catch","err","console","warn","initGlyph","updateTexture","filterGlyphs","reBuildModel","opacity","stroke","strokeWidth","textAnchor","textAllowOverlap","halo","gamma","raisingHeight","fontService","canvas","Object","keys","textCount","preTextStyle","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","rowCount","dataTexture","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_raisingHeight","Number","u_opacity","u_stroke_width","u_stroke_color","getStrokeColor","u_sdf_map","texture","u_halo_blur","u_gamma_scale","u_sdf_map_size","on","extent","textExtent","buildModels","zoom","mapService","getZoom","getBounds","flag","Math","abs","currentZoom","destroy","off","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","update","featureIdx","vertex","attributeIdx","rotate","Array","isArray","STATIC_DRAW","bounds","fontWeight","fontFamily","characterSet","item","shape","toString","char","indexOf","setFontOptions","iconfont","spacing","glyphInfo","map","textOffset","shaping","coordinates","originCentroid","version","originCoordinates","padding","rendererService","getViewportSize","collisionIndex","CollisionIndex","filterData","filter","fontScale","pixels","lngLatToContainer","placeCollisionBox","x1","left","x2","right","y1","top","y2","bottom","anchorPointX","anchorPointY","box","insertCollisionBox","initIconFontTex","initTextFont","generateGlyphLayout","textureHeight","mag","LINEAR","min","models","renderLayers","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IEncodeFeature,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport {\n boundsContains,\n calculateCentroid,\n getMask,\n padBounds,\n} from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { IPointLayerStyleOptions } from '../../core/interface';\nimport CollisionIndex from '../../utils/collision-index';\nimport {\n getGlyphQuads,\n IGlyphQuad,\n shapeText,\n} from '../../utils/symbol-layout';\nimport textFrag from '../shaders/text_frag.glsl';\nimport textVert from '../shaders/text_vert.glsl';\n\nexport function TextTriangulation(feature: IEncodeFeature) {\n // @ts-ignore\n const that = this as TextModel;\n const id = feature.id as number;\n const vertices: number[] = [];\n const indices: number[] = [];\n\n if (!that.glyphInfoMap || !that.glyphInfoMap[id]) {\n return {\n vertices: [], // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices: [],\n size: 7,\n };\n }\n const centroid = that.glyphInfoMap[id].centroid as number[]; // 计算中心点\n const coord =\n centroid.length === 2 ? [centroid[0], centroid[1], 0] : centroid;\n that.glyphInfoMap[id].glyphQuads.forEach(\n (quad: IGlyphQuad, index: number) => {\n vertices.push(\n ...coord,\n quad.tex.x,\n quad.tex.y + quad.tex.height,\n quad.tl.x,\n quad.tl.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y + quad.tex.height,\n quad.tr.x,\n quad.tr.y,\n ...coord,\n quad.tex.x + quad.tex.width,\n quad.tex.y,\n quad.br.x,\n quad.br.y,\n ...coord,\n quad.tex.x,\n quad.tex.y,\n quad.bl.x,\n quad.bl.y,\n );\n indices.push(\n 0 + index * 4,\n 1 + index * 4,\n 2 + index * 4,\n 2 + index * 4,\n 3 + index * 4,\n 0 + index * 4,\n );\n },\n );\n return {\n vertices, // [ x, y, z, tex.x,tex.y, offset.x. offset.y]\n indices,\n size: 7,\n };\n}\n\nexport default class TextModel extends BaseModel {\n public glyphInfo: IEncodeFeature[];\n public glyphInfoMap: {\n [key: string]: {\n shaping: any;\n glyphQuads: IGlyphQuad[];\n centroid: number[];\n };\n } = {};\n private texture: ITexture2D;\n private currentZoom: number = -1;\n private extent: [[number, number], [number, number]];\n private textureHeight: number = 0;\n private textCount: number = 0;\n private preTextStyle: Partial<IPointLayerStyleOptions> = {};\n public getUninforms(): IModelUniform {\n const {\n opacity = 1.0,\n stroke = '#fff',\n strokeWidth = 0,\n textAnchor = 'center',\n textAllowOverlap = false,\n halo = 0.5,\n gamma = 2.0,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const { canvas, mapping } = this.fontService;\n if (Object.keys(mapping).length !== this.textCount) {\n this.updateTexture();\n this.textCount = Object.keys(mapping).length;\n }\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n strokeWidth,\n stroke,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n strokeWidth,\n stroke,\n });\n\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n u_raisingHeight: Number(raisingHeight),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_stroke_width: isNumber(strokeWidth) ? strokeWidth : 1.0,\n u_stroke_color: this.getStrokeColor(stroke),\n\n u_sdf_map: this.texture,\n u_halo_blur: halo,\n u_gamma_scale: gamma,\n u_sdf_map_size: [canvas.width, canvas.height],\n };\n }\n\n public initModels(callbackModel: (models: IModel[]) => void) {\n this.layer.on('remapping', this.mapping);\n this.extent = this.textExtent();\n const {\n textAnchor = 'center',\n textAllowOverlap = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.preTextStyle = {\n textAnchor,\n textAllowOverlap,\n };\n this.buildModels(callbackModel);\n }\n\n public buildModels = async (callbackModel: (models: IModel[]) => void) => {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.mapping();\n\n this.layer\n .buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n })\n .then((model) => {\n callbackModel([model]);\n })\n .catch((err) => {\n console.warn(err);\n callbackModel([]);\n });\n };\n public needUpdate() {\n const {\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n // textAllowOverlap 发生改变\n const zoom = this.mapService.getZoom();\n const extent = this.mapService.getBounds();\n const flag = boundsContains(this.extent, extent);\n // 文本不能压盖则进行过滤\n if (\n (!textAllowOverlap && (Math.abs(this.currentZoom - zoom) > 1 || !flag)) ||\n textAllowOverlap !== this.preTextStyle.textAllowOverlap\n ) {\n this.reBuildModel();\n return true;\n }\n return false;\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.layer.off('remapping', this.mapping);\n }\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'rotate',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Rotate',\n buffer: {\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { rotate = 0 } = feature;\n return Array.isArray(rotate) ? [rotate[0]] : [rotate as number];\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'textOffsets',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_textOffsets',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[5], vertex[6]];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 12 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'textUv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_tex',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4]];\n },\n },\n });\n }\n\n private mapping = () => {\n this.initGlyph();\n this.updateTexture();\n this.filterGlyphs();\n this.reBuildModel();\n };\n private textExtent(): [[number, number], [number, number]] {\n const bounds = this.mapService.getBounds();\n return padBounds(bounds, 0.5);\n }\n /**\n * 生成文字纹理(生成文字纹理字典)\n */\n private initTextFont() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = shape.toString();\n for (const char of shape) {\n // 去重\n if (characterSet.indexOf(char) === -1) {\n characterSet.push(char);\n }\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: false,\n });\n }\n\n /**\n * 生成 iconfont 纹理字典\n */\n private initIconFontTex() {\n const {\n fontWeight = '400',\n fontFamily = 'sans-serif',\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n const characterSet: string[] = [];\n data.forEach((item: IEncodeFeature) => {\n let { shape = '' } = item;\n shape = `${shape}`;\n if (characterSet.indexOf(shape) === -1) {\n characterSet.push(shape);\n }\n });\n this.fontService.setFontOptions({\n characterSet,\n fontWeight,\n fontFamily,\n iconfont: true,\n });\n }\n\n /**\n * 生成文字布局(对照文字纹理字典提取对应文字的位置很好信息)\n */\n private generateGlyphLayout(iconfont: boolean) {\n // TODO:更新文字布局\n const { mapping } = this.fontService;\n const {\n spacing = 2,\n textAnchor = 'center',\n // textOffset,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n const data = this.layer.getEncodedData();\n\n this.glyphInfo = data.map((feature: IEncodeFeature) => {\n const { shape = '', id, size = 1, textOffset = [0, 0] } = feature;\n\n const shaping = shapeText(\n shape.toString(),\n mapping,\n // @ts-ignore\n size,\n textAnchor,\n 'left',\n spacing,\n textOffset,\n iconfont,\n );\n const glyphQuads = getGlyphQuads(shaping, textOffset, false);\n feature.shaping = shaping;\n feature.glyphQuads = glyphQuads;\n // feature.centroid = calculteCentroid(coordinates);\n\n feature.centroid = calculateCentroid(feature.coordinates);\n\n // 此时地图高德2.0 originCentroid == centroid\n feature.originCentroid =\n feature.version === 'GAODE2.x'\n ? calculateCentroid(feature.originCoordinates)\n : (feature.originCentroid = feature.centroid);\n\n this.glyphInfoMap[id as number] = {\n shaping,\n glyphQuads,\n centroid: calculateCentroid(feature.coordinates),\n };\n return feature;\n });\n }\n /**\n * 文字避让 depend on originCentorid\n */\n private filterGlyphs() {\n const {\n padding = [4, 4],\n textAllowOverlap = false,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (textAllowOverlap) {\n // 如果允许文本覆盖\n // this.layer.setEncodedData(this.glyphInfo);\n return;\n }\n this.glyphInfoMap = {};\n this.currentZoom = this.mapService.getZoom();\n this.extent = this.textExtent();\n const { width, height } = this.rendererService.getViewportSize();\n const collisionIndex = new CollisionIndex(width, height);\n const filterData = this.glyphInfo.filter((feature: IEncodeFeature) => {\n const { shaping, id = 0 } = feature;\n // const centroid = feature.centroid as [number, number];\n // const centroid = feature.originCentroid as [number, number];\n const centroid = (feature.version === 'GAODE2.x'\n ? feature.originCentroid\n : feature.centroid) as [number, number];\n const size = feature.size as number;\n const fontScale: number = size / 24;\n const pixels = this.mapService.lngLatToContainer(centroid);\n const { box } = collisionIndex.placeCollisionBox({\n x1: shaping.left * fontScale - padding[0],\n x2: shaping.right * fontScale + padding[0],\n y1: shaping.top * fontScale - padding[1],\n y2: shaping.bottom * fontScale + padding[1],\n anchorPointX: pixels.x,\n anchorPointY: pixels.y,\n });\n if (box && box.length) {\n // TODO:featureIndex\n collisionIndex.insertCollisionBox(box, id);\n return true;\n } else {\n return false;\n }\n });\n filterData.forEach((item) => {\n // @ts-ignore\n this.glyphInfoMap[item.id as number] = item;\n });\n // this.layer.setEncodedData(filterData);\n }\n /**\n * 初始化文字布局\n */\n private initGlyph() {\n const { iconfont = false } = this.layer.getLayerConfig();\n // 1.生成文字纹理(或是生成 iconfont)\n iconfont ? this.initIconFontTex() : this.initTextFont();\n // this.initTextFont();\n\n // 2.生成文字布局\n this.generateGlyphLayout(iconfont);\n }\n /**\n * 更新文字纹理\n */\n private updateTexture() {\n const { createTexture2D } = this.rendererService;\n const { canvas } = this.fontService;\n this.textureHeight = canvas.height;\n if (this.texture) {\n this.texture.destroy();\n }\n\n this.texture = createTexture2D({\n data: canvas,\n mag: gl.LINEAR,\n min: gl.LINEAR,\n width: canvas.width,\n height: canvas.height,\n });\n }\n\n private reBuildModel() {\n const {\n mask = false,\n maskInside = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n this.filterGlyphs();\n this.layer\n .buildLayerModel({\n moduleName: 'pointText',\n vertexShader: textVert,\n fragmentShader: textFrag,\n triangulation: TextTriangulation.bind(this),\n depth: { enable: false },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n })\n .then((model) => {\n this.layer.models = [model];\n this.layer.renderLayers();\n })\n .catch((err) => {\n console.warn(err);\n this.layer.models = [];\n });\n }\n}\n"],"file":"text.js"}
|
|
@@ -179,7 +179,17 @@ var TileLayerManager = function () {
|
|
|
179
179
|
featureId = _ref$featureId === void 0 ? 'id' : _ref$featureId,
|
|
180
180
|
_ref$workerEnabled = _ref.workerEnabled,
|
|
181
181
|
workerEnabled = _ref$workerEnabled === void 0 ? false : _ref$workerEnabled,
|
|
182
|
-
sourceLayer = _ref.sourceLayer
|
|
182
|
+
sourceLayer = _ref.sourceLayer,
|
|
183
|
+
_ref$pixelConstant = _ref.pixelConstant,
|
|
184
|
+
pixelConstant = _ref$pixelConstant === void 0 ? 0 : _ref$pixelConstant,
|
|
185
|
+
_ref$pixelConstantR = _ref.pixelConstantR,
|
|
186
|
+
pixelConstantR = _ref$pixelConstantR === void 0 ? 256 * 256 : _ref$pixelConstantR,
|
|
187
|
+
_ref$pixelConstantG = _ref.pixelConstantG,
|
|
188
|
+
pixelConstantG = _ref$pixelConstantG === void 0 ? 256 : _ref$pixelConstantG,
|
|
189
|
+
_ref$pixelConstantB = _ref.pixelConstantB,
|
|
190
|
+
pixelConstantB = _ref$pixelConstantB === void 0 ? 1 : _ref$pixelConstantB,
|
|
191
|
+
_ref$pixelConstantRGB = _ref.pixelConstantRGB,
|
|
192
|
+
pixelConstantRGB = _ref$pixelConstantRGB === void 0 ? 0.1 : _ref$pixelConstantRGB;
|
|
183
193
|
|
|
184
194
|
var colorValue = this.tileConfigManager.getAttributeScale(this.parent, 'color');
|
|
185
195
|
var sizeValue = this.tileConfigManager.getAttributeScale(this.parent, 'size');
|
|
@@ -213,7 +223,12 @@ var TileLayerManager = function () {
|
|
|
213
223
|
domain: domain,
|
|
214
224
|
rampColors: rampColors,
|
|
215
225
|
rampColorsData: this.rampColorsData,
|
|
216
|
-
workerEnabled: workerEnabled
|
|
226
|
+
workerEnabled: workerEnabled,
|
|
227
|
+
pixelConstant: pixelConstant,
|
|
228
|
+
pixelConstantR: pixelConstantR,
|
|
229
|
+
pixelConstantG: pixelConstantG,
|
|
230
|
+
pixelConstantB: pixelConstantB,
|
|
231
|
+
pixelConstantRGB: pixelConstantRGB
|
|
217
232
|
};
|
|
218
233
|
}
|
|
219
234
|
}, {
|
|
@@ -230,6 +245,11 @@ var TileLayerManager = function () {
|
|
|
230
245
|
this.tileConfigManager.setConfig('domain', this.initOptions.domain);
|
|
231
246
|
this.tileConfigManager.setConfig('clampHigh', this.initOptions.clampHigh);
|
|
232
247
|
this.tileConfigManager.setConfig('clampLow', this.initOptions.clampLow);
|
|
248
|
+
this.tileConfigManager.setConfig('pixelConstant', this.initOptions.pixelConstant);
|
|
249
|
+
this.tileConfigManager.setConfig('pixelConstantR', this.initOptions.pixelConstantR);
|
|
250
|
+
this.tileConfigManager.setConfig('pixelConstantG', this.initOptions.pixelConstantG);
|
|
251
|
+
this.tileConfigManager.setConfig('pixelConstantB', this.initOptions.pixelConstantB);
|
|
252
|
+
this.tileConfigManager.setConfig('pixelConstantRGB', this.initOptions.pixelConstantRGB);
|
|
233
253
|
} else {
|
|
234
254
|
var _this$parent$getAttri, _this$parent$getAttri2, _this$parent$getAttri3;
|
|
235
255
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile/manager/tileLayerManager.ts"],"names":["TileLayerManager","parent","mapService","rendererService","pickingService","layerService","children","layerChildren","tilePickManager","TilePickManager","tileConfigManager","TileConfigManager","setSubLayerInitOptipn","setConfigListener","initTileFactory","tile","tileFactory","createTile","initOptions","layers","key","value","map","layer","style","mask","updateLayerConfig","push","layerIDList","refresh","remveLayerList","cacheLayerList","filter","child","includes","id","destroy","layerIndex","indexOf","splice","layerID","forEach","slice","length","checkConfig","normalRender","target","pickRender","getLayerConfig","zIndex","opacity","stroke","strokeWidth","strokeOpacity","clampLow","clampHigh","domain","rampColors","colors","positions","featureId","workerEnabled","sourceLayer","colorValue","getAttributeScale","sizeValue","source","getSource","data","tilesetOptions","coords","layerShape","type","rampColorsData","layerType","shape","color","size","setConfig","getAttribute","scale","on","updateConfigs","updateStyle","updateValue","scaleValue","setStyleAttributeField","layerConfig","config","updateLayersConfig","TileFactory","parser"],"mappings":"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","sourcesContent":["import {\n IInteractionTarget,\n ILayer,\n ILayerService,\n IMapService,\n IPickingService,\n IRendererService,\n ISubLayerInitOptions,\n ITileLayerManager,\n ITilePickManager,\n ScaleAttributeType,\n} from '@antv/l7-core';\nimport { generateColorRamp, IColorRamp, Tile } from '@antv/l7-utils';\nimport { getTileFactory, ITileFactory, TileType } from '../tileFactory';\nimport { getLayerShape, getMaskValue } from '../utils';\nimport TileConfigManager, { ITileConfigManager } from './tileConfigManager';\nimport TilePickManager from './tilePickerManager';\nexport class TileLayerManager implements ITileLayerManager {\n public sourceLayer: string;\n public parent: ILayer;\n public children: ILayer[];\n public mapService: IMapService;\n public rendererService: IRendererService;\n public tilePickManager: ITilePickManager;\n public tileConfigManager: ITileConfigManager;\n private tileFactory: ITileFactory;\n private initOptions: ISubLayerInitOptions;\n private rampColorsData: any;\n constructor(\n parent: ILayer,\n mapService: IMapService,\n rendererService: IRendererService,\n pickingService: IPickingService,\n layerService: ILayerService,\n ) {\n this.parent = parent;\n this.children = parent.layerChildren;\n this.mapService = mapService;\n this.rendererService = rendererService;\n this.tilePickManager = new TilePickManager(\n parent,\n rendererService,\n pickingService,\n this.children,\n layerService,\n );\n this.tileConfigManager = new TileConfigManager();\n\n this.setSubLayerInitOptipn();\n this.setConfigListener();\n this.initTileFactory();\n }\n\n public createTile(tile: Tile) {\n return this.tileFactory.createTile(tile, this.initOptions);\n }\n\n public updateLayersConfig(layers: ILayer[], key: string, value: any) {\n layers.map((layer) => {\n if (key === 'mask') {\n // Tip: 栅格瓦片生效、设置全局的 mask、瓦片被全局的 mask 影响\n layer.style({\n mask: value,\n });\n } else {\n layer.updateLayerConfig({\n [key]: value,\n });\n }\n });\n }\n\n public addChild(layer: ILayer) {\n this.children.push(layer);\n }\n\n public addChilds(layers: ILayer[]) {\n this.children.push(...layers);\n }\n\n public removeChilds(layerIDList: string[], refresh = true) {\n const remveLayerList: ILayer[] = [];\n const cacheLayerList: ILayer[] = [];\n this.children.filter((child) => {\n layerIDList.includes(child.id)\n ? remveLayerList.push(child)\n : cacheLayerList.push(child);\n });\n remveLayerList.map((layer) => layer.destroy(refresh));\n this.children = cacheLayerList;\n }\n\n public removeChild(layer: ILayer) {\n const layerIndex = this.children.indexOf(layer);\n if (layerIndex > -1) {\n this.children.splice(layerIndex, 1);\n }\n layer.destroy();\n }\n\n public getChilds(layerIDList: string[]) {\n return this.children.filter((child) => layerIDList.includes(child.id));\n }\n\n public getChild(layerID: string) {\n return this.children.filter((child) => child.id === layerID)[0];\n }\n\n public clearChild() {\n this.children.forEach((layer: any) => {\n layer.destroy();\n });\n\n this.children.slice(0, this.children.length);\n }\n\n public hasChild(layer: ILayer) {\n return this.children.includes(layer);\n }\n\n public render(): void {\n this.tileConfigManager?.checkConfig(this.parent);\n this.tilePickManager?.normalRender(this.children);\n }\n\n public pickLayers(target: IInteractionTarget) {\n return this.tilePickManager?.pickRender(this.children, target);\n }\n\n private setSubLayerInitOptipn() {\n const {\n zIndex = 0,\n opacity = 1,\n mask = false,\n stroke = '#fff',\n strokeWidth = 0,\n strokeOpacity = 1,\n\n clampLow = true,\n clampHigh = true,\n domain = [0, 1],\n rampColors = {\n colors: [\n 'rgb(166,97,26)',\n 'rgb(223,194,125)',\n 'rgb(245,245,245)',\n 'rgb(128,205,193)',\n 'rgb(1,133,113)',\n ],\n positions: [0, 0.25, 0.5, 0.75, 1.0],\n },\n featureId = 'id',\n workerEnabled = false,\n sourceLayer,\n } = this.parent.getLayerConfig() as ISubLayerInitOptions;\n\n const colorValue = this.tileConfigManager.getAttributeScale(\n this.parent,\n 'color',\n );\n const sizeValue = this.tileConfigManager.getAttributeScale(\n this.parent,\n 'size',\n );\n const source = this.parent.getSource();\n const { coords } = source?.data?.tilesetOptions || {};\n\n const layerShape = getLayerShape(this.parent.type, this.parent);\n\n if (rampColors) {\n // 构建统一的色带贴图\n this.rampColorsData = generateColorRamp(rampColors as IColorRamp);\n }\n\n this.initOptions = {\n layerType: this.parent.type,\n shape: layerShape,\n zIndex,\n opacity,\n sourceLayer,\n coords,\n featureId,\n color: colorValue,\n size: sizeValue,\n mask: getMaskValue(this.parent.type, mask),\n stroke,\n strokeWidth,\n strokeOpacity,\n // raster tiff\n clampLow,\n clampHigh,\n domain,\n rampColors,\n rampColorsData: this.rampColorsData,\n // worker\n workerEnabled,\n };\n }\n\n private setConfigListener() {\n // RasterLayer PolygonLayer LineLayer PointLayer\n // All Tile Layer Need Listen\n this.tileConfigManager.setConfig('opacity', this.initOptions.opacity);\n this.tileConfigManager.setConfig('zIndex', this.initOptions.zIndex);\n this.tileConfigManager.setConfig('mask', this.initOptions.mask);\n\n if (this.parent.type === 'RasterLayer') {\n // Raster Tile Layer Need Listen\n this.tileConfigManager.setConfig(\n 'rampColors',\n this.initOptions.rampColors,\n );\n this.tileConfigManager.setConfig('domain', this.initOptions.domain);\n this.tileConfigManager.setConfig('clampHigh', this.initOptions.clampHigh);\n this.tileConfigManager.setConfig('clampLow', this.initOptions.clampLow);\n } else {\n // Vector Tile Layer Need Listen\n this.tileConfigManager.setConfig('stroke', this.initOptions.stroke);\n this.tileConfigManager.setConfig(\n 'strokeWidth',\n this.initOptions.strokeWidth,\n );\n this.tileConfigManager.setConfig(\n 'strokeOpacity',\n this.initOptions.strokeOpacity,\n );\n this.tileConfigManager.setConfig(\n 'color',\n this.parent.getAttribute('color')?.scale,\n );\n this.tileConfigManager.setConfig(\n 'shape',\n this.parent.getAttribute('shape')?.scale,\n );\n this.tileConfigManager.setConfig(\n 'size',\n this.parent.getAttribute('size')?.scale,\n );\n }\n\n this.tileConfigManager.on('updateConfig', (updateConfigs) => {\n updateConfigs.map((key: string) => {\n this.updateStyle(key);\n return '';\n });\n });\n }\n\n private updateStyle(style: string) {\n let updateValue = null;\n if (['size', 'color', 'shape'].includes(style)) {\n const scaleValue = this.parent.getAttribute(style)?.scale;\n if (!scaleValue) {\n return;\n }\n updateValue = scaleValue;\n this.children.map((child) => {\n this.tileFactory.setStyleAttributeField(\n child,\n style as ScaleAttributeType,\n scaleValue,\n );\n return '';\n });\n } else {\n const layerConfig = this.parent.getLayerConfig() as ISubLayerInitOptions;\n if (!(style in layerConfig)) {\n return;\n }\n // @ts-ignore\n const config = layerConfig[style];\n updateValue = config;\n this.updateLayersConfig(this.children, style, config);\n if (style === 'rampColors' && config) {\n this.rampColorsData = generateColorRamp(config as IColorRamp);\n }\n }\n // @ts-ignore\n this.initOptions[style] = updateValue;\n }\n\n private initTileFactory() {\n const source = this.parent.getSource();\n const TileFactory = getTileFactory(\n this.parent.type as TileType,\n source.parser,\n );\n this.tileFactory = new TileFactory({\n parent: this.parent,\n mapService: this.mapService,\n rendererService: this.rendererService,\n });\n }\n}\n"],"file":"tileLayerManager.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile/manager/tileLayerManager.ts"],"names":["TileLayerManager","parent","mapService","rendererService","pickingService","layerService","children","layerChildren","tilePickManager","TilePickManager","tileConfigManager","TileConfigManager","setSubLayerInitOptipn","setConfigListener","initTileFactory","tile","tileFactory","createTile","initOptions","layers","key","value","map","layer","style","mask","updateLayerConfig","push","layerIDList","refresh","remveLayerList","cacheLayerList","filter","child","includes","id","destroy","layerIndex","indexOf","splice","layerID","forEach","slice","length","checkConfig","normalRender","target","pickRender","getLayerConfig","zIndex","opacity","stroke","strokeWidth","strokeOpacity","clampLow","clampHigh","domain","rampColors","colors","positions","featureId","workerEnabled","sourceLayer","pixelConstant","pixelConstantR","pixelConstantG","pixelConstantB","pixelConstantRGB","colorValue","getAttributeScale","sizeValue","source","getSource","data","tilesetOptions","coords","layerShape","type","rampColorsData","layerType","shape","color","size","setConfig","getAttribute","scale","on","updateConfigs","updateStyle","updateValue","scaleValue","setStyleAttributeField","layerConfig","config","updateLayersConfig","TileFactory","parser"],"mappings":"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","sourcesContent":["import {\n IInteractionTarget,\n ILayer,\n ILayerService,\n IMapService,\n IPickingService,\n IRendererService,\n ISubLayerInitOptions,\n ITileLayerManager,\n ITilePickManager,\n ScaleAttributeType,\n} from '@antv/l7-core';\nimport { generateColorRamp, IColorRamp, Tile } from '@antv/l7-utils';\nimport { getTileFactory, ITileFactory, TileType } from '../tileFactory';\nimport { getLayerShape, getMaskValue } from '../utils';\nimport TileConfigManager, { ITileConfigManager } from './tileConfigManager';\nimport TilePickManager from './tilePickerManager';\nexport class TileLayerManager implements ITileLayerManager {\n public sourceLayer: string;\n public parent: ILayer;\n public children: ILayer[];\n public mapService: IMapService;\n public rendererService: IRendererService;\n public tilePickManager: ITilePickManager;\n public tileConfigManager: ITileConfigManager;\n private tileFactory: ITileFactory;\n private initOptions: ISubLayerInitOptions;\n private rampColorsData: any;\n constructor(\n parent: ILayer,\n mapService: IMapService,\n rendererService: IRendererService,\n pickingService: IPickingService,\n layerService: ILayerService,\n ) {\n this.parent = parent;\n this.children = parent.layerChildren;\n this.mapService = mapService;\n this.rendererService = rendererService;\n this.tilePickManager = new TilePickManager(\n parent,\n rendererService,\n pickingService,\n this.children,\n layerService,\n );\n this.tileConfigManager = new TileConfigManager();\n\n this.setSubLayerInitOptipn();\n this.setConfigListener();\n this.initTileFactory();\n }\n\n public createTile(tile: Tile) {\n return this.tileFactory.createTile(tile, this.initOptions);\n }\n\n public updateLayersConfig(layers: ILayer[], key: string, value: any) {\n layers.map((layer) => {\n if (key === 'mask') {\n // Tip: 栅格瓦片生效、设置全局的 mask、瓦片被全局的 mask 影响\n layer.style({\n mask: value,\n });\n } else {\n layer.updateLayerConfig({\n [key]: value,\n });\n }\n });\n }\n\n public addChild(layer: ILayer) {\n this.children.push(layer);\n }\n\n public addChilds(layers: ILayer[]) {\n this.children.push(...layers);\n }\n\n public removeChilds(layerIDList: string[], refresh = true) {\n const remveLayerList: ILayer[] = [];\n const cacheLayerList: ILayer[] = [];\n this.children.filter((child) => {\n layerIDList.includes(child.id)\n ? remveLayerList.push(child)\n : cacheLayerList.push(child);\n });\n remveLayerList.map((layer) => layer.destroy(refresh));\n this.children = cacheLayerList;\n }\n\n public removeChild(layer: ILayer) {\n const layerIndex = this.children.indexOf(layer);\n if (layerIndex > -1) {\n this.children.splice(layerIndex, 1);\n }\n layer.destroy();\n }\n\n public getChilds(layerIDList: string[]) {\n return this.children.filter((child) => layerIDList.includes(child.id));\n }\n\n public getChild(layerID: string) {\n return this.children.filter((child) => child.id === layerID)[0];\n }\n\n public clearChild() {\n this.children.forEach((layer: any) => {\n layer.destroy();\n });\n\n this.children.slice(0, this.children.length);\n }\n\n public hasChild(layer: ILayer) {\n return this.children.includes(layer);\n }\n\n public render(): void {\n this.tileConfigManager?.checkConfig(this.parent);\n this.tilePickManager?.normalRender(this.children);\n }\n\n public pickLayers(target: IInteractionTarget) {\n return this.tilePickManager?.pickRender(this.children, target);\n }\n\n private setSubLayerInitOptipn() {\n const {\n zIndex = 0,\n opacity = 1,\n mask = false,\n stroke = '#fff',\n strokeWidth = 0,\n strokeOpacity = 1,\n\n clampLow = true,\n clampHigh = true,\n domain = [0, 1],\n rampColors = {\n colors: [\n 'rgb(166,97,26)',\n 'rgb(223,194,125)',\n 'rgb(245,245,245)',\n 'rgb(128,205,193)',\n 'rgb(1,133,113)',\n ],\n positions: [0, 0.25, 0.5, 0.75, 1.0],\n },\n featureId = 'id',\n workerEnabled = false,\n sourceLayer,\n\n pixelConstant = 0,\n pixelConstantR = 256 * 256,\n pixelConstantG = 256,\n pixelConstantB = 1,\n pixelConstantRGB = 0.1,\n } = this.parent.getLayerConfig() as ISubLayerInitOptions;\n\n const colorValue = this.tileConfigManager.getAttributeScale(\n this.parent,\n 'color',\n );\n const sizeValue = this.tileConfigManager.getAttributeScale(\n this.parent,\n 'size',\n );\n const source = this.parent.getSource();\n const { coords } = source?.data?.tilesetOptions || {};\n\n const layerShape = getLayerShape(this.parent.type, this.parent);\n\n if (rampColors) {\n // 构建统一的色带贴图\n this.rampColorsData = generateColorRamp(rampColors as IColorRamp);\n }\n\n this.initOptions = {\n layerType: this.parent.type,\n shape: layerShape,\n zIndex,\n opacity,\n sourceLayer,\n coords,\n featureId,\n color: colorValue,\n size: sizeValue,\n mask: getMaskValue(this.parent.type, mask),\n stroke,\n strokeWidth,\n strokeOpacity,\n // raster tiff\n clampLow,\n clampHigh,\n domain,\n rampColors,\n rampColorsData: this.rampColorsData,\n // worker\n workerEnabled,\n\n pixelConstant,\n pixelConstantR,\n pixelConstantG,\n pixelConstantB,\n pixelConstantRGB,\n };\n }\n\n private setConfigListener() {\n // RasterLayer PolygonLayer LineLayer PointLayer\n // All Tile Layer Need Listen\n this.tileConfigManager.setConfig('opacity', this.initOptions.opacity);\n this.tileConfigManager.setConfig('zIndex', this.initOptions.zIndex);\n this.tileConfigManager.setConfig('mask', this.initOptions.mask);\n\n if (this.parent.type === 'RasterLayer') {\n // Raster Tile Layer Need Listen\n this.tileConfigManager.setConfig(\n 'rampColors',\n this.initOptions.rampColors,\n );\n this.tileConfigManager.setConfig('domain', this.initOptions.domain);\n this.tileConfigManager.setConfig('clampHigh', this.initOptions.clampHigh);\n this.tileConfigManager.setConfig('clampLow', this.initOptions.clampLow);\n\n this.tileConfigManager.setConfig(\n 'pixelConstant',\n this.initOptions.pixelConstant,\n );\n this.tileConfigManager.setConfig(\n 'pixelConstantR',\n this.initOptions.pixelConstantR,\n );\n this.tileConfigManager.setConfig(\n 'pixelConstantG',\n this.initOptions.pixelConstantG,\n );\n this.tileConfigManager.setConfig(\n 'pixelConstantB',\n this.initOptions.pixelConstantB,\n );\n this.tileConfigManager.setConfig(\n 'pixelConstantRGB',\n this.initOptions.pixelConstantRGB,\n );\n } else {\n // Vector Tile Layer Need Listen\n this.tileConfigManager.setConfig('stroke', this.initOptions.stroke);\n this.tileConfigManager.setConfig(\n 'strokeWidth',\n this.initOptions.strokeWidth,\n );\n this.tileConfigManager.setConfig(\n 'strokeOpacity',\n this.initOptions.strokeOpacity,\n );\n this.tileConfigManager.setConfig(\n 'color',\n this.parent.getAttribute('color')?.scale,\n );\n this.tileConfigManager.setConfig(\n 'shape',\n this.parent.getAttribute('shape')?.scale,\n );\n this.tileConfigManager.setConfig(\n 'size',\n this.parent.getAttribute('size')?.scale,\n );\n }\n\n this.tileConfigManager.on('updateConfig', (updateConfigs) => {\n updateConfigs.map((key: string) => {\n this.updateStyle(key);\n return '';\n });\n });\n }\n\n private updateStyle(style: string) {\n let updateValue = null;\n if (['size', 'color', 'shape'].includes(style)) {\n const scaleValue = this.parent.getAttribute(style)?.scale;\n if (!scaleValue) {\n return;\n }\n updateValue = scaleValue;\n this.children.map((child) => {\n this.tileFactory.setStyleAttributeField(\n child,\n style as ScaleAttributeType,\n scaleValue,\n );\n return '';\n });\n } else {\n const layerConfig = this.parent.getLayerConfig() as ISubLayerInitOptions;\n if (!(style in layerConfig)) {\n return;\n }\n // @ts-ignore\n const config = layerConfig[style];\n updateValue = config;\n this.updateLayersConfig(this.children, style, config);\n if (style === 'rampColors' && config) {\n this.rampColorsData = generateColorRamp(config as IColorRamp);\n }\n }\n // @ts-ignore\n this.initOptions[style] = updateValue;\n }\n\n private initTileFactory() {\n const source = this.parent.getSource();\n const TileFactory = getTileFactory(\n this.parent.type as TileType,\n source.parser,\n );\n this.tileFactory = new TileFactory({\n parent: this.parent,\n mapService: this.mapService,\n rendererService: this.rendererService,\n });\n }\n}\n"],"file":"tileLayerManager.js"}
|
|
@@ -150,46 +150,6 @@ var ExtrudePolyline = function () {
|
|
|
150
150
|
return complex;
|
|
151
151
|
}
|
|
152
152
|
}, {
|
|
153
|
-
key: "simpleExtrude_gaode2",
|
|
154
|
-
value: function simpleExtrude_gaode2(points, originPoints) {
|
|
155
|
-
var complex = this.complex;
|
|
156
|
-
|
|
157
|
-
if (points.length <= 1) {
|
|
158
|
-
return complex;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
this.lastFlip = -1;
|
|
162
|
-
this.started = false;
|
|
163
|
-
this.normal = null;
|
|
164
|
-
this.totalDistance = 0;
|
|
165
|
-
var total = points.length;
|
|
166
|
-
var count = complex.startIndex;
|
|
167
|
-
|
|
168
|
-
for (var i = 1; i < total; i++) {
|
|
169
|
-
var _originPoints$3, _originPoints$i$2, _originPoints$4;
|
|
170
|
-
|
|
171
|
-
var last = points[i - 1];
|
|
172
|
-
last.push((_originPoints$3 = originPoints[i - 1][2]) !== null && _originPoints$3 !== void 0 ? _originPoints$3 : 0);
|
|
173
|
-
var originLast = originPoints[i - 1];
|
|
174
|
-
var cur = points[i];
|
|
175
|
-
cur.push((_originPoints$i$2 = originPoints[i][2]) !== null && _originPoints$i$2 !== void 0 ? _originPoints$i$2 : 0);
|
|
176
|
-
var originCur = originPoints[i];
|
|
177
|
-
var next = i < points.length - 1 ? [].concat((0, _toConsumableArray2.default)(points[i + 1]), [(_originPoints$4 = originPoints[i + 1][2]) !== null && _originPoints$4 !== void 0 ? _originPoints$4 : 0]) : null;
|
|
178
|
-
var originNext = i < originPoints.length - 1 ? originPoints[i + 1] : null;
|
|
179
|
-
var amt = this.simpleSegment(complex, count, last, cur, next, originLast, originCur, originNext);
|
|
180
|
-
count += amt;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
if (this.dash) {
|
|
184
|
-
for (var _i2 = 0; _i2 < complex.positions.length / 6; _i2++) {
|
|
185
|
-
complex.positions[_i2 * 6 + 5] = this.totalDistance;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
complex.startIndex = complex.positions.length / 6;
|
|
190
|
-
return complex;
|
|
191
|
-
}
|
|
192
|
-
}, {
|
|
193
153
|
key: "extrude",
|
|
194
154
|
value: function extrude(points) {
|
|
195
155
|
var complex = this.complex;
|
|
@@ -214,41 +174,8 @@ var ExtrudePolyline = function () {
|
|
|
214
174
|
}
|
|
215
175
|
|
|
216
176
|
if (this.dash) {
|
|
217
|
-
for (var
|
|
218
|
-
complex.positions[
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
complex.startIndex = complex.positions.length / 6;
|
|
223
|
-
return complex;
|
|
224
|
-
}
|
|
225
|
-
}, {
|
|
226
|
-
key: "simpleExtrude",
|
|
227
|
-
value: function simpleExtrude(points) {
|
|
228
|
-
var complex = this.complex;
|
|
229
|
-
|
|
230
|
-
if (points.length <= 1) {
|
|
231
|
-
return complex;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
this.lastFlip = -1;
|
|
235
|
-
this.started = false;
|
|
236
|
-
this.normal = null;
|
|
237
|
-
this.totalDistance = 0;
|
|
238
|
-
var total = points.length;
|
|
239
|
-
var count = complex.startIndex;
|
|
240
|
-
|
|
241
|
-
for (var i = 1; i < total; i++) {
|
|
242
|
-
var last = points[i - 1];
|
|
243
|
-
var cur = points[i];
|
|
244
|
-
var next = i < points.length - 1 ? points[i + 1] : null;
|
|
245
|
-
var amt = this.simpleSegment(complex, count, last, cur, next);
|
|
246
|
-
count += amt;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
if (this.dash) {
|
|
250
|
-
for (var _i4 = 0; _i4 < complex.positions.length / 6; _i4++) {
|
|
251
|
-
complex.positions[_i4 * 6 + 5] = this.totalDistance;
|
|
177
|
+
for (var _i2 = 0; _i2 < complex.positions.length / 6; _i2++) {
|
|
178
|
+
complex.positions[_i2 * 6 + 5] = this.totalDistance;
|
|
252
179
|
}
|
|
253
180
|
}
|
|
254
181
|
|
|
@@ -388,67 +315,6 @@ var ExtrudePolyline = function () {
|
|
|
388
315
|
return count;
|
|
389
316
|
}
|
|
390
317
|
}, {
|
|
391
|
-
key: "simpleSegment",
|
|
392
|
-
value: function simpleSegment(complex, index, last, cur, next) {
|
|
393
|
-
var count = 0;
|
|
394
|
-
var indices = complex.indices;
|
|
395
|
-
var positions = complex.positions;
|
|
396
|
-
var normals = complex.normals;
|
|
397
|
-
var flatCur = (0, _l7Utils.aProjectFlat)([cur[0], cur[1]]);
|
|
398
|
-
var flatLast = (0, _l7Utils.aProjectFlat)([last[0], last[1]]);
|
|
399
|
-
direction(lineA, flatCur, flatLast);
|
|
400
|
-
var segmentDistance = 0;
|
|
401
|
-
|
|
402
|
-
if (this.dash) {
|
|
403
|
-
segmentDistance = this.lineSegmentDistance(flatCur, flatLast);
|
|
404
|
-
this.totalDistance += segmentDistance;
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
if (!this.normal) {
|
|
408
|
-
this.normal = _glMatrix.vec2.create();
|
|
409
|
-
computeNormal(this.normal, lineA);
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
if (!this.started) {
|
|
413
|
-
this.started = true;
|
|
414
|
-
this.extrusions(positions, normals, last, this.normal, this.thickness, this.totalDistance - segmentDistance);
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
indices.push(index + 0, index + 1, index + 2);
|
|
418
|
-
|
|
419
|
-
if (!next) {
|
|
420
|
-
computeNormal(this.normal, lineA);
|
|
421
|
-
this.extrusions(positions, normals, cur, this.normal, this.thickness, this.totalDistance);
|
|
422
|
-
indices.push.apply(indices, (0, _toConsumableArray2.default)(this.lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
|
|
423
|
-
count += 2;
|
|
424
|
-
} else {
|
|
425
|
-
var flatNext = (0, _l7Utils.aProjectFlat)([next[0], next[1]]);
|
|
426
|
-
|
|
427
|
-
if (isPointEqual(flatCur, flatNext)) {
|
|
428
|
-
_glMatrix.vec2.add(flatNext, flatCur, _glMatrix.vec2.normalize(flatNext, _glMatrix.vec2.subtract(flatNext, flatCur, flatLast)));
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
direction(lineB, flatNext, flatCur);
|
|
432
|
-
|
|
433
|
-
var _computeMiter3 = computeMiter(tangent, _glMatrix.vec2.create(), lineA, lineB, this.thickness),
|
|
434
|
-
_computeMiter4 = (0, _slicedToArray2.default)(_computeMiter3, 2),
|
|
435
|
-
miterLen = _computeMiter4[0],
|
|
436
|
-
miter = _computeMiter4[1];
|
|
437
|
-
|
|
438
|
-
var flip = _glMatrix.vec2.dot(tangent, this.normal) < 0 ? -1 : 1;
|
|
439
|
-
this.extrusions(positions, normals, cur, miter, miterLen, this.totalDistance);
|
|
440
|
-
indices.push.apply(indices, (0, _toConsumableArray2.default)(this.lastFlip === 1 ? [index, index + 2, index + 3] : [index + 2, index + 1, index + 3]));
|
|
441
|
-
flip = -1;
|
|
442
|
-
|
|
443
|
-
_glMatrix.vec2.copy(this.normal, miter);
|
|
444
|
-
|
|
445
|
-
count += 2;
|
|
446
|
-
this.lastFlip = flip;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
return count;
|
|
450
|
-
}
|
|
451
|
-
}, {
|
|
452
318
|
key: "segment",
|
|
453
319
|
value: function segment(complex, index, last, cur, next) {
|
|
454
320
|
var count = 0;
|
|
@@ -532,10 +398,10 @@ var ExtrudePolyline = function () {
|
|
|
532
398
|
|
|
533
399
|
direction(lineB, flatNext, flatCur);
|
|
534
400
|
|
|
535
|
-
var
|
|
536
|
-
|
|
537
|
-
miterLen =
|
|
538
|
-
miter =
|
|
401
|
+
var _computeMiter3 = computeMiter(tangent, _glMatrix.vec2.create(), lineA, lineB, this.thickness),
|
|
402
|
+
_computeMiter4 = (0, _slicedToArray2.default)(_computeMiter3, 2),
|
|
403
|
+
miterLen = _computeMiter4[0],
|
|
404
|
+
miter = _computeMiter4[1];
|
|
539
405
|
|
|
540
406
|
var flip = _glMatrix.vec2.dot(tangent, this.normal) < 0 ? -1 : 1;
|
|
541
407
|
var bevel = joinBevel;
|