2
2
* @Author : 秦少卫
3
3
* @Date : 2023-06-22 16:19:46
4
4
* @LastEditors : 秦少卫
5
- * @LastEditTime : 2024-04-10 17:33:17
5
+ * @LastEditTime : 2024-07-22 10:21:05
6
6
* @Description : 组对齐插件
7
7
*/
8
8
@@ -18,18 +18,6 @@ class GroupAlignPlugin implements IPluginTempl {
18
18
19
19
left ( ) {
20
20
const { canvas } = this ;
21
- // const activeObject = canvas.getActiveObject();
22
- // if (activeObject && activeObject.type === 'activeSelection') {
23
- // const activeSelection = activeObject;
24
- // const activeObjectLeft = -(activeObject.width / 2);
25
- // activeSelection.forEachObject((item) => {
26
- // item.set({
27
- // left: activeObjectLeft,
28
- // });
29
- // item.setCoords();
30
- // canvas.renderAll();
31
- // });
32
- // }
33
21
34
22
const activeObject = canvas . getActiveObject ( ) ;
35
23
const selectObjects = canvas . getActiveObjects ( ) ;
@@ -53,18 +41,6 @@ class GroupAlignPlugin implements IPluginTempl {
53
41
54
42
right ( ) {
55
43
const { canvas } = this ;
56
- // const activeObject = canvas.getActiveObject();
57
- // if (activeObject && activeObject.type === 'activeSelection') {
58
- // const activeSelection = activeObject;
59
- // const activeObjectLeft = activeObject.width / 2;
60
- // activeSelection.forEachObject((item) => {
61
- // item.set({
62
- // left: activeObjectLeft - item.width * item.scaleX,
63
- // });
64
- // item.setCoords();
65
- // canvas.renderAll();
66
- // });
67
- // }
68
44
69
45
const activeObject = canvas . getActiveObject ( ) ;
70
46
const selectObjects = canvas . getActiveObjects ( ) ;
@@ -87,17 +63,6 @@ class GroupAlignPlugin implements IPluginTempl {
87
63
88
64
xcenter ( ) {
89
65
const { canvas } = this ;
90
- // const activeObject = canvas.getActiveObject();
91
- // if (activeObject && activeObject.type === 'activeSelection') {
92
- // const activeSelection = activeObject;
93
- // activeSelection.forEachObject((item) => {
94
- // item.set({
95
- // left: 0 - (item.width * item.scaleX) / 2,
96
- // });
97
- // item.setCoords();
98
- // canvas.renderAll();
99
- // });
100
- // }
101
66
102
67
const activeObject = canvas . getActiveObject ( ) ;
103
68
const selectObjects = canvas . getActiveObjects ( ) ;
@@ -120,17 +85,6 @@ class GroupAlignPlugin implements IPluginTempl {
120
85
121
86
ycenter ( ) {
122
87
const { canvas } = this ;
123
- // const activeObject = canvas.getActiveObject();
124
- // if (activeObject && activeObject.type === 'activeSelection') {
125
- // const activeSelection = activeObject;
126
- // activeSelection.forEachObject((item) => {
127
- // item.set({
128
- // top: 0 - (item.height * item.scaleY) / 2,
129
- // });
130
- // item.setCoords();
131
- // canvas.renderAll();
132
- // });
133
- // }
134
88
135
89
const activeObject = canvas . getActiveObject ( ) ;
136
90
const selectObjects = canvas . getActiveObjects ( ) ;
@@ -153,18 +107,6 @@ class GroupAlignPlugin implements IPluginTempl {
153
107
154
108
top ( ) {
155
109
const { canvas } = this ;
156
- // const activeObject = canvas.getActiveObject();
157
- // if (activeObject && activeObject.type === 'activeSelection') {
158
- // const activeSelection = activeObject;
159
- // const activeObjectTop = -(activeObject.height / 2);
160
- // activeSelection.forEachObject((item) => {
161
- // item.set({
162
- // top: activeObjectTop,
163
- // });
164
- // item.setCoords();
165
- // canvas.renderAll();
166
- // });
167
- // }
168
110
169
111
const activeObject = canvas . getActiveObject ( ) ;
170
112
const selectObjects = canvas . getActiveObjects ( ) ;
@@ -187,18 +129,6 @@ class GroupAlignPlugin implements IPluginTempl {
187
129
188
130
bottom ( ) {
189
131
const { canvas } = this ;
190
- // const activeObject = canvas.getActiveObject();
191
- // if (activeObject && activeObject.type === 'activeSelection') {
192
- // const activeSelection = activeObject;
193
- // const activeObjectTop = activeObject.height / 2;
194
- // activeSelection.forEachObject((item) => {
195
- // item.set({
196
- // top: activeObjectTop - item.height * item.scaleY,
197
- // });
198
- // item.setCoords();
199
- // canvas.renderAll();
200
- // });
201
- // }
202
132
203
133
const activeObject = canvas . getActiveObject ( ) ;
204
134
const selectObjects = canvas . getActiveObjects ( ) ;
@@ -221,9 +151,9 @@ class GroupAlignPlugin implements IPluginTempl {
221
151
222
152
xequation ( ) {
223
153
const { canvas } = this ;
224
- const activeObject = canvas . getActiveObject ( ) ;
154
+ const activeObject = canvas . getActiveObject ( ) as fabric . ActiveSelection ;
225
155
// width属性不准确,需要坐标换算
226
- function getItemWidth ( item ) {
156
+ function getItemWidth ( item : fabric . Object ) {
227
157
let x1 = Infinity ,
228
158
x2 = - Infinity ;
229
159
for ( const key in item . aCoords ) {
@@ -241,7 +171,7 @@ class GroupAlignPlugin implements IPluginTempl {
241
171
function getAllItemHeight ( ) {
242
172
let count = 0 ;
243
173
if ( activeObject ) {
244
- activeObject . forEachObject ( ( item ) => {
174
+ activeObject . forEachObject ( ( item : fabric . Object ) => {
245
175
count += getItemWidth ( item ) ;
246
176
} ) ;
247
177
}
@@ -258,7 +188,7 @@ class GroupAlignPlugin implements IPluginTempl {
258
188
}
259
189
260
190
// 获取当前元素之前所有元素的高度
261
- function getItemLeft ( i ) {
191
+ function getItemLeft ( i : number ) {
262
192
if ( i === 0 ) return 0 ;
263
193
let width = 0 ;
264
194
if ( activeObject ) {
@@ -275,11 +205,11 @@ class GroupAlignPlugin implements IPluginTempl {
275
205
activeSelection . _objects . sort ( ( a , b ) => a . left - b . left ) ;
276
206
277
207
// 平均间距计算
278
- const itemSpac = spacWidth ( ) ;
208
+ const itemSpac = spacWidth ( ) as number ;
279
209
// 组原点高度
280
210
const yHeight = Number ( activeObject . width ) / 2 ;
281
211
282
- activeObject . forEachObject ( ( item , i ) => {
212
+ activeObject . forEachObject ( ( item : fabric . Object , i : number ) => {
283
213
// 获取当前元素之前所有元素的高度
284
214
const preHeight = getItemLeft ( i ) ;
285
215
// 顶部距离 间距 * 索引 + 之前元素高度 - 原点高度
@@ -290,7 +220,7 @@ class GroupAlignPlugin implements IPluginTempl {
290
220
291
221
const objecs = canvas . getActiveObjects ( ) ;
292
222
canvas . discardActiveObject ( ) ;
293
- objecs . forEach ( ( item ) => {
223
+ objecs . forEach ( ( item : fabric . Object ) => {
294
224
let x = Infinity ;
295
225
for ( const key in item . aCoords ) {
296
226
if ( item . aCoords [ key ] . x < x ) {
@@ -309,9 +239,12 @@ class GroupAlignPlugin implements IPluginTempl {
309
239
310
240
yequation ( ) {
311
241
const { canvas } = this ;
312
- const activeObject = canvas . getActiveObject ( ) || { top : 0 , height : 0 } ;
242
+ const activeObject = ( canvas . getActiveObject ( ) as fabric . ActiveSelection ) || {
243
+ top : 0 ,
244
+ height : 0 ,
245
+ } ;
313
246
// width属性不准确,需要坐标换算
314
- function getItemHeight ( item ) {
247
+ function getItemHeight ( item : fabric . Object ) {
315
248
let y1 = Infinity ,
316
249
y2 = - Infinity ;
317
250
for ( const key in item . aCoords ) {
@@ -327,7 +260,7 @@ class GroupAlignPlugin implements IPluginTempl {
327
260
// 获取所有元素高度
328
261
function getAllItemHeight ( ) {
329
262
let count = 0 ;
330
- activeObject . forEachObject ( ( item ) => {
263
+ activeObject . forEachObject ( ( item : fabric . Object ) => {
331
264
count += getItemHeight ( item ) ;
332
265
} ) ;
333
266
return count ;
@@ -340,7 +273,7 @@ class GroupAlignPlugin implements IPluginTempl {
340
273
}
341
274
342
275
// 获取当前元素之前所有元素的高度
343
- function getItemTop ( i ) {
276
+ function getItemTop ( i : number ) {
344
277
if ( i === 0 ) return 0 ;
345
278
let height = 0 ;
346
279
for ( let index = 0 ; index < i ; index ++ ) {
0 commit comments