diff options
author | florent <florent.pigout@gmail.com> | 2011-04-29 16:07:54 (GMT) |
---|---|---|
committer | florent <florent.pigout@gmail.com> | 2011-04-29 16:07:54 (GMT) |
commit | 6791a5a039850d089311d5e53171d2e5686ea987 (patch) | |
tree | a0866fac4fd7d566bdd0521065de9d123a898bef | |
parent | 291864de85f894319dab34f2d9ca9cd260b356b1 (diff) |
enhance rendering smoothing
-rw-r--r-- | atoidejouer/story/keys.py | 22 | ||||
-rw-r--r-- | atoidejouer/ui/panel.py | 14 | ||||
-rw-r--r-- | atoidejouer/ui/screens.py | 4 |
3 files changed, 30 insertions, 10 deletions
diff --git a/atoidejouer/story/keys.py b/atoidejouer/story/keys.py index 4bebb2e..6d09820 100644 --- a/atoidejouer/story/keys.py +++ b/atoidejouer/story/keys.py @@ -356,6 +356,28 @@ class StoryKeys(object): # return default return [0, 0] + def get_next_align(self, sequence_name, frame, use_transition=False): + # prepare inversed range + _range = range(frame + 1, self.get_max_frame() + 1) + # try one by one + for _f in _range: + # get frame dict + _frame_dict = self.get_frame_dict(sequence_name, _f) + # get frame values + _frame_values = [] if _frame_dict is None else _frame_dict.values() + # find first valid key + for _f_dict in _frame_values: + # little check + if use_transition is False\ + and _f_dict['__key_type'] != 'key': + continue + elif '__align' in _f_dict\ + and _f_dict['__key_type'] in ['key', 'transition']: + return _f_dict['__align'] + else: + continue + # default + return [0, 0] def inc_position(self, sequence_name, frame, filename, move, value): # get align first diff --git a/atoidejouer/ui/panel.py b/atoidejouer/ui/panel.py index cabcf03..7cf2da5 100644 --- a/atoidejouer/ui/panel.py +++ b/atoidejouer/ui/panel.py @@ -372,13 +372,13 @@ def _on_key_press(widget, event, panel): elif _name == 'Page Down': _on_layout_clicked(widget, panel, 'move_down') # TIME - elif _name == '+' and _mod.startswith('Ctrl+'): + elif _name == 'plus' and _mod.startswith('Ctrl+'): _on_time_clicked(widget, panel, 10) - elif _name == '+': + elif _name == 'plus': _on_time_clicked(widget, panel, 1) - elif _name == '-' and _mod.startswith('Ctrl+'): + elif _name == 'minus' and _mod.startswith('Ctrl+'): _on_time_clicked(widget, panel, -10) - elif _name == '-': + elif _name == 'minus': _on_time_clicked(widget, panel, -1) # DELETE elif _name == 'BackSpace' and _mod.startswith('Ctrl+'): @@ -418,12 +418,10 @@ def _on_key_press(widget, event, panel): _thread.pause() else: pass + # avoid propagation for rendering issue + widget.emit_stop_by_name('key-press-event') else: pass - # .. - widget.emit_stop_by_name('key-press-event') - # .. - return False class Panel(gtk.Frame): diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py index b6076d1..3161d97 100644 --- a/atoidejouer/ui/screens.py +++ b/atoidejouer/ui/screens.py @@ -285,8 +285,8 @@ class ScreenStory(graphics.Scene): if _ratio < rate: return _x, _y else: - _next_x, _next_y = self._get_keys('graphics').get_align(sequence_name, - int(time) + 1, filename) + _next_x, _next_y = self._get_keys('graphics').get_next_align( + sequence_name, int(time), use_transition=True) # .. return _x + (_next_x - _x) * _ratio, _y + (_next_y - _y) * _ratio |