arc.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var tslib_1 = require("tslib");
  4. var group_component_1 = require("../abstract/group-component");
  5. var util_1 = require("../util/util");
  6. var ArcAnnotation = /** @class */ (function (_super) {
  7. tslib_1.__extends(ArcAnnotation, _super);
  8. function ArcAnnotation() {
  9. return _super !== null && _super.apply(this, arguments) || this;
  10. }
  11. /**
  12. * @protected
  13. * 默认的配置项
  14. * @returns {object} 默认的配置项
  15. */
  16. ArcAnnotation.prototype.getDefaultCfg = function () {
  17. var cfg = _super.prototype.getDefaultCfg.call(this);
  18. return tslib_1.__assign(tslib_1.__assign({}, cfg), { name: 'annotation', type: 'arc', locationType: 'circle', center: null, radius: 100, startAngle: -Math.PI / 2, endAngle: (Math.PI * 3) / 2, style: {
  19. stroke: '#999',
  20. lineWidth: 1,
  21. } });
  22. };
  23. ArcAnnotation.prototype.renderInner = function (group) {
  24. this.renderArc(group);
  25. };
  26. ArcAnnotation.prototype.getArcPath = function () {
  27. var _a = this.getLocation(), center = _a.center, radius = _a.radius, startAngle = _a.startAngle, endAngle = _a.endAngle;
  28. var startPoint = util_1.getCirclePoint(center, radius, startAngle);
  29. var endPoint = util_1.getCirclePoint(center, radius, endAngle);
  30. var largeFlag = endAngle - startAngle > Math.PI ? 1 : 0;
  31. var path = [['M', startPoint.x, startPoint.y]];
  32. if (endAngle - startAngle === Math.PI * 2) {
  33. // 整个圆是分割成两个圆
  34. var middlePoint = util_1.getCirclePoint(center, radius, startAngle + Math.PI);
  35. path.push(['A', radius, radius, 0, largeFlag, 1, middlePoint.x, middlePoint.y]);
  36. path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);
  37. }
  38. else {
  39. path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);
  40. }
  41. return path;
  42. };
  43. // 绘制 arc
  44. ArcAnnotation.prototype.renderArc = function (group) {
  45. // 也可以 通过 get('center') 类似的方式逐个获取
  46. var path = this.getArcPath();
  47. var style = this.get('style');
  48. this.addShape(group, {
  49. type: 'path',
  50. id: this.getElementId('arc'),
  51. name: 'annotation-arc',
  52. attrs: tslib_1.__assign({ path: path }, style),
  53. });
  54. };
  55. return ArcAnnotation;
  56. }(group_component_1.default));
  57. exports.default = ArcAnnotation;
  58. //# sourceMappingURL=arc.js.map