SVG::Element man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

SVG::Element(3)	      User Contributed Perl Documentation      SVG::Element(3)

NAME
       SVG::Element - Generate the element bits for SVG.pm

AUTHOR
       Ronan Oger, cpan@roitsystems.com

SEE ALSO
       perl(1),SVG,SVG::XML,SVG::Element,SVG::Parser, SVG::Manual
       <http://www.roitsystems.com/> ROASP.com: Serverside SVG server
       <http://www.roitsystems.com/> ROIT Systems: Commercial SVG perl
       solutions <http://www.w3c.org/Graphics/SVG/> SVG at the W3C

   tag (alias: element)
       $tag = $SVG->tag($name, %attributes)

       Generic element generator. Creates the element named $name with the
       attributes specified in %attributes. This method is the basis of most
       of the explicit element generators.

       Example:

	   my $tag = $SVG->tag('g', transform=>'rotate(-45)');

   anchor
       $tag = $SVG->anchor(%attributes)

       Generate an anchor element. Anchors are put around objects to make them
       'live' (i.e. clickable). It therefore requires a drawn object or group
       element as a child.

       optional anchor attributes

       the following attributes are expected for anchor tags (any any tags
       which use -href links):

   -href    required =head2 -type    optional =head2 -role    optional =head2
       -title	optional =head2 -show	 optional =head2 -arcrole optional
       =head2 -actuate optional =head2 target	optional
       For more information on the options, refer to the w3c XLink
       specification at <http://www.w3.org/TR/xlink/>

       Example:

	   # generate an anchor
	   $tag = $SVG->anchor(
		-href=>'http://here.com/some/simpler/SVG.SVG'
		-title => 'new window 2 example title',
		-actuate => 'onLoad',
		-show=> 'embed',

	   );

       for more information about the options above, refer to Link  section in
       the SVG recommendation: <http://www.w3.org/TR/SVG11/linking.html#Links>

	   # add a circle to the anchor. The circle can be clicked on.
	   $tag->circle(cx=>10,cy=>10,r=>1);

	   # more complex anchor with both URL and target
	   $tag = $SVG->anchor(
		 -href	 => 'http://somewhere.org/some/other/page.html',
		 target => 'new_window'
	   );

   circle
       $tag = $SVG->circle(%attributes)

       Draw a circle at (cx,cy) with radius r.

       Example:

	   my $tag = $SVG->circlecx=>4, cy=>2, r=>1);

   ellipse
       $tag = $SVG->ellipse(%attributes)

       Draw an ellipse at (cx,cy) with radii rx,ry.

       Example:

	   my $tag = $SVG->ellipse(
	       cx=>10, cy=>10,
	       rx=>5, ry=>7,
	       id=>'ellipse',
	       style=>{
		   'stroke'=>'red',
		   'fill'=>'green',
		   'stroke-width'=>'4',
		   'stroke-opacity'=>'0.5',
		   'fill-opacity'=>'0.2'
	       }
	   );

   rectangle (alias: rect)
       $tag = $SVG->rectangle(%attributes)

       Draw a rectangle at (x,y) with width 'width' and height 'height' and
       side radii 'rx' and 'ry'.

       Example:

	   $tag = $SVG->rectangle(
	       x=>10, y=>20,
	       width=>4, height=>5,
	       rx=>5.2, ry=>2.4,
	       id=>'rect_1'
	   );

   image
	$tag = $SVG->image(%attributes)

       Draw an image at (x,y) with width 'width' and height 'height' linked to
       image resource '-href'. See also "use".

       Example:

	   $tag = $SVG->image(
	       x=>100, y=>100,
	       width=>300, height=>200,
	       '-href'=>"image.png", #may also embed SVG, e.g. "image.SVG"
	       id=>'image_1'
	   );

       Output:

	   <image xlink:href="image.png" x="100" y="100" width="300" height="200"/>

   use
       $tag = $SVG->use(%attributes)

       Retrieve the content from an entity within an SVG document and apply it
       at (x,y) with width 'width' and height 'height' linked to image
       resource '-href'.

       Example:

	   $tag = $SVG->use(
	       x=>100, y=>100,
	       width=>300, height=>200,
	       '-href'=>"pic.SVG#image_1",
	       id=>'image_1'
	   );

       Output:

	   <use xlink:href="pic.SVG#image_1" x="100" y="100" width="300" height="200"/>

       According to the SVG specification, the 'use' element in SVG can point
       to a single element within an external SVG file.

   polygon
       $tag = $SVG->polygon(%attributes)

       Draw an n-sided polygon with vertices at points defined by a string of
       the form 'x1,y1,x2,y2,x3,y3,... xy,yn'. The "get_path" method is
       provided as a convenience to generate a suitable string from coordinate
       data.

       Example:

	   # a five-sided polygon
	   my $xv = [0,2,4,5,1];
	   my $yv = [0,0,2,7,5];

	   $points = $a->get_path(
	       x=>$xv, y=>$yv,
	       -type=>'polygon'
	   );

	   $c = $a->polygon(
	       %$points,
	       id=>'pgon1',
	       style=>\%polygon_style
	   );

       SEE ALSO:

       "polyline", "path", "get_path".

   polyline
       $tag = $SVG->polyline(%attributes)

       Draw an n-point polyline with points defined by a string of the form
       'x1,y1,x2,y2,x3,y3,... xy,yn'. The "get_path" method is provided as a
       convenience to generate a suitable string from coordinate data.

       Example:

	   # a 10-pointsaw-tooth pattern
	   my $xv = [0,1,2,3,4,5,6,7,8,9];
	   my $yv = [0,1,0,1,0,1,0,1,0,1];

	   $points = $a->get_path(
	       x=>$xv, y=>$yv,
	       -type=>'polyline',
	       -closed=>'true' #specify that the polyline is closed.
	   );

	   my $tag = $a->polyline (
	       %$points,
	       id=>'pline_1',
	       style=>{
		   'fill-opacity'=>0,
		   'stroke-color'=>'rgb(250,123,23)'
	       }
	   );

   line
       $tag = $SVG->line(%attributes)

       Draw a straight line between two points (x1,y1) and (x2,y2).

       Example:

	   my $tag = $SVG->line(
	       id=>'l1',
	       x1=>0, y1=>10,
	       x2=>10, y2=>0
	   );

       To draw multiple connected lines, use "polyline".

   text
       $text = $SVG->text(%attributes)->cdata();

       $text_path = $SVG->text(-type=>'path'); $text_span =
       $text_path->text(-type=>'span')->cdata('A'); $text_span =
       $text_path->text(-type=>'span')->cdata('B'); $text_span =
       $text_path->text(-type=>'span')->cdata('C');

       define the container for a text string to be drawn in the image.

       Input:
	   -type     = path type (path | polyline | polygon)
	   -type     = text element type  (path | span | normal [default])

       Example:

	   my $text1 = $SVG->text(
	       id=>'l1', x=>10, y=>10
	   )->cdata('hello, world');

	   my $text2 = $SVG->text(
	       id=>'l1', x=>10, y=>10, -cdata=>'hello, world');

	   my $text = $SVG->text(
	       id=>'tp', x=>10, y=>10 -type=>path)
	       ->text(id=>'ts' -type=>'span')
	       ->cdata('hello, world');

       SEE ALSO:

	   L<"desc">, L<"cdata">.

   title
       $tag = $SVG->title(%attributes)

       Generate the title of the image.

       Example:

	   my $tag = $SVG->title(id=>'document-title')->cdata('This is the title');

   desc
       $tag = $SVG->desc(%attributes)

       Generate the description of the image.

       Example:

	   my $tag = $SVG->desc(id=>'document-desc')->cdata('This is a description');

   comment
       $tag = $SVG->comment(@comments)

       Generate the description of the image.

       Example:

	   my $tag = $SVG->comment('comment 1','comment 2','comment 3');

       $tag = $SVG->pi(@pi)

       Generate (or adds) a set of processing instructions which go at the
       beginning of the document after the xml start tag

       Example:

	   my $tag = $SVG->pi('instruction one','instruction two','instruction three');

	   returns:
	     <?instruction one?>
	     <?instruction two?>
	     <?instruction three?>

   script
       $tag = $SVG->script(%attributes)

       Generate a script container for dynamic (client-side) scripting using
       ECMAscript, Javascript or other compatible scripting language.

       Example:

	   my $tag = $SVG->script(type=>"text/ecmascript");

	   # populate the script tag with cdata
	   # be careful to manage the javascript line ends.
	   # qq|text| or qqXtextX where text is the script
	   # works well for this.

	   $tag->CDATA(qq|function d(){
	       //simple display function
	       for(cnt = 0; cnt < d.length; cnt++)
		   document.write(d[cnt]);//end for loop
	       document.write("<BR>");//write a line break
	     }|
	   );
	   # create an svg external script reference to an outside file
	   my $tag2 = SVG->script(type=>"text/ecmascript", -href="/scripts/example.es");

   style
       $tag = $SVG->style(%attributes)

       Generate a style container for inline or xlink:href based styling
       instructions

       Example:

	   my $tag = $SVG->style(type=>"text/css");

	   # populate the style tag with cdata
	   # be careful to manage the line ends.
	   # qq|text| or qqXtextX where text is the script
	   # works well for this.

	   $tag1->CDATA(qq|
	       rect	fill:red;stroke:green;
	       circle	fill:red;stroke:orange;
	       ellipse	fill:none;stroke:yellow;
	       text	fill:black;stroke:none;
	       |);

	   # create a external css stylesheet reference
	   my $tag2 = $SVG->style(type=>"text/css", -href="/resources/example.css");

   path
       $tag = $SVG->path(%attributes)

       Draw a path element. The path vertices may be imputed as a parameter or
       calculated usingthe "get_path" method.

       Example:

	   # a 10-pointsaw-tooth pattern drawn with a path definition
	   my $xv = [0,1,2,3,4,5,6,7,8,9];
	   my $yv = [0,1,0,1,0,1,0,1,0,1];

	   $points = $a->get_path(
	       x => $xv,
	       y => $yv,
	       -type   => 'path',
	       -closed => 'true'  #specify that the polyline is closed
	   );

	   $tag = $SVG->path(
	       %$points,
	       id    => 'pline_1',
	       style => {
		   'fill-opacity' => 0,
		   'fill-color'	  => 'green',
		   'stroke-color' => 'rgb(250,123,23)'
	       }
	   );

       SEE ALSO:

       "get_path".

   get_path
       $path = $SVG->get_path(%attributes)

       Returns the text string of points correctly formatted to be
       incorporated into the multi-point SVG drawing object definitions (path,
       polyline, polygon)

       Input: attributes including:

	   -type     = path type (path | polyline | polygon)
	   x	     = reference to array of x coordinates
	   y	     = reference to array of y coordinates

       Output: a hash reference consisting of the following key-value pair:

	   points    = the appropriate points-definition string
	   -type     = path|polygon|polyline
	   -relative = 1 (define relative position rather than absolute position)
	   -closed   = 1 (close the curve - path and polygon only)

       Example:

	   #generate an open path definition for a path.
	   my ($points,$p);
	   $points = $SVG->get_path(x=>\@x,y=>\@y,-relative=>1,-type=>'path');

	   #add the path to the SVG document
	   my $p = $SVG->path(%$path, style=>\%style_definition);

	   #generate an closed path definition for a a polyline.
	   $points = $SVG->get_path(
	       x=>\@x,
	       y=>\@y,
	       -relative=>1,
	       -type=>'polyline',
	       -closed=>1
	   ); # generate a closed path definition for a polyline

	   # add the polyline to the SVG document
	   $p = $SVG->polyline(%$points, id=>'pline1');

       Aliases: get_path set_path

   animate
       $tag = $SVG->animate(%attributes)

       Generate an SMIL animation tag. This is allowed within any nonempty
       tag. Refer\ to the W3C for detailed information on the subtleties of
       the animate SMIL commands.

       Inputs: -method = Transform | Motion | Color

	 my $an_ellipse = $SVG->ellipse(
	     cx=>30,cy=>150,rx=>10,ry=>10,id=>'an_ellipse',
	     stroke=>'rgb(130,220,70)',fill=>'rgb(30,20,50)');

	 $an_ellipse-> animate(
	     attributeName=>"cx",values=>"20; 200; 20",dur=>"10s", repeatDur=>'indefinite');

	 $an_ellipse-> animate(
	     attributeName=>"rx",values=>"10;30;20;100;50",
	     dur=>"10s", repeatDur=>'indefinite');

	 $an_ellipse-> animate(
	     attributeName=>"ry",values=>"30;50;10;20;70;150",
	     dur=>"15s", repeatDur=>'indefinite');

	 $an_ellipse-> animate(
	     attributeName=>"rx",values=>"30;75;10;100;20;20;150",
	     dur=>"20s", repeatDur=>'indefinite');

	 $an_ellipse-> animate(
	     attributeName=>"fill",values=>"red;green;blue;cyan;yellow",
	     dur=>"5s", repeatDur=>'indefinite');

	 $an_ellipse-> animate(
	     attributeName=>"fill-opacity",values=>"0;1;0.5;0.75;1",
	     dur=>"20s",repeatDur=>'indefinite');

	 $an_ellipse-> animate(
	     attributeName=>"stroke-width",values=>"1;3;2;10;5",
	     dur=>"20s",repeatDur=>'indefinite');

   group
       $tag = $SVG->group(%attributes)

       Define a group of objects with common properties. groups can have
       style, animation, filters, transformations, and mouse actions assigned
       to them.

       Example:

	   $tag = $SVG->group(
	       id	 => 'xvs000248',
	       style	 => {
		   'font'      => [ qw( Arial Helvetica sans ) ],
		   'font-size' => 10,
		   'fill'      => 'red',
	       },
	       transform => 'rotate(-45)'
	   );

   defs
       $tag = $SVG->defs(%attributes)

       define a definition segment. A Defs requires children when defined
       using SVG.pm Example:

	   $tag = $SVG->defs(id	 =>  'def_con_one',);

   style
       $SVG->style(%styledef)

       Sets/Adds style-definition for the following objects being created.

       Style definitions apply to an object and all its children for all
       properties for which the value of the property is not redefined by the
       child.

   mouseaction
       $SVG->mouseaction(%attributes)

       Sets/Adds mouse action definitions for tag

       $SVG->attrib($name, $value)

       Sets/Adds attributes of an element.

       Retrieve an attribute:

	   $svg->attrib($name);

       Set a scalar attribute:

	   $SVG->attrib $name, $value

       Set a list attribute:

	   $SVG->attrib $name, \@value

       Set a hash attribute (i.e. style definitions):

	   $SVG->attrib $name, \%value

       Remove an attribute:

	   $svg->attrib($name,undef);

       Aliases: attr attribute

   cdata
       $SVG->cdata($text)

       Sets cdata to $text. SVG.pm allows you to set cdata for any tag. If the
       tag is meant to be an empty tag, SVG.pm will not complain, but the
       rendering agent will fail. In the SVG DTD, cdata is generally only
       meant for adding text or script content.

       Example:

	   $SVG->text(
	       style => {
		   'font'      => 'Arial',
		   'font-size' => 20
	       })->cdata('SVG.pm is a perl module on CPAN!');

	   my $text = $SVG->text(style=>{'font'=>'Arial','font-size'=>20});
	   $text->cdata('SVG.pm is a perl module on CPAN!');

       Result:

	   E<lt>text style="font: Arial; font-size: 20" E<gt>SVG.pm is a perl module on CPAN!E<lt>/text E<gt>

       SEE ALSO:

	 L<"CDATA"> L<"desc">, L<"title">, L<"text">, L<"script">.

   CDATA
	$script = $SVG->script();
	$script->CDATA($text);

       Generates a <![CDATA[ ... ]]> tag with the contents of $text rendered
       exactly as supplied. SVG.pm allows you to set cdata for any tag. If the
       tag is meant to be an empty tag, SVG.pm will not complain, but the
       rendering agent will fail. In the SVG DTD, cdata is generally only
       meant for adding text or script content.

       Example:

	     my $text = qqX
	       var SVGDoc;
	       var groups = new Array();
	       var last_group;

	       /*****
	       *
	       *   init
	       *
	       *   Find this SVG's document element
	       *   Define members of each group by id
	       *
	       *****/
	       function init(e) {
		   SVGDoc = e.getTarget().getOwnerDocument();
		   append_group(1, 4, 6); // group 0
		   append_group(5, 4, 3); // group 1
		   append_group(2, 3);	  // group 2
	       }X;
	       $SVG->script()->CDATA($text);

       Result:

	   E<lt>script E<gt>
	     <gt>![CDATA[
	       var SVGDoc;
	       var groups = new Array();
	       var last_group;

	       /*****
	       *
	       *   init
	       *
	       *   Find this SVG's document element
	       *   Define members of each group by id
	       *
	       *****/
	       function init(e) {
		   SVGDoc = e.getTarget().getOwnerDocument();
		   append_group(1, 4, 6); // group 0
		   append_group(5, 4, 3); // group 1
		   append_group(2, 3);	  // group 2
	       }
	       ]]E<gt>

       SEE ALSO:

	 L<"cdata">, L<"script">.

   filter
       $tag = $SVG->filter(%attributes)

       Generate a filter. Filter elements contain "fe" filter sub-elements.

       Example:

	   my $filter = $SVG->filter(
	       filterUnits=>"objectBoundingBox",
	       x=>"-10%",
	       y=>"-10%",
	       width=>"150%",
	       height=>"150%",
	       filterUnits=>'objectBoundingBox'
	   );

	   $filter->fe();

       SEE ALSO:

       "fe".

   fe
       $tag = $SVG->fe(-type=>'type', %attributes)

       Generate a filter sub-element. Must be a child of a "filter" element.

       Example:

	   my $fe = $SVG->fe(
	       -type	 => 'diffuselighting'  # required - element name in lower case omiting 'fe'
	       id	 => 'filter_1',
	       style	 => {
		   'font'      => [ qw(Arial Helvetica sans) ],
		   'font-size' => 10,
		   'fill'      => 'red',
	       },
	       transform => 'rotate(-45)'
	   );

       Note that the following filter elements are currently supported: Also
       note that the elelemts are defined in lower case in the module, but as
       of version 2.441, any case combination is allowed.

   * feBlend
   * feColorMatrix
   * feComponentTransfer
   * feComposite
   * feConvolveMatrix
   * feDiffuseLighting
   * feDisplacementMap
   * feDistantLight
   * feFlood
   * feFuncA
   * feFuncB
   * feFuncG
   * feFuncR
   * feGaussianBlur
   * feImage
   * feMerge
   * feMergeNode
   * feMorphology
   * feOffset
   * fePointLight
   * feSpecularLighting
   * feSpotLight
   * feTile
   * feTurbulence
       SEE ALSO:

       "filter".

   pattern
       $tag = $SVG->pattern(%attributes)

       Define a pattern for later reference by url.

       Example:

	   my $pattern = $SVG->pattern(
	       id     => "Argyle_1",
	       width  => "50",
	       height => "50",
	       patternUnits	   => "userSpaceOnUse",
	       patternContentUnits => "userSpaceOnUse"
	   );

   set
       $tag = $SVG->set(%attributes)

       Set a definition for an SVG object in one section, to be referenced in
       other sections as needed.

       Example:

	   my $set = $SVG->set(
	       id     => "Argyle_1",
	       width  => "50",
	       height => "50",
	       patternUnits	   => "userSpaceOnUse",
	       patternContentUnits => "userSpaceOnUse"
	   );

   stop
       $tag = $SVG->stop(%attributes)

       Define a stop boundary for "gradient"

       Example:

	  my $pattern = $SVG->stop(
	      id     => "Argyle_1",
	      width  => "50",
	      height => "50",
	      patternUnits	  => "userSpaceOnUse",
	      patternContentUnits => "userSpaceOnUse"
	  );

       $tag = $SVG->gradient(%attributes)

       Define a color gradient. Can be of type linear or radial

       Example:

	   my $gradient = $SVG->gradient(
	       -type => "linear",
	       id    => "gradient_1"
	   );

GENERIC ELEMENT METHODS
       The following elements are generically supported by SVG:

   * altGlyph
   * altGlyphDef
   * altGlyphItem
   * clipPath
   * color-profile
   * cursor
   * definition-src
   * font-face-format
   * font-face-name
   * font-face-src
   * font-face-url
   * foreignObject
   * glyph
   * glyphRef
   * hkern
   * marker
   * mask
   * metadata
   * missing-glyph
   * mpath
   * switch
   * symbol
   * tref
   * view
   * vkern
       See e.g. "pattern" for an example of the use of these methods.

perl v5.14.1			  2008-04-21		       SVG::Element(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net