Imagine doing the following in a browser: typing text anywhere (not just inside
form fields), drawing a shape, or drawing a path with a mouse. That is, treating
a browser like a drawing or painting tool, with the additional ability to save
the drawing in a database. Draw and save. This is possible with Scalable Vector Graphics
(SVG), a 2-D Web graphics standard recommended by W3C in September 2001.
Such a capability is useful in annotating images displayed on the Web. Commercial applications of this technology include annotating medical images, maps, and scanned documents.
Although current popular browsers like IE and Netscape do not directly render SVG, browser plug-ins are available from Adobe (SVG Viewer) and others that will render an SVG document. Since SVG is a W3C standard, I expect that it will soon be an integral functionality of future releases of browsers.
SVG images are vector graphics, which means that all the graphical information is stored in a sequence of commands to draw lines, shapes, and other objects. This information is eventually converted to application-specific bitmaps, also called raster graphics. The task of converting an SVG image to a raster image is accomplished with a browser (plug-in). Note that this is different from bitmap-based graphics like GIFs or JPEGs, which must be generated on the server and delivered to the client as bitmap images.
SVG images are also scalable. Zooming in on an SVG image does not distort the image (display jagged edges) because instructions to redraw the image, rather than bitmap pixel values, are sent to the rendering program.
How does SVG let you draw in a browser?
An SVG file is in XML format. When it is delivered to a browser/SVG plug-in, all the contents are stored in the Document Object Model (DOM). SVG provides an API to capture mouse and keyboard events and manipulate the DOM. Let's look at an example that illustrates this.
XML format for vector graphics commands
Listing A provides a glimpse of the XML style syntax. It is like an object model for a business entity, with drawing properties and object properties. When this file is opened in a browser with an SVG plug-in, you will see a circle. To test this, download and install the SVG plug-in from the Adobe Web site. Then, create a new file, Circle.svg, copy the code into the file, and open the file from your Web browser.
Manipulating the DOM
Note that although we included the OMM() function for illustration purposes, we didn't provide any code for it. You could use this function rather than OMU() and OMD() if you wanted to draw a path instead of a line. You can also capture the onclick, onkeydown, and onkeyup mouse and keyboard events.
Basically, this is the mechanism for drawing on a browser:
When the DOM is changed, the plug-in notifies the browser to draw the new element in DOM.
SVG in motion
SVG also supports animation. Consider Listing D, for example, where a mouse click will increase the radius of the ball from 100 to 200 in one second.
Browser-based interfaces to business applications allow only a limited number of input controls, such as text boxes, pull-downs, and radio buttons. SVG can open the door for substantially richer user interactions—from typing text anywhere in a browser to drawing regular figures like circles, lines, and rectangles, to drawing freehand or writing notes in the margin using a stylus on a touch screen.
Popular browsers like IE and Netscape don't currently render SVG directly. But SVG is a W3C standard, so that functionality will probably be integrated into those browsers in the not-too-distant future.