shape.d.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { IShape } from '../interfaces';
  2. import { ShapeCfg, ShapeAttrs, BBox } from '../types';
  3. import Element from './element';
  4. declare abstract class AbstractShape extends Element implements IShape {
  5. constructor(cfg: ShapeCfg);
  6. _isInBBox(refX: any, refY: any): boolean;
  7. /**
  8. * 属性更改后需要做的事情
  9. * @protected
  10. * @param {ShapeAttrs} targetAttrs 渲染的图像属性
  11. */
  12. afterAttrsChange(targetAttrs: ShapeAttrs): void;
  13. getBBox(): BBox;
  14. getCanvasBBox(): BBox;
  15. /**
  16. * 计算包围盒的抽象方法
  17. * @return {BBox} 包围盒
  18. */
  19. abstract calculateBBox(): BBox;
  20. applyMatrix(matrix: number[]): void;
  21. /**
  22. * 计算相对于画布的包围盒,默认等同于 bbox
  23. * @return {BBox} 包围盒
  24. */
  25. calculateCanvasBBox(): {
  26. x: number;
  27. y: number;
  28. minX: number;
  29. minY: number;
  30. maxX: number;
  31. maxY: number;
  32. width: number;
  33. height: number;
  34. };
  35. /**
  36. * @protected
  37. * 清理缓存的 bbox
  38. */
  39. clearCacheBBox(): void;
  40. isClipShape(): any;
  41. /**
  42. * @protected
  43. * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域
  44. * @param {number} refX 相对于图形的坐标 x
  45. * @param {number} refY 相对于图形的坐标 Y
  46. * @return {boolean} 点是否在图形内部
  47. */
  48. isInShape(refX: number, refY: number): boolean;
  49. /**
  50. * 是否仅仅使用 BBox 检测就可以判定拾取到图形
  51. * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取
  52. * @return {Boolean} 仅仅使用 BBox 进行拾取
  53. */
  54. isOnlyHitBox(): boolean;
  55. isHit(x: number, y: number): boolean;
  56. }
  57. export default AbstractShape;