@meta2d/core 1.0.56 → 1.0.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/{index.ts → index.d.ts} +9 -9
  2. package/index.js +10 -0
  3. package/index.js.map +1 -0
  4. package/package.json +38 -39
  5. package/src/canvas/canvas.d.ts +456 -0
  6. package/src/canvas/canvas.js +7584 -0
  7. package/src/canvas/canvas.js.map +1 -0
  8. package/src/canvas/canvasImage.d.ts +27 -0
  9. package/src/canvas/canvasImage.js +441 -0
  10. package/src/canvas/canvasImage.js.map +1 -0
  11. package/src/canvas/canvasTemplate.d.ts +18 -0
  12. package/src/canvas/canvasTemplate.js +209 -0
  13. package/src/canvas/canvasTemplate.js.map +1 -0
  14. package/src/canvas/{index.ts → index.d.ts} +2 -2
  15. package/src/canvas/index.js +3 -0
  16. package/src/canvas/index.js.map +1 -0
  17. package/src/canvas/magnifierCanvas.d.ts +19 -0
  18. package/src/canvas/magnifierCanvas.js +102 -0
  19. package/src/canvas/magnifierCanvas.js.map +1 -0
  20. package/src/canvas/offscreen.d.ts +1 -0
  21. package/src/canvas/offscreen.js +14 -0
  22. package/src/canvas/offscreen.js.map +1 -0
  23. package/src/core.d.ts +479 -0
  24. package/src/core.js +4609 -0
  25. package/src/core.js.map +1 -0
  26. package/src/data.d.ts +34 -0
  27. package/src/data.js +85 -0
  28. package/src/data.js.map +1 -0
  29. package/src/diagrams/arrow.d.ts +4 -0
  30. package/src/diagrams/arrow.js +47 -0
  31. package/src/diagrams/arrow.js.map +1 -0
  32. package/src/diagrams/circle.d.ts +2 -0
  33. package/src/diagrams/circle.js +9 -0
  34. package/src/diagrams/circle.js.map +1 -0
  35. package/src/diagrams/cloud.d.ts +2 -0
  36. package/src/diagrams/cloud.js +12 -0
  37. package/src/diagrams/cloud.js.map +1 -0
  38. package/src/diagrams/cube.d.ts +2 -0
  39. package/src/diagrams/cube.js +68 -0
  40. package/src/diagrams/cube.js.map +1 -0
  41. package/src/diagrams/diamond.d.ts +2 -0
  42. package/src/diagrams/diamond.js +13 -0
  43. package/src/diagrams/diamond.js.map +1 -0
  44. package/src/diagrams/file.d.ts +2 -0
  45. package/src/diagrams/file.js +18 -0
  46. package/src/diagrams/file.js.map +1 -0
  47. package/src/diagrams/gif.d.ts +5 -0
  48. package/src/diagrams/gif.js +89 -0
  49. package/src/diagrams/gif.js.map +1 -0
  50. package/src/diagrams/hexagon.d.ts +2 -0
  51. package/src/diagrams/{hexagon.ts → hexagon.js} +55 -60
  52. package/src/diagrams/hexagon.js.map +1 -0
  53. package/src/diagrams/iframe.d.ts +2 -0
  54. package/src/diagrams/iframe.js +338 -0
  55. package/src/diagrams/iframe.js.map +1 -0
  56. package/src/diagrams/index.d.ts +71 -0
  57. package/src/diagrams/{index.ts → index.js} +77 -79
  58. package/src/diagrams/index.js.map +1 -0
  59. package/src/diagrams/line/arrow.d.ts +2 -0
  60. package/src/diagrams/line/arrow.js +128 -0
  61. package/src/diagrams/line/arrow.js.map +1 -0
  62. package/src/diagrams/line/curve.d.ts +16 -0
  63. package/src/diagrams/line/curve.js +227 -0
  64. package/src/diagrams/line/curve.js.map +1 -0
  65. package/src/diagrams/line/{index.ts → index.d.ts} +5 -5
  66. package/src/diagrams/line/index.js +6 -0
  67. package/src/diagrams/line/index.js.map +1 -0
  68. package/src/diagrams/line/line.d.ts +42 -0
  69. package/src/diagrams/line/line.js +375 -0
  70. package/src/diagrams/line/line.js.map +1 -0
  71. package/src/diagrams/line/polyline.d.ts +10 -0
  72. package/src/diagrams/line/polyline.js +627 -0
  73. package/src/diagrams/line/polyline.js.map +1 -0
  74. package/src/diagrams/line/smooth.d.ts +3 -0
  75. package/src/diagrams/line/smooth.js +136 -0
  76. package/src/diagrams/line/smooth.js.map +1 -0
  77. package/src/diagrams/message.d.ts +2 -0
  78. package/src/diagrams/message.js +15 -0
  79. package/src/diagrams/message.js.map +1 -0
  80. package/src/diagrams/mindLine.d.ts +3 -0
  81. package/src/diagrams/mindLine.js +30 -0
  82. package/src/diagrams/mindLine.js.map +1 -0
  83. package/src/diagrams/mindNode.d.ts +3 -0
  84. package/src/diagrams/mindNode.js +161 -0
  85. package/src/diagrams/mindNode.js.map +1 -0
  86. package/src/diagrams/panel.d.ts +2 -0
  87. package/src/diagrams/panel.js +131 -0
  88. package/src/diagrams/panel.js.map +1 -0
  89. package/src/diagrams/pentagon.d.ts +3 -0
  90. package/src/diagrams/pentagon.js +45 -0
  91. package/src/diagrams/pentagon.js.map +1 -0
  92. package/src/diagrams/pentagram.d.ts +3 -0
  93. package/src/diagrams/pentagram.js +51 -0
  94. package/src/diagrams/pentagram.js.map +1 -0
  95. package/src/diagrams/people.d.ts +2 -0
  96. package/src/diagrams/people.js +19 -0
  97. package/src/diagrams/people.js.map +1 -0
  98. package/src/diagrams/rectangle.d.ts +3 -0
  99. package/src/diagrams/rectangle.js +27 -0
  100. package/src/diagrams/rectangle.js.map +1 -0
  101. package/src/diagrams/svg/parse.d.ts +15 -0
  102. package/src/diagrams/svg/parse.js +279 -0
  103. package/src/diagrams/svg/parse.js.map +1 -0
  104. package/src/diagrams/svgPath.d.ts +2 -0
  105. package/src/diagrams/svgPath.js +29 -0
  106. package/src/diagrams/svgPath.js.map +1 -0
  107. package/src/diagrams/triangle.d.ts +3 -0
  108. package/src/diagrams/triangle.js +40 -0
  109. package/src/diagrams/triangle.js.map +1 -0
  110. package/src/diagrams/video.d.ts +5 -0
  111. package/src/diagrams/video.js +184 -0
  112. package/src/diagrams/video.js.map +1 -0
  113. package/src/dialog/dialog.d.ts +21 -0
  114. package/src/dialog/dialog.js +157 -0
  115. package/src/dialog/dialog.js.map +1 -0
  116. package/src/dialog/{index.ts → index.d.ts} +1 -1
  117. package/src/dialog/index.js +2 -0
  118. package/src/dialog/index.js.map +1 -0
  119. package/src/event/event.d.ts +102 -0
  120. package/src/event/event.js +22 -0
  121. package/src/event/event.js.map +1 -0
  122. package/src/event/{index.ts → index.d.ts} +1 -1
  123. package/src/event/index.js +2 -0
  124. package/src/event/index.js.map +1 -0
  125. package/src/map/{index.ts → index.d.ts} +1 -1
  126. package/src/map/index.js +2 -0
  127. package/src/map/index.js.map +1 -0
  128. package/src/map/map.d.ts +21 -0
  129. package/src/map/map.js +212 -0
  130. package/src/map/map.js.map +1 -0
  131. package/src/options.d.ts +130 -0
  132. package/src/options.js +80 -0
  133. package/src/options.js.map +1 -0
  134. package/src/pen/arrow.d.ts +4 -0
  135. package/src/pen/arrow.js +188 -0
  136. package/src/pen/arrow.js.map +1 -0
  137. package/src/pen/{index.ts → index.d.ts} +6 -6
  138. package/src/pen/index.js +7 -0
  139. package/src/pen/index.js.map +1 -0
  140. package/src/pen/math.d.ts +28 -0
  141. package/src/pen/math.js +213 -0
  142. package/src/pen/math.js.map +1 -0
  143. package/src/pen/model.d.ts +514 -0
  144. package/src/pen/model.js +210 -0
  145. package/src/pen/model.js.map +1 -0
  146. package/src/pen/plugin.d.ts +5 -0
  147. package/src/pen/plugin.js +58 -0
  148. package/src/pen/plugin.js.map +1 -0
  149. package/src/pen/render.d.ts +146 -0
  150. package/src/pen/render.js +3234 -0
  151. package/src/pen/render.js.map +1 -0
  152. package/src/pen/text.d.ts +8 -0
  153. package/src/pen/text.js +314 -0
  154. package/src/pen/text.js.map +1 -0
  155. package/src/pen/utils.d.ts +2 -0
  156. package/src/pen/utils.js +19 -0
  157. package/src/pen/utils.js.map +1 -0
  158. package/src/point/{index.ts → index.d.ts} +1 -1
  159. package/src/point/index.js +2 -0
  160. package/src/point/index.js.map +1 -0
  161. package/src/point/point.d.ts +65 -0
  162. package/src/point/point.js +178 -0
  163. package/src/point/point.js.map +1 -0
  164. package/src/rect/{index.ts → index.d.ts} +1 -1
  165. package/src/rect/index.js +2 -0
  166. package/src/rect/index.js.map +1 -0
  167. package/src/rect/rect.d.ts +52 -0
  168. package/src/rect/rect.js +427 -0
  169. package/src/rect/rect.js.map +1 -0
  170. package/src/rect/triangle.d.ts +2 -0
  171. package/src/rect/triangle.js +10 -0
  172. package/src/rect/triangle.js.map +1 -0
  173. package/src/scroll/{index.ts → index.d.ts} +1 -1
  174. package/src/scroll/index.js +2 -0
  175. package/src/scroll/index.js.map +1 -0
  176. package/src/scroll/scroll.d.ts +35 -0
  177. package/src/scroll/scroll.js +234 -0
  178. package/src/scroll/scroll.js.map +1 -0
  179. package/src/store/global.d.ts +25 -0
  180. package/src/store/global.js +18 -0
  181. package/src/store/global.js.map +1 -0
  182. package/src/store/{index.ts → index.d.ts} +2 -2
  183. package/src/store/index.js +3 -0
  184. package/src/store/index.js.map +1 -0
  185. package/src/store/store.d.ts +228 -0
  186. package/src/store/store.js +87 -0
  187. package/src/store/store.js.map +1 -0
  188. package/src/theme.d.ts +13 -0
  189. package/src/theme.js +23 -0
  190. package/src/theme.js.map +1 -0
  191. package/src/title/{index.ts → index.d.ts} +1 -1
  192. package/src/title/index.js +2 -0
  193. package/src/title/index.js.map +1 -0
  194. package/src/title/title.d.ts +30 -0
  195. package/src/title/title.js +99 -0
  196. package/src/title/title.js.map +1 -0
  197. package/src/tooltip/{index.ts → index.d.ts} +1 -1
  198. package/src/tooltip/index.js +2 -0
  199. package/src/tooltip/index.js.map +1 -0
  200. package/src/tooltip/tooltip.d.ts +40 -0
  201. package/src/tooltip/tooltip.js +172 -0
  202. package/src/tooltip/tooltip.js.map +1 -0
  203. package/src/utils/clone.d.ts +8 -0
  204. package/src/utils/clone.js +84 -0
  205. package/src/utils/clone.js.map +1 -0
  206. package/src/utils/color.d.ts +3 -0
  207. package/src/utils/color.js +110 -0
  208. package/src/utils/color.js.map +1 -0
  209. package/src/utils/error.d.ts +2 -0
  210. package/src/utils/error.js +6 -0
  211. package/src/utils/error.js.map +1 -0
  212. package/src/utils/file.d.ts +3 -0
  213. package/src/utils/file.js +40 -0
  214. package/src/utils/file.js.map +1 -0
  215. package/src/utils/{index.ts → index.d.ts} +9 -9
  216. package/src/utils/index.js +10 -0
  217. package/src/utils/index.js.map +1 -0
  218. package/src/utils/math.d.ts +18 -0
  219. package/src/utils/math.js +114 -0
  220. package/src/utils/math.js.map +1 -0
  221. package/src/utils/object.d.ts +2 -0
  222. package/src/utils/object.js +21 -0
  223. package/src/utils/object.js.map +1 -0
  224. package/src/utils/padding.d.ts +7 -0
  225. package/src/utils/padding.js +47 -0
  226. package/src/utils/padding.js.map +1 -0
  227. package/src/utils/time.d.ts +1 -0
  228. package/src/utils/time.js +17 -0
  229. package/src/utils/time.js.map +1 -0
  230. package/src/utils/url.d.ts +4 -0
  231. package/src/utils/url.js +27 -0
  232. package/src/utils/url.js.map +1 -0
  233. package/src/utils/uuid.d.ts +4 -0
  234. package/src/utils/uuid.js +13 -0
  235. package/src/utils/uuid.js.map +1 -0
  236. package/README.md +0 -13
  237. package/package.build.json +0 -39
  238. package/src/canvas/canvas.ts +0 -8639
  239. package/src/canvas/canvasImage.ts +0 -525
  240. package/src/canvas/canvasTemplate.ts +0 -257
  241. package/src/canvas/magnifierCanvas.ts +0 -142
  242. package/src/canvas/offscreen.ts +0 -14
  243. package/src/core.ts +0 -5128
  244. package/src/data.ts +0 -86
  245. package/src/diagrams/arrow.ts +0 -50
  246. package/src/diagrams/circle.ts +0 -19
  247. package/src/diagrams/cloud.ts +0 -34
  248. package/src/diagrams/cube.ts +0 -94
  249. package/src/diagrams/diamond.ts +0 -14
  250. package/src/diagrams/file.ts +0 -19
  251. package/src/diagrams/gif.ts +0 -105
  252. package/src/diagrams/iframe.ts +0 -365
  253. package/src/diagrams/line/arrow.ts +0 -175
  254. package/src/diagrams/line/curve.ts +0 -260
  255. package/src/diagrams/line/line.ts +0 -409
  256. package/src/diagrams/line/polyline.ts +0 -676
  257. package/src/diagrams/line/smooth.ts +0 -133
  258. package/src/diagrams/message.ts +0 -17
  259. package/src/diagrams/mindLine.ts +0 -31
  260. package/src/diagrams/mindNode.ts +0 -177
  261. package/src/diagrams/panel.ts +0 -149
  262. package/src/diagrams/pentagon.ts +0 -48
  263. package/src/diagrams/pentagram.ts +0 -63
  264. package/src/diagrams/people.ts +0 -23
  265. package/src/diagrams/rectangle.ts +0 -29
  266. package/src/diagrams/svg/parse.ts +0 -319
  267. package/src/diagrams/svgPath.ts +0 -53
  268. package/src/diagrams/triangle.ts +0 -43
  269. package/src/diagrams/video.ts +0 -202
  270. package/src/dialog/dialog.ts +0 -177
  271. package/src/event/event.ts +0 -142
  272. package/src/map/map.ts +0 -239
  273. package/src/options.ts +0 -205
  274. package/src/pen/arrow.ts +0 -259
  275. package/src/pen/math.ts +0 -253
  276. package/src/pen/model.ts +0 -785
  277. package/src/pen/plugin.ts +0 -57
  278. package/src/pen/render.ts +0 -3725
  279. package/src/pen/text.ts +0 -341
  280. package/src/pen/utils.ts +0 -21
  281. package/src/point/point.ts +0 -232
  282. package/src/rect/rect.ts +0 -507
  283. package/src/rect/triangle.ts +0 -16
  284. package/src/scroll/scroll.ts +0 -277
  285. package/src/store/global.ts +0 -38
  286. package/src/store/store.ts +0 -293
  287. package/src/theme.ts +0 -35
  288. package/src/title/title.ts +0 -115
  289. package/src/tooltip/tooltip.ts +0 -199
  290. package/src/utils/clone.ts +0 -79
  291. package/src/utils/color.ts +0 -126
  292. package/src/utils/error.ts +0 -7
  293. package/src/utils/file.ts +0 -46
  294. package/src/utils/math.ts +0 -120
  295. package/src/utils/object.ts +0 -23
  296. package/src/utils/padding.ts +0 -48
  297. package/src/utils/time.ts +0 -25
  298. package/src/utils/url.ts +0 -30
  299. package/src/utils/uuid.ts +0 -15
@@ -1,525 +0,0 @@
1
- import {
2
- ctxFlip,
3
- ctxRotate,
4
- drawImage,
5
- Pen,
6
- setGlobalAlpha,
7
- getParent,
8
- CanvasLayer,
9
- } from '../pen';
10
- import { Fit, Meta2dStore } from '../store';
11
- import { rgba } from '../utils';
12
- import { createOffscreen } from './offscreen';
13
-
14
- export class CanvasImage {
15
- canvas = document.createElement('canvas');
16
- /**
17
- * 非图片的绘制
18
- * isBottom true 指背景颜色,背景网格
19
- * isBottom false 指 标尺
20
- */
21
- otherOffsreen = createOffscreen(); // 非图片的
22
- offscreen = createOffscreen();
23
- animateOffsScreen = createOffscreen();
24
- fitOffscreen = createOffscreen();
25
- fitFlag = false; //开启自定义填充
26
- currentFit:string;
27
- activeFit: Fit;
28
-
29
- constructor(
30
- public parentElement: HTMLElement,
31
- public store: Meta2dStore,
32
- private isBottom?: boolean
33
- ) {
34
- parentElement.appendChild(this.canvas);
35
- this.canvas.style.backgroundRepeat = 'no-repeat';
36
- this.canvas.style.backgroundSize = '100% 100%';
37
- this.canvas.style.position = 'absolute';
38
- this.canvas.style.top = '0';
39
- this.canvas.style.left = '0';
40
- }
41
-
42
- resize(w?: number, h?: number) {
43
- this.canvas.style.width = w + 'px';
44
- this.canvas.style.height = h + 'px';
45
-
46
- w = (w * this.store.dpiRatio) | 0;
47
- h = (h * this.store.dpiRatio) | 0;
48
-
49
- this.canvas.width = w;
50
- this.canvas.height = h;
51
-
52
- this.otherOffsreen.width = w;
53
- this.otherOffsreen.height = h;
54
-
55
- this.offscreen.width = w;
56
- this.offscreen.height = h;
57
-
58
- this.animateOffsScreen.width = w;
59
- this.animateOffsScreen.height = h;
60
-
61
- this.fitOffscreen.width = w;
62
- this.fitOffscreen.height = h;
63
-
64
- this.otherOffsreen
65
- .getContext('2d')
66
- .scale(this.store.dpiRatio, this.store.dpiRatio);
67
- this.otherOffsreen.getContext('2d').textBaseline = 'middle';
68
-
69
- this.offscreen
70
- .getContext('2d')
71
- .scale(this.store.dpiRatio, this.store.dpiRatio);
72
- this.offscreen.getContext('2d').textBaseline = 'middle';
73
-
74
- this.animateOffsScreen
75
- .getContext('2d')
76
- .scale(this.store.dpiRatio, this.store.dpiRatio);
77
- this.animateOffsScreen.getContext('2d').textBaseline = 'middle';
78
-
79
- this.fitOffscreen
80
- .getContext('2d')
81
- .scale(this.store.dpiRatio, this.store.dpiRatio);
82
- this.fitOffscreen.getContext('2d').textBaseline = 'middle';
83
-
84
- this.init();
85
- }
86
-
87
- init() {
88
- this.offscreen
89
- .getContext('2d')
90
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
91
- this.animateOffsScreen
92
- .getContext('2d')
93
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
94
- this.fitOffscreen
95
- .getContext('2d')
96
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
97
- for (const pen of this.store.data.pens) {
98
- if (this.hasImage(pen)) {
99
- // 只影响本层的
100
- pen.calculative.imageDrawed = false;
101
- }
102
- }
103
- if(this.isBottom){
104
- this.store.patchFlagsBackground = true;
105
- }else{
106
- this.store.patchFlagsTop = true;
107
- }
108
- }
109
-
110
- clear() {
111
- this.otherOffsreen
112
- .getContext('2d')
113
- .clearRect(0, 0, this.otherOffsreen.width, this.otherOffsreen.height);
114
- this.offscreen
115
- .getContext('2d')
116
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
117
- this.animateOffsScreen
118
- .getContext('2d')
119
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
120
- this.fitOffscreen
121
- .getContext('2d')
122
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
123
- this.canvas
124
- .getContext('2d')
125
- .clearRect(0, 0, this.canvas.width, this.canvas.height);
126
- }
127
-
128
- hasImage(pen: Pen) {
129
- pen.calculative.hasImage =
130
- pen.calculative &&
131
- pen.calculative.inView &&
132
- // !pen.isBottom == !this.isBottom && // undefined == false 结果 false
133
- ((this.isBottom && pen.canvasLayer === CanvasLayer.CanvasImageBottom) ||
134
- (!this.isBottom && pen.canvasLayer === CanvasLayer.CanvasImage)) &&
135
- pen.image &&
136
- pen.calculative.img &&
137
- pen.name !== 'gif';
138
-
139
- return pen.calculative.hasImage;
140
- }
141
-
142
- render() {
143
- let patchFlags = false;
144
- let patchFlagsAnimate = false;
145
- for (const pen of this.store.data.pens) {
146
- if (this.hasImage(pen)) {
147
- if (this.store.animates.has(pen)) {
148
- patchFlagsAnimate = true;
149
- } else if (!pen.calculative.imageDrawed) {
150
- patchFlags = true;
151
- }
152
- if (pen.parentId && this.store.animates.has(getParent(pen, true))) {
153
- patchFlagsAnimate = true;
154
- }
155
- }
156
- }
157
-
158
- const patchFlagsBackground = this.store.patchFlagsBackground;
159
- // if (patchFlagsBackground && this.isBottom) {
160
- // const ctx = this.otherOffsreen.getContext('2d');
161
- // ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
162
- // const width = this.store.data.width || this.store.options.width;
163
- // const height = this.store.data.height || this.store.options.height;
164
- // const x = this.store.data.x || this.store.options.x;
165
- // const y = this.store.data.y || this.store.options.y;
166
- // if (width && height && this.store.bkImg) {
167
- // ctx.save();
168
- // ctx.drawImage(
169
- // this.store.bkImg,
170
- // this.store.data.origin.x + x,
171
- // this.store.data.origin.y + y,
172
- // width * this.store.data.scale,
173
- // height * this.store.data.scale
174
- // );
175
- // ctx.restore();
176
- // }
177
- // const background =
178
- // this.store.data.background ||
179
- // (this.store.bkImg ? undefined : this.store.options.background);
180
- // if (background) {
181
- // ctx.save();
182
- // ctx.fillStyle = background;
183
- // if (width && height) {
184
- // ctx.fillRect(
185
- // this.store.data.origin.x + x,
186
- // this.store.data.origin.y + y,
187
- // width * this.store.data.scale,
188
- // height * this.store.data.scale
189
- // );
190
- // } else {
191
- // ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
192
- // }
193
- // ctx.restore();
194
- // }
195
- // this.renderGrid(ctx);
196
- // }
197
-
198
- const patchFlagsTop = this.store.patchFlagsTop;
199
- if (patchFlagsTop && !this.isBottom) {
200
- const ctx = this.otherOffsreen.getContext('2d');
201
- ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
202
- this.renderRule(ctx);
203
- }
204
- // 从有图片画布层切换到无图片画布
205
- const patchFlagsLast = this.store.patchFlagsLast;
206
- if (patchFlagsLast) {
207
- const ctx = this.offscreen.getContext('2d');
208
- ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
209
- }
210
- if (patchFlags) {
211
- const ctx = this.offscreen.getContext('2d');
212
- ctx.save();
213
- ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
214
- ctx.translate(this.store.data.x, this.store.data.y);
215
- for (const pen of this.store.data.pens) {
216
- //pen.calculative.imageDrawed 只用于判断是否需要重绘整块画布,不用于判断改图片节点是否绘制过
217
- if (
218
- !pen.calculative.hasImage ||
219
- this.store.animates.has(pen) ||
220
- this.store.animates.has(getParent(pen, true))
221
- ) {
222
- continue;
223
- }
224
- // if (pen.template) {
225
- if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
226
- continue;
227
- }
228
- pen.calculative.imageDrawed = true;
229
- ctx.save();
230
- ctxFlip(ctx, pen);
231
- if (pen.calculative.rotate) {
232
- ctxRotate(ctx, pen);
233
- }
234
-
235
- setGlobalAlpha(ctx, pen);
236
- drawImage(ctx, pen);
237
- ctx.restore();
238
- }
239
- ctx.restore();
240
- }
241
- if (patchFlagsAnimate) {
242
- const ctx = this.animateOffsScreen.getContext('2d');
243
- ctx.save();
244
- ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
245
- ctx.translate(this.store.data.x, this.store.data.y);
246
- for (const pen of this.store.animates) {
247
- if (!pen.calculative.hasImage) {
248
- continue;
249
- }
250
- // if (pen.template) {
251
- if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
252
- continue;
253
- }
254
- pen.calculative.imageDrawed = true;
255
- ctx.save();
256
- ctxFlip(ctx, pen);
257
- if (pen.calculative.rotate) {
258
- ctxRotate(ctx, pen);
259
- }
260
-
261
- setGlobalAlpha(ctx, pen);
262
- drawImage(ctx, pen);
263
- ctx.restore();
264
- }
265
- //图片组合节点 动画
266
- for (const pen of this.store.data.pens) {
267
- if (!pen.calculative.hasImage || !pen.parentId) {
268
- continue;
269
- }
270
- // if (pen.template) {
271
- if (pen.canvasLayer === CanvasLayer.CanvasTemplate) {
272
- continue;
273
- }
274
- if (this.store.animates.has(getParent(pen, true))) {
275
- pen.calculative.imageDrawed = true;
276
- ctx.save();
277
- ctxFlip(ctx, pen);
278
- if (pen.calculative.rotate) {
279
- ctxRotate(ctx, pen);
280
- }
281
-
282
- setGlobalAlpha(ctx, pen);
283
- drawImage(ctx, pen);
284
- ctx.restore();
285
- }
286
- }
287
- ctx.restore();
288
- }
289
-
290
- if (!this.isBottom && !this.store.data.locked && this.fitFlag) {
291
- const width =
292
- (this.store.data.width || this.store.options.width) *
293
- this.store.data.scale;
294
- const height =
295
- (this.store.data.height || this.store.options.height) *
296
- this.store.data.scale;
297
- const x =
298
- this.store.data.origin.x + this.store.data.x ||
299
- this.store.options.x ||
300
- 0;
301
- const y =
302
- this.store.data.origin.y + this.store.data.y ||
303
- this.store.options.y ||
304
- 0;
305
- const ctx = this.fitOffscreen.getContext('2d');
306
- ctx.save();
307
- ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
308
- ctx.fillStyle = '#ffffff66';
309
- ctx.strokeStyle = this.store.options.activeColor;
310
- this.store.data.fits?.forEach((item, index) => {
311
- ctx.fillRect(
312
- x + width * item.x,
313
- y + height * item.y,
314
- width * item.width,
315
- height * item.height
316
- );
317
- if (item.active) {
318
- ctx.strokeRect(
319
- x + width * item.x,
320
- y + height * item.y,
321
- width * item.width,
322
- height * item.height
323
- );
324
- }
325
- });
326
- ctx.restore();
327
- }
328
- if (
329
- patchFlags ||
330
- patchFlagsAnimate ||
331
- (patchFlagsBackground && this.isBottom) ||
332
- // this.isBottom ||
333
- (patchFlagsTop && !this.isBottom)
334
- ) {
335
- const ctxCanvas = this.canvas.getContext('2d');
336
- ctxCanvas.clearRect(0, 0, this.canvas.width, this.canvas.height);
337
- if (this.isBottom) {
338
- // ctxCanvas.drawImage(
339
- // this.otherOffsreen,
340
- // 0,
341
- // 0,
342
- // this.canvas.width,
343
- // this.canvas.height
344
- // );
345
- this.store.patchFlagsBackground = false;
346
- }
347
- ctxCanvas.drawImage(
348
- this.offscreen,
349
- 0,
350
- 0,
351
- this.canvas.width,
352
- this.canvas.height
353
- );
354
- ctxCanvas.drawImage(
355
- this.animateOffsScreen,
356
- 0,
357
- 0,
358
- this.canvas.width,
359
- this.canvas.height
360
- );
361
- if (!this.isBottom) {
362
- ctxCanvas.drawImage(
363
- this.otherOffsreen,
364
- 0,
365
- 0,
366
- this.canvas.width,
367
- this.canvas.height
368
- );
369
- this.store.patchFlagsTop = false;
370
- if (!this.store.data.locked && this.fitFlag) {
371
- ctxCanvas.drawImage(
372
- this.fitOffscreen,
373
- 0,
374
- 0,
375
- this.canvas.width,
376
- this.canvas.height
377
- );
378
- }
379
- }
380
- }
381
- }
382
-
383
- // renderGrid(
384
- // ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D
385
- // ) {
386
- // const { data, options } = this.store;
387
- // const { grid, gridRotate, gridColor, gridSize, scale } = data;
388
- // if (!(grid ?? options.grid)) {
389
- // // grid false 时不绘制, undefined 时看 options.grid
390
- // return;
391
- // }
392
- // ctx.save();
393
- // const { width, height } = this.canvas;
394
- // if (gridRotate) {
395
- // ctx.translate(width / 2, height / 2);
396
- // ctx.rotate((gridRotate * Math.PI) / 180);
397
- // ctx.translate(-width / 2, -height / 2);
398
- // }
399
- // ctx.lineWidth = 1;
400
- // ctx.strokeStyle = gridColor || options.gridColor;
401
- // ctx.beginPath();
402
- // const size = (gridSize || options.gridSize) * scale;
403
- // const longSide = Math.max(width, height);
404
- // const count = Math.ceil(longSide / size);
405
- // for (let i = -size * count; i < longSide * 2; i += size) {
406
- // ctx.moveTo(i, -longSide);
407
- // ctx.lineTo(i, longSide * 2);
408
- // }
409
- // for (let i = -size * count; i < longSide * 2; i += size) {
410
- // ctx.moveTo(-longSide, i);
411
- // ctx.lineTo(longSide * 2, i);
412
- // }
413
- // ctx.stroke();
414
- // ctx.restore();
415
- // }
416
-
417
- renderRule(
418
- ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D
419
- ) {
420
- const { data, options } = this.store;
421
- const { rule, ruleColor, scale, origin } = data;
422
- if (!(rule ?? options.rule)) {
423
- // rule false 时不绘制, undefined 时看 options.rule
424
- return;
425
- }
426
-
427
- const span = scale * 10;
428
-
429
- ctx.save();
430
-
431
- const finalRuleColor = ruleColor || options.ruleColor;
432
- ctx.strokeStyle = rgba(finalRuleColor, 0.7);
433
-
434
- const x = origin.x + data.x;
435
- const y = origin.y + data.y;
436
- const { width, height } = this.canvas;
437
- let h = options.ruleOptions?.height || 20;
438
- if(options.ruleOptions?.background){
439
- //背景颜色
440
- ctx.beginPath();
441
- ctx.fillStyle = options.ruleOptions?.background;
442
- ctx.rect(0,0,width,h);
443
- ctx.fill();
444
- ctx.rect(0,0,h,height);
445
- ctx.fill();
446
- }
447
- if(options.ruleOptions?.underline){
448
- ctx.beginPath();
449
- ctx.fillStyle = rgba(finalRuleColor, 0.7);
450
- ctx.moveTo(0, h);
451
- ctx.lineTo(width, h);
452
- ctx.stroke();
453
- ctx.moveTo(h, 0);
454
- ctx.lineTo(h, height);
455
- ctx.stroke();
456
- }
457
- let b_y = h/4;
458
- if(options.ruleOptions?.baseline === "bottom"){
459
- b_y = h*3/4;
460
- }
461
- // horizontal rule
462
- ctx.beginPath();
463
- ctx.lineWidth = h/2;
464
- ctx.lineDashOffset = -x % span;
465
- ctx.setLineDash([1, span - 1]);
466
- ctx.moveTo(0, b_y);
467
- ctx.lineTo(width, b_y);
468
- ctx.stroke();
469
-
470
- // vertical rule
471
- ctx.beginPath();
472
- ctx.lineDashOffset = -y % span;
473
- ctx.moveTo(b_y, 0);
474
- ctx.lineTo(b_y, height);
475
- ctx.stroke();
476
-
477
- // the big rule
478
- ctx.strokeStyle = finalRuleColor;
479
- ctx.beginPath();
480
- ctx.lineWidth = h;
481
- ctx.lineDashOffset = -x % (span * 10);
482
- ctx.setLineDash([1, span * 10 - 1]);
483
- ctx.moveTo(0, h/2);
484
- ctx.lineTo(width, h/2);
485
- ctx.stroke();
486
-
487
- ctx.beginPath();
488
- ctx.lineDashOffset = -y % (span * 10);
489
- ctx.moveTo(h/2, 0);
490
- ctx.lineTo(h/2, height);
491
- ctx.stroke();
492
-
493
- ctx.beginPath();
494
- ctx.fillStyle = options.ruleOptions?.textColor|| ctx.strokeStyle;
495
- let text: number = 0 - Math.floor(x / span / 10) * 100;
496
- let textTop = options.ruleOptions?.textTop || 16;
497
- let textLeft = options.ruleOptions?.textLeft || 4;
498
- if (x < 0) {
499
- text -= 100;
500
- }
501
- for (let i = x % (span * 10); i < width; i += 10 * span, text += 100) {
502
- if (span < 3 && text % 500) {
503
- continue;
504
- }
505
- ctx.fillText(text.toString(), i + textLeft, textTop);
506
- }
507
-
508
- text = 0 - Math.floor(y / span / 10) * 100;
509
- if (y < 0) {
510
- text -= 100;
511
- }
512
- for (let i = y % (span * 10); i < height; i += 10 * span, text += 100) {
513
- if (span < 3 && text % 500) {
514
- continue;
515
- }
516
- ctx.save();
517
- ctx.beginPath();
518
- ctx.translate(textTop, i - textLeft);
519
- ctx.rotate((270 * Math.PI) / 180);
520
- ctx.fillText(text.toString(), 0, 0);
521
- ctx.restore();
522
- }
523
- ctx.restore();
524
- }
525
- }