From: <fm...@tn...> - 2005-08-28 20:07:14
|
Hi again, You should create a component which generate the SVG image on the fly, where you can link to and passing through the url. So you have in your page a tag that refers to it: ="/create_svg.pl?id=1234" And in this component you set the Content-Type like given previously. Ex: <%doc> =header1 TITLE create_svg - Create on-the-fly SVG Images =header1 DESCRIPTION Blah blah blah =cut </%doc> <%args> $id => undef </%args> <%init> use SVG ( -standalone => 'no' ); $r->content_type("image/svg+xml"); # Output will be a SVG Image # Here comes the SVG image generation code my $asvg = SVG->new( width => 300, height => 300, ); my $agroup = $asvg->group( id => 'agroup', style => { stroke => 'blue', fill => 'yellow', }, ); $agroup->circle( cx => 100, cy => 100, r => 50, id => 'acircle', ); $m->clear_buffer; # If you think you need it # Create output print $asvg->xmlify( -namespace => "svg", -inline => 1 ); </%init> Don't know if the code is correct, but you should use a clear coding style... Another interesting add-on would be using the Cache capabilities you have with Mason, this way you could cache the output of this component using a giving exclusively identifier... this if the data to generate the SVG don't change too much... Regards, Florian > * fm...@tn... wrote: > | > | Could be? > | > | $r->content_type("image/svg+xml"); > | > | > > > Well, that would make the whole file of a certain content-type ... > > I've been playing around with the SVG and Mason modules today, and this > is what I have coded now (doesn't work yet) > > <p>Test SVG - Mason</p> > <EMBED SRC="../x.svg" > > <p>Above, the circle comes from an embedded svg file</p> > <p>Now it comes generated by inline perl!</p> > <OBJECT name="svg_perl" type="image/svg+xml" width="400" height="150" > data="\ > <%perl> > use SVG (-standalone=>'no') ; > use strict ; > > my $asvg = SVG->new(width=>300,height=>300) ; > my $agroup = > $asvg->group(id=>"agroup",style=>{stroke=>'blue',fill=>'yellow'}) ; > > $agroup->circle(cx=>100,cy=>100,r=>50,id=>"acircle") ; > print $asvg->xmlify(-namespace=>"svg", -inline=>1); > </%perl> > "></OBJECT> > > > The first svg embedding works nice (calling a .svg file externally with > EMBED. However I'd like to generate the contents of that file > dynamically with the SVG module (2nd part of the html file) . I'm trying > the OBJECT tag for this and using data="..." to make the svg part > inlined . > However this does not work yet :-/ > > Any idea ? > > -- > Erik > > * Life is wonderful with Emacs and Perl * > |