Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflorent <florent.pigout@gmail.com>2011-04-29 16:07:54 (GMT)
committer florent <florent.pigout@gmail.com>2011-04-29 16:07:54 (GMT)
commit6791a5a039850d089311d5e53171d2e5686ea987 (patch)
treea0866fac4fd7d566bdd0521065de9d123a898bef
parent291864de85f894319dab34f2d9ca9cd260b356b1 (diff)
enhance rendering smoothing
-rw-r--r--atoidejouer/story/keys.py22
-rw-r--r--atoidejouer/ui/panel.py14
-rw-r--r--atoidejouer/ui/screens.py4
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