zhmiscellany 5.7.2__py3-none-any.whl → 5.7.3__py3-none-any.whl
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.
- zhmiscellany/macro.py +45 -20
- {zhmiscellany-5.7.2.dist-info → zhmiscellany-5.7.3.dist-info}/METADATA +1 -1
- {zhmiscellany-5.7.2.dist-info → zhmiscellany-5.7.3.dist-info}/RECORD +5 -5
- {zhmiscellany-5.7.2.dist-info → zhmiscellany-5.7.3.dist-info}/WHEEL +0 -0
- {zhmiscellany-5.7.2.dist-info → zhmiscellany-5.7.3.dist-info}/top_level.txt +0 -0
zhmiscellany/macro.py
CHANGED
|
@@ -43,35 +43,60 @@ def click_pixel(x=None, y=None, click_duration=None, right_click=False, middle_c
|
|
|
43
43
|
keys_down = []
|
|
44
44
|
|
|
45
45
|
if animation_time:
|
|
46
|
+
def ease_in_out_sine(t: float) -> float:
|
|
47
|
+
return 0.5 * (1 - math.cos(math.pi * t))
|
|
48
|
+
|
|
49
|
+
def generate_movement_offsets(total_dx: int, total_dy: int, n_steps: int, ease: bool = True) -> list[tuple[int, int]]:
|
|
50
|
+
if n_steps <= 0:
|
|
51
|
+
return []
|
|
52
|
+
|
|
53
|
+
offsets = []
|
|
54
|
+
|
|
55
|
+
current_actual_x = 0
|
|
56
|
+
current_actual_y = 0
|
|
57
|
+
|
|
58
|
+
for i in range(n_steps):
|
|
59
|
+
t = (i + 1) / n_steps
|
|
60
|
+
|
|
61
|
+
if ease:
|
|
62
|
+
fraction_of_total_movement = ease_in_out_sine(t)
|
|
63
|
+
else:
|
|
64
|
+
fraction_of_total_movement = t
|
|
65
|
+
|
|
66
|
+
target_x = round(total_dx * fraction_of_total_movement)
|
|
67
|
+
target_y = round(total_dy * fraction_of_total_movement)
|
|
68
|
+
|
|
69
|
+
dx = int(target_x - current_actual_x)
|
|
70
|
+
dy = int(target_y - current_actual_y)
|
|
71
|
+
|
|
72
|
+
offsets.append((dx, dy))
|
|
73
|
+
|
|
74
|
+
current_actual_x += dx
|
|
75
|
+
current_actual_y += dy
|
|
76
|
+
|
|
77
|
+
return offsets
|
|
78
|
+
|
|
46
79
|
mxy = get_mouse_xy()
|
|
47
80
|
start = mxy
|
|
48
|
-
|
|
49
|
-
end = (x, y)
|
|
50
|
-
else:
|
|
51
|
-
end = tuple(a + b for a, b in zip(start, (x,y)))
|
|
81
|
+
end = (x, y)
|
|
52
82
|
num_points = animation_fps*animation_time # 60 fps animation
|
|
53
|
-
|
|
83
|
+
if not relative:
|
|
84
|
+
num_points += 2 # don't need start and end points
|
|
54
85
|
num_points = math.ceil(num_points)
|
|
55
86
|
if animation_easing:
|
|
56
|
-
|
|
87
|
+
if not relative:
|
|
88
|
+
animation_points = zhmiscellany.math.generate_eased_points(start, end, num_points)
|
|
89
|
+
else:
|
|
90
|
+
animation_points = generate_movement_offsets(end[0], end[1], num_points)
|
|
57
91
|
else:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
for i, point in enumerate(animation_points):
|
|
63
|
-
if i == 0:
|
|
64
|
-
temp.append(tuple(a - b for a, b in zip(animation_points[i], start)))
|
|
65
|
-
continue
|
|
66
|
-
|
|
67
|
-
relative_point = tuple(a - b for a, b in zip(animation_points[i], animation_points[i-1]))
|
|
68
|
-
|
|
69
|
-
temp.append(relative_point)
|
|
70
|
-
animation_points = temp
|
|
92
|
+
if not relative:
|
|
93
|
+
animation_points = zhmiscellany.math.generate_linear_points(start, end, num_points)
|
|
94
|
+
else:
|
|
95
|
+
animation_points = generate_movement_offsets(end[0], end[1], num_points, ease=False)
|
|
71
96
|
|
|
72
97
|
# remove start and end
|
|
73
|
-
animation_points.pop(0)
|
|
74
98
|
if not relative:
|
|
99
|
+
animation_points.pop(0)
|
|
75
100
|
animation_points.pop()
|
|
76
101
|
for point in animation_points:
|
|
77
102
|
click_pixel((round(point[0]), round(point[1])), act_start=False, act_end=False, click_end_duration=1/animation_fps, relative=relative)
|
|
@@ -12,7 +12,7 @@ zhmiscellany/fileio.py,sha256=KmRnWWZJWBc5Or3_mKcRY2ehE_Fuk870iS-imtyERyg,18169
|
|
|
12
12
|
zhmiscellany/gui.py,sha256=VgT5j5UIr-wWyL2P1qCHSNL7RrvZWDlm0TX00JGWmKo,7404
|
|
13
13
|
zhmiscellany/image.py,sha256=qUjxiYpc2VVZp2vwr1vN36O2PVQ7YlMKzhegQ1u4c0M,8198
|
|
14
14
|
zhmiscellany/list.py,sha256=S8Z85bLJEP9lk2JkGpzUcG6kpRB7a-NWDIHMPiF5bKo,1473
|
|
15
|
-
zhmiscellany/macro.py,sha256=
|
|
15
|
+
zhmiscellany/macro.py,sha256=a1m4G8OFUM1EKsjzPpcZIPH3ldTq5_UiTHJ9KGl_y7o,16354
|
|
16
16
|
zhmiscellany/math.py,sha256=btOQTe_GvqP0A7Zz84tmN_c8j1NGe_mKnhmAt40lhLU,2482
|
|
17
17
|
zhmiscellany/misc.py,sha256=BsTbRWlXI5LZBG7Bl2MgLzHESyCMJnr_KNZAf2wY_H4,29689
|
|
18
18
|
zhmiscellany/netio.py,sha256=GTamo5cJn4P6u8V_kgZ9kL8qeMUE7OQAmYkmj9Sp_GA,2236
|
|
@@ -21,7 +21,7 @@ zhmiscellany/pipes.py,sha256=PxO4aykFzC60xbTQuc66KzZYIxiW0KPebXZbncD2HcU,3795
|
|
|
21
21
|
zhmiscellany/processing.py,sha256=srwlV8FZ--svF5e6rZZxhIs_6ZjOAwq2OcQEf6T2Le8,10410
|
|
22
22
|
zhmiscellany/rust.py,sha256=znN6DYNoa_p-braTuDZKvUnXX8reWLFu_dG4fv2vLR0,442
|
|
23
23
|
zhmiscellany/string.py,sha256=xyqE6V5YF2nieZDcg5ZrXTIrH2D9oDRbZ5vQGz8rPys,4787
|
|
24
|
-
zhmiscellany-5.7.
|
|
25
|
-
zhmiscellany-5.7.
|
|
26
|
-
zhmiscellany-5.7.
|
|
27
|
-
zhmiscellany-5.7.
|
|
24
|
+
zhmiscellany-5.7.3.dist-info/METADATA,sha256=ybQ7Ft13Ptnf9zEGozMOwP3sdgNkOFNoL-dAkExe60I,42153
|
|
25
|
+
zhmiscellany-5.7.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
26
|
+
zhmiscellany-5.7.3.dist-info/top_level.txt,sha256=ioDtsrevCI52rTxZntMPljRIBsZs73tD0hI00HektiE,13
|
|
27
|
+
zhmiscellany-5.7.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|