#!/usr/bin/perl -w # # Example 7-4. Twirling squares. use strict; use XML::Writer; # Used to write the SVG output use IO::Scalar; my ($width, $height) = (200,200); my $sprite = new IO::Scalar; my $writer = XML::Writer->new(OUTPUT => $sprite); $writer->setDataMode(1); $writer->setDataIndent(2); $writer->startTag('svg', id => 'sprite', height => $height, width => $width, onload => "StartAnimation(evt)", 'xmlns:xlink' => 'http://www.w3.org/1999/Xlink'); $writer->startTag('script', type => "text/ecmascript"); print $sprite < ENDSCRIPT $writer->endTag('script'); foreach my $row (1..5) { foreach my $col (1..5) { $writer->emptyTag('rect', id => "box".(($row-1)*5+$col-1), onmouseover => "ChangeColor(evt)", onmouseout => "ChangeColorBack(evt)", width => 20, height => 20, 'stroke-width' => 1, stroke => '#000000', fill => 'none', x => 30*$col, y => 30*$row); } } $writer->endTag('svg'); my $toplevel = new IO::Scalar; $writer = XML::Writer->new(OUTPUT => $toplevel); $writer->setDataMode(1); $writer->setDataIndent(2); $writer->startTag('svg', height => $height, width => $width, 'xmlns:xlink' => 'http://www.w3.org/1999/Xlink'); $writer->startTag('script', type => "text/ecmascript"); print $toplevel < ENDSCRIPT $writer->endTag('script'); $writer->emptyTag('rect', id => "background", onmousedown => "MoveCenter(evt)", width => 400, height => 400, fill => 'pink'); print $toplevel $sprite; $writer->endTag('svg'); print $toplevel;