@antv/x6
Version:
JavaScript diagramming library that uses SVG and HTML for rendering
46 lines (39 loc) • 975 B
text/typescript
import { Path } from '../../geometry'
import type { SimpleAttrs } from '../attr'
import type { MarkerFactory } from './index'
import { normalize } from './util'
export interface CircleMarkerOptions extends SimpleAttrs {
r?: number
}
export interface CirclePlusMarkerOptions extends CircleMarkerOptions {}
export const circle: MarkerFactory<CircleMarkerOptions> = ({ r, ...attrs }) => {
const radius = r || 5
return {
cx: radius,
...attrs,
tagName: 'circle',
r: radius,
}
}
export const circlePlus: MarkerFactory<CircleMarkerOptions> = ({
r,
...attrs
}) => {
const radius = r || 5
const path = new Path()
path.moveTo(radius, 0).lineTo(radius, radius * 2)
path.moveTo(0, radius).lineTo(radius * 2, radius)
return {
children: [
{
...circle({ r: radius }),
fill: 'none',
},
{
...attrs,
tagName: 'path',
d: normalize(path.serialize(), -radius),
},
] as any,
}
}