Hi,
I just uploaded inkface-pygame v0.2.2 tarball. Here are some highlights of
changes:
1. Important changes were made to improve the performance of drawing the
elements to the pygame backend, . This involved use of pygame's advanced
facilities (special pygame sprite groups - LayeredDirty). In short, inkface
can flag only selective surfaces as dirty and only the parts of the screen
occupied by those surfaces are refreshed. Before this change the
animation.py test used to take constant ~40% CPU (irrespective of changes in
the component surfaces). With this change the CPU consumption remains around
~5% during no GUI activities and consumes higher CPU only when parts of the
GUI need redrawing (for animation.py it peaks at ~25%). This changes how
animation are programmed (fo better). Check tests/animation.py and
tests/twt.py for example. Soon I plan to release API docs to explain this
better.
2. Using the SVG elements, higher level widgets can be coded. A sample
application twitter-inkface (under apps/ directory), shows how textbox
widgets can be created. They have usual qualities of textbox (blinking
cursors, self adjusting text), but they can be themed easily y changing
corresponding SVG files. Check out the video demo mentioned below for more
details.
3. The text elements now can be drawn with colors.
4. The use of RGB24 surfaces was causing problem while running in Maemo SDK.
All cairo surfaces are now changed to ARGB32 so that this works in Maemo
diablo SDK.
5. The callback handler signatures - onKeyPress, onDraw - have been changed
slightly to be more like traditional event handler signatures. They will be
clear once API docs are ready.
To demonstrate above features, I have coded a twitter client. It is under
the apps directory in source tree. It runs with two separate themes. Each
theme consists of 2 SVG files, yet the difference in GUI's look is huge.
Here is the demo video that shows the same.
http://blip.tv/file/1869874
The performance improvement effort - as mentioned in 1 above - has made
inkface-pygame incompatible with Maemo diablo SDK. This is because the
pygame features like LayeredDirty are available only in 1.8.x while diablo
has pygame version 1.7.x. I am trying to fix this by making use of old
pygame features instead of LayeredDirty.
Comments are welcome.
--
Jayesh