zhmiscellany 5.7.1__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 CHANGED
@@ -43,31 +43,61 @@ 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
81
  end = (x, y)
49
82
  num_points = animation_fps*animation_time # 60 fps animation
50
- num_points += 2 # don't need start and end points
83
+ if not relative:
84
+ num_points += 2 # don't need start and end points
51
85
  num_points = math.ceil(num_points)
52
86
  if animation_easing:
53
- animation_points = zhmiscellany.math.generate_eased_points(start, end, num_points)
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)
54
91
  else:
55
- animation_points = zhmiscellany.math.generate_linear_points(start, end, num_points)
56
-
57
- if relative:
58
- temp = []
59
- for i, point in enumerate(animation_points):
60
- if i == 0:
61
- temp.append(tuple(a - b for a, b in zip(animation_points[i], start)))
62
- continue
63
-
64
- relative_point = tuple(a - b for a, b in zip(animation_points[i], animation_points[i-1]))
65
-
66
- temp.append(relative_point)
67
- 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)
68
96
 
69
- animation_points.pop() # remove start and end
70
- animation_points.pop(0)
97
+ # remove start and end
98
+ if not relative:
99
+ animation_points.pop(0)
100
+ animation_points.pop()
71
101
  for point in animation_points:
72
102
  click_pixel((round(point[0]), round(point[1])), act_start=False, act_end=False, click_end_duration=1/animation_fps, relative=relative)
73
103
 
@@ -95,7 +125,8 @@ def click_pixel(x=None, y=None, click_duration=None, right_click=False, middle_c
95
125
  else:
96
126
  break
97
127
  else:
98
- move_mouse(cx, cy, relative=relative)
128
+ if not (animation_time and relative):
129
+ move_mouse(cx, cy, relative=relative)
99
130
 
100
131
  if pre_click_duration:
101
132
  if pre_click_wiggle:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: zhmiscellany
3
- Version: 5.7.1
3
+ Version: 5.7.3
4
4
  Summary: A collection of useful/interesting python libraries made by zh.
5
5
  Home-page: https://discord.gg/ThBBAuueVJ
6
6
  Author: zh
@@ -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=RSIjRdmqw-zV1KnNs-zdjZdNkPbQF0TdMQql__tBWKI,15317
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.1.dist-info/METADATA,sha256=NAkCr4U8C4Cl0xtLD_5yNkUIW12LvCE3Gd6uA6lrUI8,42153
25
- zhmiscellany-5.7.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
26
- zhmiscellany-5.7.1.dist-info/top_level.txt,sha256=ioDtsrevCI52rTxZntMPljRIBsZs73tD0hI00HektiE,13
27
- zhmiscellany-5.7.1.dist-info/RECORD,,
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,,