OverView, the zoomy presentation tool for Ubuntu
OverView uses the Quickly framework which provides the outer window and easy packaging and integration with Launchpad. You can get the code on Ubuntu by installing quickly (sudo apt-get install quickly) and bzr branch lp:overview-project.
You might also need to install bzr and python-gtkglext1
Start the application by going into the directory you downloaded it to and using the "quickly run" command.
You can edit the user interface with quickly design, and edit the code with quickly edit.
The basic principal is that there is an infinite plane called the sheet on which you can put things to look at. The things can be of any size and orientation and by default are flat and level with the sheet - there will be some scope for things to be not-flat and not-level but by default things are just placed on the sheet. There is a camera viewpoint hovering above the sheet and looking down on it. This camera will move about looking at different things, as it moves it will rotate and zoom in and out so that each thing it looks at fills the screen and is the right way up. It might be possible to have the camera look in other directions than straight down, but the simple default case is that it looks directly at things.
What is a thing?
Anything that can be looked at really, an image, some text, a video, a 3d object, an SVG file etc. The basic properties are
width
height
xy_angle this is the angle of rotation relative to the sheet, 0 means that the thing is the same way up as the sheet
x_position to the centre of the thing, the camera will look directly at the x-y position.
y_position
next_thing a reference to the next thing to look at, this builds the sequence of the presentation.
some lesser used properties are also available
z_position - the height above the sheet
yz_angle - rolls the thing in the yz plane, 0 means flat to the sheet. The rotation will be about the centre of the object so the left side might be below the sheet and the right side above the sheet, this doesn't matter much as the sheet itself is invisible. This could be combined with a positive value for the z_position to bring the whole thing above the sheet.
zx_angle - pitches the thing in the xz plane, 0 means flat to the sheet
The camera will move smoothly between things taking a constant time to transition, so if it has a long way to go it will be moving faster. It should accellerate and decellerate smoothly, it also has to rotate to match the xy_angle of the thing it is moving to look at - it won't change to match the other angles, the camera almost always looks directly at the sheet. It will zoom in or out as it goes such that the width and height of the thing both fit on the screen.
There might end up being an extra type of object that can be in the sequence which is more of a camera configuration than a thing to look at. This will allow the camera to tilt relative to the sheet and move to arbitary positions and zoom levels independent of what things might be there.
Notes
Fonts are somewhat more problematic than one might expect in OpenGL
They get rendered as a texture and then manipulated, zooming in and out might make it pixelated as they are not real curves
FTGL is a library for using freetype to draw fonts in OpenGL
The python wrappers for FTGL do not appear to be packaged, however the C library itself is in Ubuntu.
Creating and Editing
Initially the focus is on getting some objects to zoom about, the editing interface is an important future step and will probably be implemented as a multitouch UI.
Languesen>fr GoogleDicCE
quickly
Languesen>fr GoogleDicCE
rapidement, vite, en vitesse, sans tarder