sign.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import Sign, {StyleProps as SignProps} from '../label/sign'
  2. import {AttachCAD as CAD} from '../index'
  3. import {Point as geoPoint} from '../geometry'
  4. import {type} from '../util'
  5. export interface sign{
  6. setSign: (point: geoPoint, dire?: number) => void,
  7. hideSign: () => Promise<void>,
  8. showSign: () => Promise<void>,
  9. setDefaultSignStyle: (args: SignProps) => void
  10. }
  11. // 附加显示隐藏比例尺的api,添加当前位置的label
  12. export const attachSign = (cad: CAD) => {
  13. let signStyle = {
  14. border: 2,
  15. r: 5
  16. }
  17. const addProcessing = cad.addProcessing
  18. cad.addProcessing = (...args) => {
  19. let processing = addProcessing.call(cad, ...args)
  20. Sign.Setting.set(processing.render, signStyle)
  21. let sign = new Sign({
  22. pos: {x: 0, y: 0},
  23. dire: 0,
  24. renderer: processing.render
  25. })
  26. sign.zIndex = 1
  27. processing.render.push(sign)
  28. processing.sign = sign
  29. return processing
  30. }
  31. // 添加设置当前点位方向
  32. cad.setSign = (point, dire) => {
  33. let sign = cad.processing.sign
  34. if (type.isNumber(dire)) sign.dire = dire
  35. sign.pos = point
  36. }
  37. cad.hideSign = () => {
  38. let sign = cad.processing.sign
  39. sign.show = false
  40. return new Promise(r => sign.nextTick(r))
  41. }
  42. cad.showSign = () => {
  43. let sign = cad.processing.sign
  44. sign.show = true
  45. return new Promise(r => sign.nextTick(r))
  46. }
  47. cad.setDefaultSignStyle = args => {
  48. let sign = cad.processing.sign
  49. if (args.border) {
  50. signStyle.border = args.border
  51. sign.border = args.border
  52. }
  53. if (args.r) {
  54. signStyle.r = args.r
  55. sign.r = args.r
  56. }
  57. if (args.color) {
  58. sign.color = args.color
  59. }
  60. }
  61. }