5
5
6
6
from .config import (
7
7
BASE_HEART_COLOR ,
8
+ BASE_HEART_RATE ,
8
9
BASE_HEART_TEXT_COLOR ,
9
10
BASE_PATH_TRANSLATE ,
10
11
BASE_TEXT_STYLE ,
13
14
THREE_LETTERS_TEXT_TRANSLATE ,
14
15
TWO_LETTERS_TEXT_TRANSLATE ,
15
16
)
16
- from .utils import intersperse , make_key_times , make_key_values
17
+ from .utils import make_key_times , make_key_values
17
18
18
19
19
20
class Heart :
@@ -53,12 +54,10 @@ def _make_path(self):
53
54
)
54
55
55
56
def _make_base_animate_transform (self ):
56
- values = self ._make_heart_scale_values ()
57
- values_str = ";" .join (values ) + ";"
58
57
return AnimateTransform (
59
58
type = "scale" ,
60
- dur = self . dur ,
61
- values = values_str ,
59
+ dur = str ( BASE_HEART_RATE ) + 's' ,
60
+ values = '1; 1.5; 1.25; 1.5; 1.5; 1;' ,
62
61
repeatCount = "indefinite" ,
63
62
additive = "sum" ,
64
63
transform = "scale" ,
@@ -67,8 +66,8 @@ def _make_base_animate_transform(self):
67
66
def _make_animate (self , index ):
68
67
num_count = len (self .values )
69
68
a = Animate (
70
- "opacity " ,
71
- dur = self . dur ,
69
+ "visibility " ,
70
+ dur = str ( num_count * BASE_HEART_RATE ) + 's' ,
72
71
values = make_key_values (num_count , index ),
73
72
keyTimes = make_key_times (num_count ),
74
73
repeatCount = "indefinite" ,
@@ -91,24 +90,9 @@ def __compute_statistics(self):
91
90
if not self .values :
92
91
raise Exception ("No heart rate values set" )
93
92
dur_break_points = (5 , 10 , 15 , 20 )
93
+ num_count = len (self .values )
94
94
i = bisect (dur_break_points , len (self .values ))
95
- self .dur = str (12 * i ) + "s"
96
-
97
- def _make_heart_scale_values (self ):
98
- """
99
- break_points -> scale number
100
- """
101
- break_points = ("0.625" , "0.75" , "0.875" , "1.125" , "1.25" , "1.375" , "1.5" )
102
- min_value , max_value = min (self .values ), max (self .values )
103
- interval = (max_value - min_value ) / 5
104
- heart_rate_points = [min_value + interval * i for i in range (5 )]
105
- heart_rate_points .append (max_value )
106
- heart_scale_list = [
107
- break_points [bisect (heart_rate_points , i )] for i in self .values
108
- ]
109
- # Make the effect of a beating heart
110
- heart_scale_list = intersperse (heart_scale_list , "1" )
111
- return heart_scale_list
95
+ self .dur = str (num_count )+ 's' ,
112
96
113
97
def make_heart_svg (self ):
114
98
self .__compute_statistics ()
0 commit comments