1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import Path, { PathProps } from '../Path';
- import * as roundSectorHelper from '../helper/roundSector';
- export class SectorShape {
- cx = 0
- cy = 0
- r0 = 0
- r = 0
- startAngle = 0
- endAngle = Math.PI * 2
- clockwise = true
- /**
- * Corner radius of sector
- *
- * clockwise, from inside to outside, four corners are
- * inner start -> inner end
- * outer start -> outer end
- *
- * 5 => [5, 5, 5, 5]
- * [5] => [5, 5, 0, 0]
- * [5, 10] => [5, 5, 10, 10]
- * [5, 10, 15] => [5, 10, 15, 15]
- * [5, 10, 15, 20] => [5, 10, 15, 20]
- */
- cornerRadius: number | number[] = 0
- }
- export interface SectorProps extends PathProps {
- shape?: Partial<SectorShape>
- }
- class Sector extends Path<SectorProps> {
- shape: SectorShape
- constructor(opts?: SectorProps) {
- super(opts);
- }
- getDefaultShape() {
- return new SectorShape();
- }
- buildPath(ctx: CanvasRenderingContext2D, shape: SectorShape) {
- roundSectorHelper.buildPath(ctx, shape);
- }
- isZeroArea() {
- return this.shape.startAngle === this.shape.endAngle
- || this.shape.r === this.shape.r0;
- }
- }
- Sector.prototype.type = 'sector';
- export default Sector;
|