#!/usr/bin/perl
use strict;
use warnings;
use SVG;
# create an SVG object with a size of 100x100 pixels
my $svg = SVG->new(
width => 100,
height => 100,
);
# create a rectangle (actually square) with the top left
# corner being at (40, 50)
# (0, 0) would mean being in the top left corner of the image.
# The width and the height of the rectangular are also given
# in pixels and we can add style just asw we did with the circle.
$svg->rectangle(
x => 40,
y => 50,
width => 40,
height => 40,
style => {
'fill' => 'rgb(0, 255, 0)',
'stroke' => 'black',
'stroke-width' => 0,
'stroke-opacity' => 1,
'fill-opacity' => 1,
},
);
$svg->circle(
cx => 40,
cy => 40,
r => 20,
style => {
'fill' => 'rgb(255, 0, 0)',
'stroke' => 'black',
'stroke-width' => 0,
'stroke-opacity' => 1,
'fill-opacity' => 1,
},
);
# In order to create a triangle we are going to create a polygon
# To make it easy to create various path based constructs, SVG.pm
# provides a "get_path" method that, give a series of coordinates
# and a type, return the respective data structure that is needed
# for SVG.
my $path = $svg->get_path(
x => [40, 60, 80],
y => [40, 6, 40],
-type => 'polygon');
# Then we use that data structure to create a polygon
$svg->polygon(
%$path,
style => {
'fill' => 'rgb(0,0,255)',
'stroke' => 'black',
'stroke-width' => 0,
'stroke-opacity' => 1,
'fill-opacity' => 1,
},
);
# now render the SVG object, implicitly use svg namespace
print $svg->xmlify, "\n";