Mercurial > code > home > repos > light9
comparison flax/Timeline.py @ 138:304152488ed7
Timeline: new methods to make editing easier
Timeline: new methods to make editing easier
Submaster: fix level-clobbering bug, skip CVS files, better __repr__
KeyboardClient: tiny cleanups
author | dmcc |
---|---|
date | Sat, 14 Jun 2003 16:01:31 +0000 |
parents | 5670f66845ce |
children | 83e2c4ceb79a |
comparison
equal
deleted
inserted
replaced
137:7d768d04b9f0 | 138:304152488ed7 |
---|---|
135 return self.linear_blend(startframe, endframe, blendtime) | 135 return self.linear_blend(startframe, endframe, blendtime) |
136 | 136 |
137 class Strobe(Blender): | 137 class Strobe(Blender): |
138 "Strobes the frame on the right side between offlevel and onlevel." | 138 "Strobes the frame on the right side between offlevel and onlevel." |
139 def __init__(self, ontime, offtime, onlevel=1, offlevel=0): | 139 def __init__(self, ontime, offtime, onlevel=1, offlevel=0): |
140 "times are in seconds" | 140 "times are in seconds (floats)" |
141 make_attributes_from_args('ontime', 'offtime', 'onlevel', 'offlevel') | 141 make_attributes_from_args('ontime', 'offtime', 'onlevel', 'offlevel') |
142 self.cycletime = ontime + offtime | 142 self.cycletime = ontime + offtime |
143 def __call__(self, startframe, endframe, blendtime, time_since_startframe): | 143 def __call__(self, startframe, endframe, blendtime, time_since_startframe): |
144 # time into the current period | 144 # time into the current period |
145 period_time = time_since_startframe % self.cycletime | 145 period_time = time_since_startframe % self.cycletime |
157 if kw.get('default_frame'): | 157 if kw.get('default_frame'): |
158 self.default_frame = kw['default_frame'] | 158 self.default_frame = kw['default_frame'] |
159 else: | 159 else: |
160 self.default_frame = None | 160 self.default_frame = None |
161 self.name = name | 161 self.name = name |
162 self.events = list(timedevents) | 162 self.set_events(list(timedevents)) |
163 def set_events(self, events): | |
164 """This is given a list of TimedEvents. They need not be sorted.""" | |
165 self.events = events | |
166 self._cleaup_events() | |
167 def _cleaup_events(self): | |
168 """This makes sure all events are in the right order and have defaults | |
169 filled in if they have missing frames.""" | |
163 self.events.sort() | 170 self.events.sort() |
164 self.fill_in_missing_subs() | 171 self.fill_in_missing frames() |
165 def fill_in_missing_subs(self): | 172 def add_event(self, event): |
173 """Add a TimedEvent object to this TimelineTrack""" | |
174 self.events.append(event) | |
175 self._cleaup_events(self.events) | |
176 def delete_event(self, event): | |
177 """Delete event by TimedEvent object""" | |
178 self.events.remove(event) | |
179 self._cleaup_events(self.events) | |
180 def delete_event_by_name(self, name): | |
181 """Deletes all events matching a certain name""" | |
182 self.events = [e for e in self.events if e.name is not name] | |
183 self._cleaup_events(self.events) | |
184 def delete_event_by_time(self, starttime, endtime=None): | |
185 """Deletes all events within a certain time range, inclusive. endtime | |
186 is optional.""" | |
187 endtime = endtime or starttime | |
188 self.events = [e for e in self.events | |
189 if e.time >= starttime and e.time <= endtime] | |
190 self._cleaup_events(self.events) | |
191 def fill_in_missing frames(self): | |
192 """Runs through all events and sets TimedEvent with missing frames to | |
193 the default frame.""" | |
166 for event in self.events: | 194 for event in self.events: |
167 if event.frame == MISSING: | 195 if event.frame == MISSING: |
168 event.frame = self.default_frame | 196 event.frame = self.default_frame |
169 def __str__(self): | 197 def __str__(self): |
170 return "<TimelineTrack with events: %r>" % self.events | 198 return "<TimelineTrack with events: %r>" % self.events |