{"version":3,"file":"liquid.js","sourceRoot":"","sources":["../../../../src/plots/liquid/shapes/liquid.ts"],"names":[],"mappings":"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","sourcesContent":["import { IGroup, IShape } from '@antv/g-base';\nimport { registerShape } from '@antv/g2';\nimport { isNumber, mix, reduce } from '@antv/util';\nimport { Point, ShapeStyle } from '../../../types';\nimport { transform } from '../../../utils/matrix';\nimport { CustomInfo, LiquidOptions } from '../types';\n\nconst DURATION = 5000;\n\n/**\n * 一个线性映射的函数\n * @param min\n * @param max\n * @param factor\n */\nfunction lerp(min: number, max: number, factor: number) {\n return min + (max - min) * factor;\n}\n\n/**\n * 波浪的 attrs\n * @param cfg\n */\nfunction getFillAttrs(cfg: ShapeStyle) {\n const attrs = { opacity: 1, ...cfg.style };\n\n if (cfg.color && !attrs.fill) {\n attrs.fill = cfg.color;\n }\n\n return attrs;\n}\n\n/**\n * shape 的 attrs\n * @param cfg\n */\nfunction getLineAttrs(cfg: ShapeStyle) {\n const defaultAttrs = {\n fill: '#fff',\n fillOpacity: 0,\n lineWidth: 4,\n };\n const attrs = mix({}, defaultAttrs, cfg.style);\n\n if (cfg.color && !attrs.stroke) {\n attrs.stroke = cfg.color;\n }\n if (isNumber(cfg.opacity)) {\n attrs.opacity = attrs.strokeOpacity = cfg.opacity;\n }\n\n return attrs;\n}\n\n/**\n * 用贝塞尔曲线模拟正弦波\n * Using Bezier curves to fit sine wave.\n * There is 4 control points for each curve of wave,\n * which is at 1/4 wave length of the sine wave.\n *\n * The control points for a wave from (a) to (d) are a-b-c-d:\n * c *----* d\n * b *\n * |\n * ... a * ..................\n *\n * whose positions are a: (0, 0), b: (0.5, 0.5), c: (1, 1), d: (PI / 2, 1)\n *\n * @param x x position of the left-most point (a)\n * @param stage 0-3, stating which part of the wave it is\n * @param waveLength wave length of the sine wave\n * @param amplitude wave amplitude\n * @return 正弦片段曲线\n */\nfunction getWaterWavePositions(x: number, stage: number, waveLength: number, amplitude: number) {\n if (stage === 0) {\n return [\n [x + ((1 / 2) * waveLength) / Math.PI / 2, amplitude / 2],\n [x + ((1 / 2) * waveLength) / Math.PI, amplitude],\n [x + waveLength / 4, amplitude],\n ];\n }\n if (stage === 1) {\n return [\n [x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 2), amplitude],\n [x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 1), amplitude / 2],\n [x + waveLength / 4, 0],\n ];\n }\n if (stage === 2) {\n return [\n [x + ((1 / 2) * waveLength) / Math.PI / 2, -amplitude / 2],\n [x + ((1 / 2) * waveLength) / Math.PI, -amplitude],\n [x + waveLength / 4, -amplitude],\n ];\n }\n return [\n [x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 2), -amplitude],\n [x + (((1 / 2) * waveLength) / Math.PI / 2) * (Math.PI - 1), -amplitude / 2],\n [x + waveLength / 4, 0],\n ];\n}\n/**\n * 获取水波路径\n * @param radius 半径\n * @param waterLevel 水位\n * @param waveLength 波长\n * @param phase 相位\n * @param amplitude 震幅\n * @param cx 圆心x\n * @param cy 圆心y\n * @return path 路径\n * @reference http://gitlab.alipay-inc.com/datavis/g6/blob/1.2.0/src/graph/utils/path.js#L135\n */\nfunction getWaterWavePath(\n radius: number,\n waterLevel: number,\n waveLength: number,\n phase: number,\n amplitude: number,\n cx: number,\n cy: number\n) {\n const curves = Math.ceil(((2 * radius) / waveLength) * 4) * 4;\n const path = [];\n let _phase = phase;\n\n // map phase to [-Math.PI * 2, 0]\n while (_phase < -Math.PI * 2) {\n _phase += Math.PI * 2;\n }\n while (_phase > 0) {\n _phase -= Math.PI * 2;\n }\n _phase = (_phase / Math.PI / 2) * waveLength;\n\n const left = cx - radius + _phase - radius * 2;\n /**\n * top-left corner as start point\n *\n * draws this point\n * |\n * \\|/\n * ~~~~~~~~\n * | |\n * +------+\n */\n path.push(['M', left, waterLevel]);\n\n /**\n * top wave\n *\n * ~~~~~~~~ <- draws this sine wave\n * | |\n * +------+\n */\n let waveRight = 0;\n for (let c = 0; c < curves; ++c) {\n const stage = c % 4;\n const pos = getWaterWavePositions((c * waveLength) / 4, stage, waveLength, amplitude);\n path.push([\n 'C',\n pos[0][0] + left,\n -pos[0][1] + waterLevel,\n pos[1][0] + left,\n -pos[1][1] + waterLevel,\n pos[2][0] + left,\n -pos[2][1] + waterLevel,\n ]);\n\n if (c === curves - 1) {\n waveRight = pos[2][0];\n }\n }\n\n /**\n * top-right corner\n *\n * ~~~~~~~~\n * 3. draws this line -> | | <- 1. draws this line\n * +------+\n * ^\n * |\n * 2. draws this line\n */\n path.push(['L', waveRight + left, cy + radius]);\n path.push(['L', left, cy + radius]);\n path.push(['Z']);\n // path.push(['L', left, waterLevel]);\n return path;\n}\n\n/**\n * 添加水波\n * @param x 中心x\n * @param y 中心y\n * @param level 水位等级 0~1\n * @param waveCount 水波数\n * @param waveAttrs 色值\n * @param group 图组\n * @param clip 用于剪切的图形\n * @param radius 绘制图形的高度\n * @param waveLength 波的长度\n */\nexport function addWaterWave(\n x: number,\n y: number,\n level: number,\n waveCount: number,\n waveAttrs: ShapeStyle,\n group: IGroup,\n clip: IShape,\n radius: number,\n waveLength: number,\n animation: LiquidOptions['animation']\n) {\n // 盒子属性 颜色 宽高\n const { fill, opacity } = waveAttrs;\n const bbox = clip.getBBox();\n const width = bbox.maxX - bbox.minX;\n const height = bbox.maxY - bbox.minY;\n\n // 循环 waveCount 个数\n for (let idx = 0; idx < waveCount; idx++) {\n const factor = waveCount <= 1 ? 1 : idx / (waveCount - 1);\n\n // 画波\n const wave = group.addShape('path', {\n name: `waterwave-path`,\n attrs: {\n // 波形路径配置\n path: getWaterWavePath(\n radius,\n bbox.minY + height * level,\n waveLength,\n 0,\n width / 32, // 波幅高度\n x,\n y\n ),\n fill,\n opacity: lerp(0.2, 0.9, factor) * opacity,\n },\n });\n\n try {\n // 默认 underfind 开启动画\n if (animation === false) return;\n const matrix = transform([['t', waveLength, 0]]);\n\n wave.stopAnimate();\n wave.animate(\n { matrix },\n {\n duration: lerp(0.5 * DURATION, DURATION, factor),\n repeat: true,\n }\n );\n } catch (e) {\n // TODO off-screen canvas 中动画会找不到 canvas\n console.warn('off-screen group animate error!');\n }\n }\n}\n\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction pin(x: number, y: number, width: number, height: number) {\n const w = (width * 2) / 3;\n const h = Math.max(w, height);\n const r = w / 2;\n\n // attrs of the upper circle\n const cx = x;\n const cy = r + y - h / 2;\n const theta = Math.asin(r / ((h - r) * 0.85));\n const dy = Math.sin(theta) * r;\n const dx = Math.cos(theta) * r;\n\n // the start point of the path\n const x0 = cx - dx;\n const y0 = cy + dy;\n\n // control point\n const cpX = x;\n const cpY = cy + r / Math.sin(theta);\n\n return `\n M ${x0} ${y0}\n A ${r} ${r} 0 1 1 ${x0 + dx * 2} ${y0}\n Q ${cpX} ${cpY} ${x} ${y + h / 2}\n Q ${cpX} ${cpY} ${x0} ${y0}\n Z \n `;\n}\n\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction circle(x: number, y: number, width: number, height: number) {\n const rx = width / 2;\n const ry = height / 2;\n return `\n M ${x} ${y - ry} \n a ${rx} ${ry} 0 1 0 0 ${ry * 2}\n a ${rx} ${ry} 0 1 0 0 ${-ry * 2}\n Z\n `;\n}\n\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction diamond(x: number, y: number, width: number, height: number) {\n const h = height / 2;\n const w = width / 2;\n return `\n M ${x} ${y - h}\n L ${x + w} ${y}\n L ${x} ${y + h}\n L ${x - w} ${y}\n Z\n `;\n}\n\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction triangle(x: number, y: number, width: number, height: number) {\n const h = height / 2;\n const w = width / 2;\n return `\n M ${x} ${y - h}\n L ${x + w} ${y + h}\n L ${x - w} ${y + h}\n Z\n `;\n}\n\n/**\n *\n * @param x 中心 x\n * @param y 中心 y\n * @param width 外接矩形的宽\n * @param height 外接矩形的高\n */\nfunction rect(x: number, y: number, width: number, height: number) {\n const GOLDEN_SECTION_RATIO = 0.618;\n const h = height / 2;\n const w = (width / 2) * GOLDEN_SECTION_RATIO;\n return `\n M ${x - w} ${y - h}\n L ${x + w} ${y - h}\n L ${x + w} ${y + h}\n L ${x - w} ${y + h}\n Z\n `;\n}\n\nconst builtInShapeByName = {\n pin,\n circle,\n diamond,\n triangle,\n rect,\n};\n\nregisterShape('interval', 'liquid-fill-gauge', {\n draw(cfg: any, container: IGroup) {\n const cx = 0.5;\n const cy = 0.5;\n\n const { customInfo } = cfg;\n const { percent, radius: radio, shape, shapeStyle, background, animation } = customInfo as CustomInfo;\n const outline: LiquidOptions['outline'] = customInfo.outline;\n const wave: LiquidOptions['wave'] = customInfo.wave;\n const { border, distance } = outline;\n const { count: waveCount, length: waveLength } = wave;\n\n // 获取最小 minX\n const minX = reduce(\n cfg.points as Point[],\n (r: number, p: Point) => {\n return Math.min(r, p.x);\n },\n Infinity\n );\n\n const center = this.parsePoint({ x: cx, y: cy });\n const minXPoint = this.parsePoint({ x: minX, y: cy });\n const halfWidth = center.x - minXPoint.x;\n\n // 保证半径是 画布宽高最小值的 radius 值\n const radius = Math.min(halfWidth, minXPoint.y * radio);\n const waveAttrs = getFillAttrs(cfg);\n const outlineAttrs = getLineAttrs(mix({}, cfg, outline));\n const innerRadius = radius - border / 2;\n\n const buildPath = typeof shape === 'function' ? shape : builtInShapeByName[shape] || builtInShapeByName['circle'];\n const shapePath = buildPath(center.x, center.y, innerRadius * 2, innerRadius * 2);\n\n // 1. 当 shapeStyle 不为空时,绘制形状样式作为背景\n if (shapeStyle) {\n container.addShape('path', {\n name: 'shape',\n attrs: {\n path: shapePath,\n ...shapeStyle,\n },\n });\n }\n\n // 比例大于 0 时才绘制水波\n if (percent > 0) {\n // 2. 绘制一个波\n const waves = container.addGroup({\n name: 'waves',\n });\n\n // 3. 波对应的 clip 裁剪形状\n const clipPath = waves.setClip({\n type: 'path',\n attrs: {\n path: shapePath,\n },\n });\n\n // 4. 绘制波形\n addWaterWave(\n center.x,\n center.y,\n 1 - (cfg.points[1] as Point).y,\n waveCount,\n waveAttrs,\n waves,\n clipPath,\n radius * 2,\n waveLength,\n animation\n );\n }\n\n // 5. 绘制一个 distance 宽的 border\n container.addShape('path', {\n name: 'distance',\n attrs: {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border + distance * 2,\n stroke: background === 'transparent' ? '#fff' : background,\n },\n });\n\n // 6. 绘制一个 border 宽的 border\n container.addShape('path', {\n name: 'wrap',\n attrs: mix(outlineAttrs, {\n path: shapePath,\n fill: 'transparent',\n lineWidth: border,\n }),\n });\n\n return container;\n },\n});\n"]}