I never found the time to have a look at Opera Show. I mean I have seen presentations, but I never took the time learning how to do them myself. Now since I have to hold a presentation in a couple of weeks I take this as an opportunity to get rid of Powerpoint and start using Opera as my presentation tool of choice.
My first stop was the Opera Show tutorial. It gave me a general overview on how these CSS-driven presentations work. The best and fastest way to figure out how Opera Show presentations are supposed to be structured, is to have a look at the OSF 1.0 (Opera Show Format) specifications. After that it is a good idea to create a dummy presentation with the Opera Show Generator and save it as an .xml file. The cool thing is: Your whole presentation (including images) can be in one single xml-file. Easily distributable on the web. But more on that later.
I took the xml-file apart and stored the stylesheets and javascript in seperate files to get a clearer view on the xml. At this point one can see how easy to understand (and use) the OSF-xml is. Of course taking the file apart is not in the intentions of the OSF. That is why we will now have a look on how to have all the data in-line.
In RFC2378 a new url-scheme was proposed in 1998. Most browsers support this, Internet Explorer doesn't, though. The URLs look like this: data:[<mediatype>][;base64],<data> where mediatype is the MIME type of the data (i.e. image/png) and data is the at-best BASE64-encoded file. This URL can be put directly where you usually would link to the file. See this link for example.
The proccess of creating multiple data: urls was a little annoying for me, so I wrote a little Java app which I called data:url Dropper. It allows you to drag and drop multiple files inside it's window and displays the corresponding data: urls. You can start it directly using Java Web Start or download the self-executing dataurl.jar. It is free for use and I will put it under the GPL as soon as a find the time to publish the sourcecode.
I hope you like it. Feel free to leave comments or improvement suggestions. I should point out this is just a quick hack. The MIME types of the files are detected by the file-extension and until now I only look for bmp, gif, jpeg, jpe, jpg, png, tif, svg and svgz. If the input file is none of these the MIME type will be none. It can be adjusted manually, though ;-)
Later
Matthias