.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "SVG::TT::Graph 3pm" .TH SVG::TT::Graph 3pm "2015-04-14" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" SVG::TT::Graph \- Base module for generating SVG graphics .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 6 \& package SVG::TT::Graph::GRAPH_TYPE; \& use SVG::TT::Graph; \& use base qw(SVG::TT::Graph); \& use vars qw($VERSION); \& $VERSION = $SVG::TT::Graph::VERSION; \& $TEMPLATE_FH = \e*DATA; \& \& sub _set_defaults { \& my $self = shift; \& \& my %default = ( \& \*(Aqkeys\*(Aq => \*(Aqvalue\*(Aq, \& ); \& while( my ($key,$value) = each %default ) { \& $self\->{config}\->{$key} = $value; \& } \& } \& \& \& # optional \- called when object is created \& sub _init { \& my $self = shift; \& # any testing you want to do. \& \& } \& \& ... \& \& 1; \& _\|_DATA_\|_ \& \& \& \& In your script: \& \& use SVG::TT::Graph::GRAPH_TYPE; \& \& my $width = \*(Aq500\*(Aq, \& my $heigh = \*(Aq300\*(Aq, \& my @fields = qw(field_1 field_2 field_3); \& \& my $graph = SVG::TT::Graph::GRAPH_TYPE\->new({ \& # Required for some graph types \& \*(Aqfields\*(Aq => \e@fields, \& # .. other config options \& \*(Aqheight\*(Aq => \*(Aq500\*(Aq, \& }); \& \& my @data = qw(23 56 32); \& $graph\->add_data({ \& \*(Aqdata\*(Aq => \e@data, \& \*(Aqtitle\*(Aq => \*(AqSales 2002\*(Aq, \& }); \& \& # find a config options value \& my $config_value = $graph\->config_option(); \& # set a config option value \& $graph\->config_option($config_value); \& \& # All graphs support SVGZ (compressed SVG) if \& # Compress::Zlib is available. Use either the \& # \*(Aqcompress\*(Aq => 1 config option, or: \& $graph\->compress(1); \& \& # All graph SVGs can be tidied if XML::Tidy \& # is installed. Use either the \*(Aqtidy\*(Aq => 1 \& # config option, or: \& $graph\->tidy(1); \& \& print "Content\-type: image/svg+xml\en\en"; \& print $graph\->burn(); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This package is a base module for creating graphs in Scalable Vector Format (\s-1SVG\s0). Do not use this module directly. Instead, use one of the following modules to create the plot of your choice: .IP "SVG::TT::Graph::Line" 4 .IX Item "SVG::TT::Graph::Line" .PD 0 .IP "SVG::TT::Graph::Bar" 4 .IX Item "SVG::TT::Graph::Bar" .IP "SVG::TT::Graph::BarHorizontal" 4 .IX Item "SVG::TT::Graph::BarHorizontal" .IP "SVG::TT::Graph::BarLine" 4 .IX Item "SVG::TT::Graph::BarLine" .IP "SVG::TT::Graph::Pie" 4 .IX Item "SVG::TT::Graph::Pie" .IP "SVG::TT::Graph::TimeSeries" 4 .IX Item "SVG::TT::Graph::TimeSeries" .IP "SVG::TT::Graph::XY" 4 .IX Item "SVG::TT::Graph::XY" .PD .PP If XML::Tidy is installed, the \s-1SVG\s0 files generated can be tidied. If Compress::Zlib is available, the \s-1SVG\s0 files can also be compressed to \s-1SVGZ.\s0 .SH "METHODS" .IX Header "METHODS" .SS "\fIadd_data()\fP" .IX Subsection "add_data()" .Vb 1 \& my @data_sales_02 = qw(12 45 21); \& \& $graph\->add_data({ \& \*(Aqdata\*(Aq => \e@data_sales_02, \& \*(Aqtitle\*(Aq => \*(AqSales 2002\*(Aq, \& }); .Ve .PP This method allows you do add data to the graph object. It can be called several times to add more data sets in. .SS "\fIclear_data()\fP" .IX Subsection "clear_data()" .Vb 1 \& my $graph\->clear_data(); .Ve .PP This method removes all data from the object so that you can reuse it to create a new graph but with the same config options. .SS "\fIget_template()\fP" .IX Subsection "get_template()" .Vb 1 \& print $graph\->get_template(); .Ve .PP This method returns the \s-1TT\s0 template used for making the graph. .SS "\fIburn()\fP" .IX Subsection "burn()" .Vb 1 \& print $graph\->burn(); .Ve .PP This method processes the template with the data and config which has been set and returns the resulting \s-1SVG.\s0 .PP This method will croak unless at least one data set has been added to the graph object. .SS "\fIcompress()\fP" .IX Subsection "compress()" .Vb 1 \& $graph\->compress(1); .Ve .PP If Compress::Zlib is installed, the content of the \s-1SVG\s0 file can be compressed. This get/set method controls whether or not to compress. The default is 0 (off). .SS "\fItidy()\fP" .IX Subsection "tidy()" .Vb 1 \& $graph\->tidy(1); .Ve .PP If XML::Tidy is installed, the content of the \s-1SVG\s0 file can be formatted in a prettier way. This get/set method controls whether or not to tidy. The default is 0 (off). The limitations of tidy are described at this \s-1URL: \&\s0 .SS "config methods" .IX Subsection "config methods" .Vb 2 \& my $value = $graph\->method(); \& $graph\->method($value); .Ve .PP This object provides autoload methods for all config options defined in the _set_default method within the inheriting object. .PP See the SVG::TT::Graph::GRAPH_TYPE documentation for a list. .SH "EXAMPLES" .IX Header "EXAMPLES" For examples look at the project home page http://leo.cuckoo.org/projects/SVG\-TT\-Graph/ .SH "EXPORT" .IX Header "EXPORT" None by default. .SH "ACKNOWLEDGEMENTS" .IX Header "ACKNOWLEDGEMENTS" Thanks to Foxtons for letting us put this on \s-1CPAN,\s0 Todd Caine for heads up on reparsing the template (but not using atm), David Meibusch for TimeSeries and a load of other ideas, Stephen Morgan for creating the \s-1TT\s0 template and \s-1SVG,\s0 and thanks for all the patches by Andrew Ruthven and others. .SH "AUTHOR" .IX Header "AUTHOR" Leo Lapworth .SH "MAINTAINER" .IX Header "MAINTAINER" Florent Angly .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2003, Leo Lapworth .PP This module is free software; you can redistribute it or modify it under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" SVG::TT::Graph::Line, SVG::TT::Graph::Bar, SVG::TT::Graph::BarHorizontal, SVG::TT::Graph::BarLine, SVG::TT::Graph::Pie, SVG::TT::Graph::TimeSeries, SVG::TT::Graph::XY, Compress::Zlib, XML::Tidy