| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import { mix } from '../../util/common';
- import Abstract from './abstract';
- class Circle extends Abstract {
- _initDefaultCfg() {
- super._initDefaultCfg();
- this.startAngle = -Math.PI / 2; // start angle,in radian
- this.endAngle = Math.PI * 3 / 2; // end angle, in radian
- this.radius = null; // radius
- this.center = null; // center
- }
- getOffsetPoint(value) {
- var {
- startAngle,
- endAngle
- } = this;
- var angle = startAngle + (endAngle - startAngle) * value;
- return this._getCirclePoint(angle);
- }
- _getCirclePoint(angle, radius) {
- var self = this;
- var center = self.center;
- radius = radius || self.radius;
- return {
- x: center.x + Math.cos(angle) * radius,
- y: center.y + Math.sin(angle) * radius
- };
- }
- getTextAlignInfo(point, offset) {
- var self = this;
- var offsetVector = self.getOffsetVector(point, offset);
- var align;
- var baseLine = 'middle';
- if (offsetVector[0] > 0) {
- align = 'left';
- } else if (offsetVector[0] < 0) {
- align = 'right';
- } else {
- align = 'center';
- if (offsetVector[1] > 0) {
- baseLine = 'top';
- } else if (offsetVector[1] < 0) {
- baseLine = 'bottom';
- }
- }
- return {
- textAlign: align,
- textBaseline: baseLine
- };
- }
- getAxisVector(point) {
- var center = this.center;
- var factor = this.offsetFactor;
- return [(point.y - center.y) * factor, (point.x - center.x) * -1 * factor];
- }
- drawLine(lineCfg) {
- var {
- center,
- radius,
- startAngle,
- endAngle
- } = this;
- var container = this.getContainer(lineCfg.top);
- container.addShape('arc', {
- className: 'axis-line',
- attrs: mix({
- x: center.x,
- y: center.y,
- r: radius,
- startAngle,
- endAngle
- }, lineCfg)
- });
- }
- }
- Abstract.Circle = Circle;
- export default Circle;
|