NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g2/esm/geometry/shape/base.js
2023-09-14 14:47:11 +08:00

156 lines
4.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { __assign } from "tslib";
import { parsePathString } from '@antv/path-util';
import { deepMix, get, upperFirst } from '@antv/util';
import { convertNormalPath, convertPolarPath } from './util/path';
/** ShapeFactory 基类 */
var ShapeFactoryBase = {
/** 坐标系对象 */
coordinate: null,
/** 默认绘制的 Shape 类型 */
defaultShapeType: null,
/** 主题样式 */
theme: null,
/**
* 获取 shape 绘制需要的关键点
* @param shapeType shape 类型
* @param shapePoint 每条数据映射后的坐标点以及 size 数值
* @returns 图形关键点信息
*/
getShapePoints: function (shapeType, shapePoint) {
var shape = this.getShape(shapeType);
if (shape.getPoints) {
return shape.getPoints(shapePoint);
}
return this.getDefaultPoints(shapePoint);
},
/**
* 根据 shape 类型获取具体的 shape 实例
* @param shapeType string shape 的类型
* @returns
*/
getShape: function (shapeType) {
var shape = this[shapeType] || this[this.defaultShapeType];
shape.coordinate = this.coordinate;
return shape;
},
/**
* 获取 shape 的默认关键点
* @override
*/
getDefaultPoints: function () {
return [];
},
/**
* 获取 shape 对应的缩略图配置信息。
* @param shapeType shape 类型
* @param color 颜色
* @param isInPolar 是否在极坐标系下
* @returns 返回缩略图 marker 配置。
*/
getMarker: function (shapeType, markerCfg) {
var shape = this.getShape(shapeType);
if (!shape.getMarker) {
var defaultShapeType = this.defaultShapeType;
shape = this.getShape(defaultShapeType);
}
var theme = this.theme;
var shapeStyle = get(theme, [shapeType, 'default'], {});
var markerStyle = shape.getMarker(markerCfg);
return deepMix({}, shapeStyle, markerStyle);
},
/**
* 绘制 shape
* @override
* @param shapeType 绘制的 shape 类型
* @param cfg 绘制 shape 需要的信息
* @param element Element 实例
* @returns
*/
drawShape: function (shapeType, cfg, container) {
var shape = this.getShape(shapeType);
return shape.draw(cfg, container);
},
};
/** Shape 基类 */
var ShapeBase = {
/** 坐标系对象 */
coordinate: null,
/**
* 将归一化的 path 转换成坐标系下的 path
* @param path 归一化的路径
* @returns
*/
parsePath: function (path) {
var coordinate = this.coordinate;
var parsedPath = parsePathString(path);
if (coordinate.isPolar) {
parsedPath = convertPolarPath(coordinate, parsedPath);
}
else {
parsedPath = convertNormalPath(coordinate, parsedPath);
}
return parsedPath;
},
/**
* 将归一化的坐标转换成画布坐标
* @param point 归一化的坐标点数据
* @returns
*/
parsePoint: function (point) {
var coordinate = this.coordinate;
return coordinate.convert(point);
},
/**
* 01 points 转 画布 points
* @param points 节点集合
* @returns
*/
parsePoints: function (points) {
var coordinate = this.coordinate;
return points.map(function (point) {
return coordinate.convert(point);
});
},
/**
* 绘制 shape
* @override
*/
draw: function (cfg, container) { },
};
var ShapeFactoryMap = {};
/**
* 注册 ShapeFactory。
* @param factoryName ShapeFactory 名称,对应 Geometry 几何标记名称。
* @param cfg 注册 ShapeFactory 需要覆写定义的属性。
* @returns 返回 ShapeFactory 对象。
*/
export function registerShapeFactory(factoryName, cfg) {
var className = upperFirst(factoryName);
var geomObj = __assign(__assign(__assign({}, ShapeFactoryBase), cfg), { geometryType: factoryName });
ShapeFactoryMap[className] = geomObj;
return geomObj;
}
/**
* 注册 Shape。
* @param factoryName 对应的 ShapeFactory 名称。
* @param shapeType 注册的 shape 名称。
* @param cfg 注册 Shape 需要覆写定义的属性。
* @returns shape 返回注册的 shape 对象。
*/
export function registerShape(factoryName, shapeType, cfg) {
var className = upperFirst(factoryName);
var factory = ShapeFactoryMap[className];
var shapeObj = __assign(__assign({}, ShapeBase), cfg);
factory[shapeType] = shapeObj;
return shapeObj;
}
/**
* 获取 factoryName 对应的 shapeFactory
* @param factoryName
* @returns shape factory
*/
export function getShapeFactory(factoryName) {
var className = upperFirst(factoryName);
return ShapeFactoryMap[className];
}
//# sourceMappingURL=base.js.map