Implement translation
This commit is contained in:
parent
1c35f8d92c
commit
1e3633baf7
@ -33,6 +33,7 @@ pixbuf = gtk.gdk.pixbuf_new_from_file('background.png')
|
|||||||
stage.add(PixbufActor(pixbuf))
|
stage.add(PixbufActor(pixbuf))
|
||||||
|
|
||||||
icons_group = Group()
|
icons_group = Group()
|
||||||
|
icons_group.set_position(100, 100)
|
||||||
|
|
||||||
i = 1
|
i = 1
|
||||||
while i <= 5:
|
while i <= 5:
|
||||||
@ -55,7 +56,7 @@ drawing_area.show()
|
|||||||
|
|
||||||
window.show()
|
window.show()
|
||||||
|
|
||||||
timeline = Timeline(stage, 300)
|
timeline = Timeline(stage, 200)
|
||||||
timeline.connect('next-frame', __next_frame_cb, icons_group)
|
timeline.connect('next-frame', __next_frame_cb, icons_group)
|
||||||
timeline.connect('completed', __completed_cb, icons_group)
|
timeline.connect('completed', __completed_cb, icons_group)
|
||||||
timeline.start()
|
timeline.start()
|
||||||
|
@ -13,5 +13,5 @@ class Actor:
|
|||||||
self._width = width
|
self._width = width
|
||||||
self._height = height
|
self._height = height
|
||||||
|
|
||||||
def render(self, window):
|
def render(self, window, transf):
|
||||||
pass
|
pass
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
from sugar.scene.Actor import Actor
|
from sugar.scene.Actor import Actor
|
||||||
|
from sugar.scene.Transformation import Transformation
|
||||||
|
|
||||||
class Group(Actor):
|
class Group(Actor):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._actors = []
|
self._actors = []
|
||||||
self._layout = None
|
self._layout = None
|
||||||
|
self._transf = Transformation()
|
||||||
|
|
||||||
|
def set_position(self, x, y):
|
||||||
|
Actor.set_position(self, x, y)
|
||||||
|
self._transf.set_translation(x, y)
|
||||||
|
|
||||||
def add(self, actor):
|
def add(self, actor):
|
||||||
self._actors.append(actor)
|
self._actors.append(actor)
|
||||||
@ -27,6 +33,7 @@ class Group(Actor):
|
|||||||
if self._layout:
|
if self._layout:
|
||||||
self._layout.layout_group(self)
|
self._layout.layout_group(self)
|
||||||
|
|
||||||
def render(self, drawable):
|
def render(self, drawable, transf):
|
||||||
|
transf = transf.compose(self._transf)
|
||||||
for actor in self._actors:
|
for actor in self._actors:
|
||||||
actor.render(drawable)
|
actor.render(drawable, transf)
|
||||||
|
@ -8,6 +8,7 @@ class PixbufActor(Actor):
|
|||||||
|
|
||||||
self._pixbuf = pixbuf
|
self._pixbuf = pixbuf
|
||||||
|
|
||||||
def render(self, drawable):
|
def render(self, drawable, transf):
|
||||||
|
(x, y) = transf.get_position(self._x, self._y)
|
||||||
gc = gtk.gdk.GC(drawable)
|
gc = gtk.gdk.GC(drawable)
|
||||||
drawable.draw_pixbuf(gc, self._pixbuf, 0, 0, self._x, self._y)
|
drawable.draw_pixbuf(gc, self._pixbuf, 0, 0, x, y)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from sugar.scene.Group import Group
|
from sugar.scene.Group import Group
|
||||||
|
from sugar.scene.Transformation import Transformation
|
||||||
|
|
||||||
class Stage(Group):
|
class Stage(Group):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -7,3 +8,8 @@ class Stage(Group):
|
|||||||
|
|
||||||
def get_fps(self):
|
def get_fps(self):
|
||||||
return self._fps
|
return self._fps
|
||||||
|
|
||||||
|
def render(self, drawable, transf = None):
|
||||||
|
if transf == None:
|
||||||
|
transf = Transformation()
|
||||||
|
Group.render(self, drawable, transf)
|
||||||
|
21
sugar/scene/Transformation.py
Normal file
21
sugar/scene/Transformation.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import copy
|
||||||
|
|
||||||
|
class Transformation:
|
||||||
|
def __init__(self):
|
||||||
|
self._translation_x = 0
|
||||||
|
self._translation_y = 0
|
||||||
|
|
||||||
|
def set_translation(self, x, y):
|
||||||
|
self._translation_x = x
|
||||||
|
self._translation_y = y
|
||||||
|
|
||||||
|
def get_position(self, x, y):
|
||||||
|
translated_x = x + self._translation_x
|
||||||
|
translated_y = y + self._translation_y
|
||||||
|
return (translated_x, translated_y)
|
||||||
|
|
||||||
|
def compose(self, transf):
|
||||||
|
composed = copy.copy(transf)
|
||||||
|
composed._translation_x += transf._translation_x
|
||||||
|
composed._translation_y += transf._translation_y
|
||||||
|
return composed
|
Loading…
Reference in New Issue
Block a user