Posts Tagged ‘stage’
I am currently at the Desktop Summit in Berlin. The city is awesome and it has been great walking around the cathedrals, talking boat rides and clicking lots of pictures.
Right now, I’m testing this work in Karbon, which has superior SVG support. This is nice because a lot of the code is shared in Calligra. Once the UI is done in Stage, I will be testing there.
This is the work I’ve done so far – for those who don’t like long posts, scroll down to a video of making a short presentation and my presentation at the DS.
Make some SVG-related classes used in Karbon, generic.
Karbon had good SVG making tools. So, I first made these SVG specific classes generic and ported them to a new lib, ‘libsvg’.
However, later Jan Hambrecht started working on a new library for SVGs, with the aim to promote SVG support. Thats a great idea.
So for now I am using my own ‘libsvg’, but once his library is done, I will remove my library, and use his, for it will be a more generic and better one.
Making a new shape – PresentationViewPortShape
A PresentationViewPortShape or PVPShape for short, is ‘[ ]’ (square bracket) – shaped. It is used to mark out a region on the SVG poster or canvas. The shape is a view port.
Imagine a huge poster, where the camera frame moves from one portion to another instead of the poster moving itself.
You can even add a viewport inside a viewport! This lets you display an idea first and then zoom in to the details of it.
The shape was a nice idea from my mentor, Thorsten Zachmann.
Saving and loading of a PVPShape
This was simpler. I save the rectangular region marked out by the PVP as an SVG ‘rect’ and save the attributes for animation as a custom defined element, ‘calligra:frame’.
The ‘hide’ attribute of the custom element is kept to be ‘true’ always, so that only the contents of the view port are visible without the rectangle itself been drawn around it.
This gives the effect of a continuous single canvas.
Tool Options for the PresentationViewPortShape
This is what I am trying to finish off at the moment. The tool options will let the user set the animation properties of the view port.
Design an intuitive way to adjust sequence of view ports in the SVG editor, may be by inserting an arrow between 2 view ports. An arrow shape?
Using the ‘sequence’ attribute of the ‘calligra:frame’ connecting arrows will be drawn on the canvas while the user is editing the presentation in Stage.
Integrate this tool in Stage
So far I have been testing my work in Karbon. I will now work on the UI for the new mode in Stage to make these presentations.
Video and presentation
The SVG presentation I displayed at the Desktop Summit can be found here. Use the left and right arrow keys, space bar or the return key to run the presentation.
(Doodling credits: Aditya Bhatt)
The conventional style of presentation is a slideshow. But this paradigm is one in which thoughts are presented in a linear fashion. But certain presentations need the flow of thought to be shown more clearly. You would want to present your ideas in the manner that they occurred to you.
This feature will create for the user a single canvas on which he can add his ideas anywhere in the form of images or text (and videos in future?)
The user can jot down the content of the presentation on the canvas and mark out sections of the canvas as ‘frames’. The presentation will proceed from one frame to the next by spatial movements and rotations. Different zooming levels can be set for each frames: you can emphasize on a point and then zoom in to show the details.
You could even have frames within frame within frames. Think of it as zooming into a particular rectangular section of a ‘slide’ so that it fills up the screen. And then zooming inside that new section again into another section/frame. And so on and so forth. 😉
Kevin Ottens used a single canvas SVG presentation at the KDE4.6 release party at Toulouse, France this March.
Similar presentations can be made online at Prezi; but these use flash
Right now, the community bonding period has started; I’m using this time to to get familiar with the community, the code base, and have started working on adding support for exporting a text shape to an SVG. This had been filed as a bug here.