UNPKG

8.59 kBSource Map (JSON)View Raw
1{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/geometry/shape/base.ts"],"names":[],"mappings":"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","sourcesContent":["import { LooseObject } from '@antv/g-svg';\nimport { parsePathString } from '@antv/path-util';\nimport { deepMix, get, upperFirst } from '@antv/util';\nimport { IGroup, IShape, PathCommand } from '../../dependents';\nimport {\n Point,\n RegisterShape,\n RegisterShapeFactory,\n Shape,\n ShapeFactory,\n ShapeInfo,\n ShapeMarkerAttrs,\n ShapeMarkerCfg,\n ShapePoint,\n} from '../../interface';\n\nimport { convertNormalPath, convertPolarPath } from './util/path';\n\n/** ShapeFactory 基类 */\nconst ShapeFactoryBase = {\n /** 坐标系对象 */\n coordinate: null,\n /** 默认绘制的 Shape 类型 */\n defaultShapeType: null,\n /** 主题样式 */\n theme: null,\n /**\n * 获取 shape 绘制需要的关键点\n * @param shapeType shape 类型\n * @param shapePoint 每条数据映射后的坐标点以及 size 数值\n * @returns 图形关键点信息\n */\n getShapePoints(shapeType: string, shapePoint: ShapePoint) {\n const shape = this.getShape(shapeType);\n if (shape.getPoints) {\n return shape.getPoints(shapePoint);\n }\n\n return this.getDefaultPoints(shapePoint);\n },\n /**\n * 根据 shape 类型获取具体的 shape 实例\n * @param shapeType string shape 的类型\n * @returns\n */\n getShape(shapeType: string): Shape {\n const shape = this[shapeType] || this[this.defaultShapeType];\n shape.coordinate = this.coordinate;\n\n return shape;\n },\n /**\n * 获取 shape 的默认关键点\n * @override\n */\n getDefaultPoints() {\n return [];\n },\n /**\n * 获取 shape 的默认绘制样式 (内置的 shapeFactory 均有注册默认样式)\n */\n getDefaultStyle(geometryTheme: LooseObject): LooseObject {\n return get(geometryTheme, [this.defaultShapeType, 'default', 'style'], {});\n },\n /**\n * 获取 shape 对应的缩略图配置信息。\n * @param shapeType shape 类型\n * @param color 颜色\n * @param isInPolar 是否在极坐标系下\n * @returns 返回缩略图 marker 配置。\n */\n getMarker(shapeType: string, markerCfg: ShapeMarkerCfg): ShapeMarkerAttrs {\n let shape = this.getShape(shapeType);\n\n if (!shape.getMarker) {\n const defaultShapeType = this.defaultShapeType;\n shape = this.getShape(defaultShapeType);\n }\n\n const theme = this.theme;\n const shapeStyle = get(theme, [shapeType, 'default'], {});\n const markerStyle = shape.getMarker(markerCfg);\n\n return deepMix({}, shapeStyle, markerStyle);\n },\n /**\n * 绘制 shape\n * @override\n * @param shapeType 绘制的 shape 类型\n * @param cfg 绘制 shape 需要的信息\n * @param element Element 实例\n * @returns\n */\n drawShape(shapeType: string, cfg: ShapeInfo, container: IGroup): IShape | IGroup {\n const shape = this.getShape(shapeType);\n return shape.draw(cfg, container);\n },\n};\n\n/** Shape 基类 */\nconst ShapeBase = {\n /** 坐标系对象 */\n coordinate: null,\n /**\n * 将归一化的 path 转换成坐标系下的 path\n * @param path 归一化的路径\n * @returns\n */\n parsePath(path: string): PathCommand[] {\n const coordinate = this.coordinate;\n let parsedPath = parsePathString(path);\n if (coordinate.isPolar) {\n parsedPath = convertPolarPath(coordinate, parsedPath);\n } else {\n parsedPath = convertNormalPath(coordinate, parsedPath);\n }\n return parsedPath;\n },\n /**\n * 将归一化的坐标转换成画布坐标\n * @param point 归一化的坐标点数据\n * @returns\n */\n parsePoint(point: Point): Point {\n const coordinate = this.coordinate;\n return coordinate.convert(point);\n },\n /**\n * 0~1 points 转 画布 points\n * @param points 节点集合\n * @returns\n */\n parsePoints(points: Point[]): Point[] {\n const coordinate = this.coordinate;\n return points.map((point) => {\n return coordinate.convert(point);\n });\n },\n /**\n * 绘制 shape\n * @override\n */\n draw(cfg: ShapeInfo, container: IGroup) {},\n};\n\nconst ShapeFactoryMap = {};\n\n/**\n * 注册 ShapeFactory。\n * @param factoryName ShapeFactory 名称,对应 Geometry 几何标记名称。\n * @param cfg 注册 ShapeFactory 需要覆写定义的属性。\n * @returns 返回 ShapeFactory 对象。\n */\nexport function registerShapeFactory(factoryName: string, cfg: RegisterShapeFactory): ShapeFactory {\n const className = upperFirst(factoryName);\n const geomObj = {\n ...ShapeFactoryBase,\n ...cfg,\n geometryType: factoryName,\n };\n ShapeFactoryMap[className] = geomObj;\n return geomObj;\n}\n\n/**\n * 注册 Shape。\n * @param factoryName 对应的 ShapeFactory 名称。\n * @param shapeType 注册的 shape 名称。\n * @param cfg 注册 Shape 需要覆写定义的属性。\n * @returns shape 返回注册的 shape 对象。\n */\nexport function registerShape(factoryName: string, shapeType: string, cfg: RegisterShape): Shape {\n const className = upperFirst(factoryName);\n const factory = ShapeFactoryMap[className];\n const shapeObj = {\n ...ShapeBase,\n ...cfg,\n };\n factory[shapeType] = shapeObj;\n return shapeObj;\n}\n\n/**\n * 获取 factoryName 对应的 shapeFactory\n * @param factoryName\n * @returns shape factory\n */\nexport function getShapeFactory(factoryName: string): ShapeFactory {\n const className = upperFirst(factoryName);\n return ShapeFactoryMap[className];\n}\n"]}
\No newline at end of file