diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-07-22 09:54:27 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-07-22 09:54:27 (GMT) |
commit | a02313d85aa3dd2e53c4ee98a5e407460e292456 (patch) | |
tree | bdf0b63e4fa99c5e47d06acdeb7ab1245b22e968 | |
parent | 2aa23cfa42e1ea5db895bb12a47ca1b35451bcb1 (diff) |
Beginnings of a simple scene API. Inspired opened-hand's Clutter
-rw-r--r-- | examples/scene/activity1.png | bin | 0 -> 3360 bytes | |||
-rw-r--r-- | examples/scene/activity2.png | bin | 0 -> 2604 bytes | |||
-rw-r--r-- | examples/scene/activity3.png | bin | 0 -> 3205 bytes | |||
-rw-r--r-- | examples/scene/activity4.png | bin | 0 -> 2740 bytes | |||
-rw-r--r-- | examples/scene/activity5.png | bin | 0 -> 2422 bytes | |||
-rw-r--r-- | examples/scene/background.png | bin | 0 -> 70665 bytes | |||
-rwxr-xr-x | examples/scene/scene.py | 39 | ||||
-rw-r--r-- | sugar/scene/Actor.py | 17 | ||||
-rw-r--r-- | sugar/scene/Group.py | 15 | ||||
-rw-r--r-- | sugar/scene/PixbufActor.py | 13 | ||||
-rw-r--r-- | sugar/scene/Stage.py | 5 | ||||
-rw-r--r-- | sugar/scene/__init__.py | 0 |
12 files changed, 89 insertions, 0 deletions
diff --git a/examples/scene/activity1.png b/examples/scene/activity1.png Binary files differnew file mode 100644 index 0000000..f8b4350 --- /dev/null +++ b/examples/scene/activity1.png diff --git a/examples/scene/activity2.png b/examples/scene/activity2.png Binary files differnew file mode 100644 index 0000000..aaadc0f --- /dev/null +++ b/examples/scene/activity2.png diff --git a/examples/scene/activity3.png b/examples/scene/activity3.png Binary files differnew file mode 100644 index 0000000..6f64515 --- /dev/null +++ b/examples/scene/activity3.png diff --git a/examples/scene/activity4.png b/examples/scene/activity4.png Binary files differnew file mode 100644 index 0000000..c33e50c --- /dev/null +++ b/examples/scene/activity4.png diff --git a/examples/scene/activity5.png b/examples/scene/activity5.png Binary files differnew file mode 100644 index 0000000..7f8c72a --- /dev/null +++ b/examples/scene/activity5.png diff --git a/examples/scene/background.png b/examples/scene/background.png Binary files differnew file mode 100644 index 0000000..346b5dc --- /dev/null +++ b/examples/scene/background.png diff --git a/examples/scene/scene.py b/examples/scene/scene.py new file mode 100755 index 0000000..5468cd1 --- /dev/null +++ b/examples/scene/scene.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + +import pygtk +pygtk.require('2.0') +import gtk + +from sugar.scene.Stage import Stage +from sugar.scene.Group import Group +from sugar.scene.PixbufActor import PixbufActor + +def drawing_area_expose_cb(widget, event, stage): + stage.render(widget.window) + +stage = Stage() + +pixbuf = gtk.gdk.pixbuf_new_from_file('background.png') +stage.add(PixbufActor(pixbuf)) + +icons_group = Group() + +i = 1 +while i <= 5: + pixbuf = gtk.gdk.pixbuf_new_from_file('activity%d.png' % i) + icons_group.add(PixbufActor(pixbuf)) + i += 1 + +stage.add(icons_group) + +window = gtk.Window() +window.set_default_size(640, 480) + +drawing_area = gtk.DrawingArea() +drawing_area.connect('expose_event', drawing_area_expose_cb, stage) +window.add(drawing_area) +drawing_area.show() + +window.show() + +gtk.main() diff --git a/sugar/scene/Actor.py b/sugar/scene/Actor.py new file mode 100644 index 0000000..1ee7e2d --- /dev/null +++ b/sugar/scene/Actor.py @@ -0,0 +1,17 @@ +class Actor: + def __init__(self): + self._x = 0 + self._y = 0 + self._width = -1 + self._height = -1 + + def set_position(self, x, y): + self._x = x + self._y = y + + def set_size(self, width, height): + self._width = width + self._height = height + + def render(self, window): + pass diff --git a/sugar/scene/Group.py b/sugar/scene/Group.py new file mode 100644 index 0000000..b845cd8 --- /dev/null +++ b/sugar/scene/Group.py @@ -0,0 +1,15 @@ +from sugar.scene.Actor import Actor + +class Group(Actor): + def __init__(self): + self._actors = [] + + def add(self, actor): + self._actors.append(actor) + + def remove(self, actor): + self._actors.remove(actor) + + def render(self, drawable): + for actor in self._actors: + actor.render(drawable) diff --git a/sugar/scene/PixbufActor.py b/sugar/scene/PixbufActor.py new file mode 100644 index 0000000..00ed587 --- /dev/null +++ b/sugar/scene/PixbufActor.py @@ -0,0 +1,13 @@ +import gtk + +from sugar.scene.Actor import Actor + +class PixbufActor(Actor): + def __init__(self, pixbuf): + Actor.__init__(self) + + self._pixbuf = pixbuf + + def render(self, drawable): + gc = gtk.gdk.GC(drawable) + drawable.draw_pixbuf(gc, self._pixbuf, 0, 0, self._x, self._y) diff --git a/sugar/scene/Stage.py b/sugar/scene/Stage.py new file mode 100644 index 0000000..f314db9 --- /dev/null +++ b/sugar/scene/Stage.py @@ -0,0 +1,5 @@ +from sugar.scene.Group import Group + +class Stage(Group): + def __init__(self): + Group.__init__(self) diff --git a/sugar/scene/__init__.py b/sugar/scene/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sugar/scene/__init__.py |