> > |
| META TOPICPARENT | name="CortlandSetlow" |
Google Summer of Code 2006 Project Proposal: SVG for Project Looking Glass.
Introduction
Project Looking Glass offers new opportunities for user interface design by bringing 3D technology to everyday desktop tasks, but as it is a relatively recent technology, it lacks some features of other toolkits. I propose bringing functionality only recently added to GTK to project Looking Glass: integrated rendering of Scalable Vector Graphics. This would allow easy production of new resolution-independent graphics, especially important in a 3D environment. Whereas widgets in most 2D environments are viewed from a set perspective at a set pixel size, 3D objects may move to positions either near or far the viewer, and careful scaling of images becomes important. Vector graphics, in general, scale better than raster graphics, and can retain detail better. For this reason a SVG renderer would improve the appearance and legibility of graphical displays in Project Looking glass.
Implementation and Implementation Milestones
I know of two good candidates for SVG rendering in Project Looking Glass: Cairo, with its associated java bindings, and Batik. Cairo is written in C, and Batik is written in Java. I will implement a minimal rendering interface using each library in the first three weeks of the summer and evaluate their relative benefits. I intend to seek feedback from the developer community at this point as well.
I expect that the Batik implementation will be preferred, as a pure Java codebase is far easier to maintain than the mixture of Java and C that Cairo would require.
Once I have chosen a rendering library, I will write code to bring SVG support parallel with that for other image types, following existing APIs as closely as possible, implementing pre-existing interfaces and inheriting from existing classes wherever appropriate. I will write Javadoc comments into my code from the beginning, and keep them up-to-date.
Deliverables
I will produce a complete and functioning interface to an SVG renderer with an interface familiar to those who have manipulated images in writing a Project Looking Glass application. I will also provide examples of how to use the renderer interface. My code will follow the Project Looking Glass coding standards. and I will endeavor to write understandable and clean code. All copyrights will be assigned as per the JCA.
Project Timeline
- Week one: Build "Hello World" application in LG3D?. Read other applications to see how they handle images.
- Week two: Implement mockup Cairo-based renderer.
- Week three: Implement mockup Batik-based renderer.
- Week four: Gather developer feedback and choose a renderer.
- Week five: Decide which interfaces an SVG renderer ought to implement.
- Week six: Write code to implement minimal interfaces.
- Week seven: Write example programs that perform parallel operations on SVG images and raster images to ensure API similarity.
- Weeks eight-nine: Finish SVG render interfaces.
- Week ten: Debugging, code cleanup, and documentation cleanup.
- Week eleven: Final debugging and allowance for lost time earlier in the summer.
During a one-week family vacation, I will be available only on a very limited basis. I have no other employment or other obligations for this summer, and I will work on this application full time.
Experience
As a senior physics major (engineering minor) at Swarthmore College, I have experience programming computer graphics, simple user interfaces, and simulations in Java. This past semester, I have been writing code in Java which makes heavy use of a physics library for my Computational Physics class, so my knowledge of Java fundamentals is strong. I am familiar with Eclipse, Emacs, Vim, and other development tools. Please see my online portfolio at http://cs.swarthmore.edu/~bsetlow/ . My portfolio shows some of my work on computer imaging, but it only contains finished projects. My engineering senior honors study, which will be complete before the summer begins, is a 3D human input device which uses capacitive sensing to find the position of a user's hand over a sensing plane. I chose this project because of my interest in new human-computer interfaces, and I'm similarly drawn to Project Looking Glass.
Contact Information
Name: CortlandSetlow
Email: firstname.lastname@gmail.com
-- Main.cortlandsetlow - 07 May 2006 |