assistsx-js 0.0.2046 → 0.0.2047
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.
- package/dist/Bounds.d.ts +5 -0
- package/dist/Bounds.js +10 -0
- package/package.json +1 -1
- package/src/Bounds.ts +118 -106
package/dist/Bounds.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ export declare class Bounds {
|
|
|
11
11
|
readonly exactCenterY: number;
|
|
12
12
|
readonly isEmpty: boolean;
|
|
13
13
|
constructor(left: number, top: number, right: number, bottom: number, width: number, height: number, centerX: number, centerY: number, exactCenterX: number, exactCenterY: number, isEmpty: boolean);
|
|
14
|
+
/**
|
|
15
|
+
* 判断该 Bounds 是否在屏幕内(满足基本几何有效性)
|
|
16
|
+
* @returns {boolean}
|
|
17
|
+
*/
|
|
18
|
+
isInScreen(): boolean;
|
|
14
19
|
static from(data: {
|
|
15
20
|
left: number;
|
|
16
21
|
top: number;
|
package/dist/Bounds.js
CHANGED
|
@@ -14,6 +14,16 @@ export class Bounds {
|
|
|
14
14
|
this.exactCenterY = exactCenterY;
|
|
15
15
|
this.isEmpty = isEmpty;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* 判断该 Bounds 是否在屏幕内(满足基本几何有效性)
|
|
19
|
+
* @returns {boolean}
|
|
20
|
+
*/
|
|
21
|
+
isInScreen() {
|
|
22
|
+
return this.centerX > 0 &&
|
|
23
|
+
this.centerY > 0 &&
|
|
24
|
+
this.height > 0 &&
|
|
25
|
+
this.width > 0;
|
|
26
|
+
}
|
|
17
27
|
// 从普通对象创建 Bounds 实例
|
|
18
28
|
static from(data) {
|
|
19
29
|
return new Bounds(data.left, data.top, data.right, data.bottom, data.width, data.height, data.centerX, data.centerY, data.exactCenterX, data.exactCenterY, data.isEmpty);
|
package/package.json
CHANGED
package/src/Bounds.ts
CHANGED
|
@@ -1,114 +1,126 @@
|
|
|
1
1
|
// Bounds 类,对应 Kotlin 的 data class
|
|
2
2
|
export class Bounds {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
// 构造函数
|
|
4
|
+
constructor(
|
|
5
|
+
public readonly left: number,
|
|
6
|
+
public readonly top: number,
|
|
7
|
+
public readonly right: number,
|
|
8
|
+
public readonly bottom: number,
|
|
9
|
+
public readonly width: number,
|
|
10
|
+
public readonly height: number,
|
|
11
|
+
public readonly centerX: number,
|
|
12
|
+
public readonly centerY: number,
|
|
13
|
+
public readonly exactCenterX: number,
|
|
14
|
+
public readonly exactCenterY: number,
|
|
15
|
+
public readonly isEmpty: boolean
|
|
16
|
+
) { }
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
exactCenterX: number;
|
|
29
|
-
exactCenterY: number;
|
|
30
|
-
isEmpty: boolean;
|
|
31
|
-
}): Bounds {
|
|
32
|
-
return new Bounds(
|
|
33
|
-
data.left,
|
|
34
|
-
data.top,
|
|
35
|
-
data.right,
|
|
36
|
-
data.bottom,
|
|
37
|
-
data.width,
|
|
38
|
-
data.height,
|
|
39
|
-
data.centerX,
|
|
40
|
-
data.centerY,
|
|
41
|
-
data.exactCenterX,
|
|
42
|
-
data.exactCenterY,
|
|
43
|
-
data.isEmpty
|
|
44
|
-
);
|
|
45
|
-
}
|
|
18
|
+
/**
|
|
19
|
+
* 判断该 Bounds 是否在屏幕内(满足基本几何有效性)
|
|
20
|
+
* @returns {boolean}
|
|
21
|
+
*/
|
|
22
|
+
public isInScreen(): boolean {
|
|
23
|
+
return this.centerX > 0 &&
|
|
24
|
+
this.centerY > 0 &&
|
|
25
|
+
this.height > 0 &&
|
|
26
|
+
this.width > 0;
|
|
27
|
+
}
|
|
46
28
|
|
|
47
|
-
// 从 JSON 字符串创建实例
|
|
48
|
-
static fromJSON(json: string): Bounds {
|
|
49
|
-
const data = JSON.parse(json);
|
|
50
|
-
return Bounds.from(data);
|
|
51
|
-
}
|
|
52
29
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
)
|
|
67
|
-
|
|
30
|
+
// 从普通对象创建 Bounds 实例
|
|
31
|
+
static from(data: {
|
|
32
|
+
left: number;
|
|
33
|
+
top: number;
|
|
34
|
+
right: number;
|
|
35
|
+
bottom: number;
|
|
36
|
+
width: number;
|
|
37
|
+
height: number;
|
|
38
|
+
centerX: number;
|
|
39
|
+
centerY: number;
|
|
40
|
+
exactCenterX: number;
|
|
41
|
+
exactCenterY: number;
|
|
42
|
+
isEmpty: boolean;
|
|
43
|
+
}): Bounds {
|
|
44
|
+
return new Bounds(
|
|
45
|
+
data.left,
|
|
46
|
+
data.top,
|
|
47
|
+
data.right,
|
|
48
|
+
data.bottom,
|
|
49
|
+
data.width,
|
|
50
|
+
data.height,
|
|
51
|
+
data.centerX,
|
|
52
|
+
data.centerY,
|
|
53
|
+
data.exactCenterX,
|
|
54
|
+
data.exactCenterY,
|
|
55
|
+
data.isEmpty
|
|
56
|
+
);
|
|
57
|
+
}
|
|
68
58
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
bottom: number;
|
|
75
|
-
width: number;
|
|
76
|
-
height: number;
|
|
77
|
-
centerX: number;
|
|
78
|
-
centerY: number;
|
|
79
|
-
exactCenterX: number;
|
|
80
|
-
exactCenterY: number;
|
|
81
|
-
isEmpty: boolean;
|
|
82
|
-
} {
|
|
83
|
-
return {
|
|
84
|
-
left: this.left,
|
|
85
|
-
top: this.top,
|
|
86
|
-
right: this.right,
|
|
87
|
-
bottom: this.bottom,
|
|
88
|
-
width: this.width,
|
|
89
|
-
height: this.height,
|
|
90
|
-
centerX: this.centerX,
|
|
91
|
-
centerY: this.centerY,
|
|
92
|
-
exactCenterX: this.exactCenterX,
|
|
93
|
-
exactCenterY: this.exactCenterY,
|
|
94
|
-
isEmpty: this.isEmpty,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
59
|
+
// 从 JSON 字符串创建实例
|
|
60
|
+
static fromJSON(json: string): Bounds {
|
|
61
|
+
const data = JSON.parse(json);
|
|
62
|
+
return Bounds.from(data);
|
|
63
|
+
}
|
|
97
64
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
65
|
+
static fromData(data: any): Bounds {
|
|
66
|
+
return new Bounds(
|
|
67
|
+
data.left,
|
|
68
|
+
data.top,
|
|
69
|
+
data.right,
|
|
70
|
+
data.bottom,
|
|
71
|
+
data.width,
|
|
72
|
+
data.height,
|
|
73
|
+
data.centerX,
|
|
74
|
+
data.centerY,
|
|
75
|
+
data.exactCenterX,
|
|
76
|
+
data.exactCenterY,
|
|
77
|
+
data.isEmpty
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// 转换为普通对象
|
|
82
|
+
toJSON(): {
|
|
83
|
+
left: number;
|
|
84
|
+
top: number;
|
|
85
|
+
right: number;
|
|
86
|
+
bottom: number;
|
|
87
|
+
width: number;
|
|
88
|
+
height: number;
|
|
89
|
+
centerX: number;
|
|
90
|
+
centerY: number;
|
|
91
|
+
exactCenterX: number;
|
|
92
|
+
exactCenterY: number;
|
|
93
|
+
isEmpty: boolean;
|
|
94
|
+
} {
|
|
95
|
+
return {
|
|
96
|
+
left: this.left,
|
|
97
|
+
top: this.top,
|
|
98
|
+
right: this.right,
|
|
99
|
+
bottom: this.bottom,
|
|
100
|
+
width: this.width,
|
|
101
|
+
height: this.height,
|
|
102
|
+
centerX: this.centerX,
|
|
103
|
+
centerY: this.centerY,
|
|
104
|
+
exactCenterX: this.exactCenterX,
|
|
105
|
+
exactCenterY: this.exactCenterY,
|
|
106
|
+
isEmpty: this.isEmpty,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 克隆方法
|
|
111
|
+
clone(): Bounds {
|
|
112
|
+
return new Bounds(
|
|
113
|
+
this.left,
|
|
114
|
+
this.top,
|
|
115
|
+
this.right,
|
|
116
|
+
this.bottom,
|
|
117
|
+
this.width,
|
|
118
|
+
this.height,
|
|
119
|
+
this.centerX,
|
|
120
|
+
this.centerY,
|
|
121
|
+
this.exactCenterX,
|
|
122
|
+
this.exactCenterY,
|
|
123
|
+
this.isEmpty
|
|
124
|
+
);
|
|
125
|
+
}
|
|
114
126
|
}
|