The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

XML::SAX::SVGTransformer - SVG transformer

SYNOPSIS

    use XML::SAX::ParserFactory;
    use XML::SAX::SVGTransformer;
    use XML::SAX::Writer;

    my $output;
    my $writer = XML::SAX::Writer->new(
        Output         => \$output,
        QuoteCharacter => '"',
    );
    my $transformer = XML::SAX::SVGTransformer->new(
        Handler   => $writer,
        Transform => 'rotate(90)',
        Width     => 180,
    );
    my $parser = XML::SAX::ParserFactory->parser(
        Handler => $transformer,
    );
    $parser->parse_uri($file);

    say $transformer->info->{width};

DESCRIPTION

This SAX handler adds a transform attribute to an SVG image to make it rotate, flip, or resize. You can also use this to extract the size information of the image.

Internally, this adds a comment to keep the initial image size, and a group with a transformation attribute to wrap everything in the outermost svg tag.

METHODS

new

Creates a handler. Options specific to this handler are:

Width

An expected image width. The actual width may be different.

Height

An xpected image height. The actual height may be different.

You can set both Width and Height, but you usually get a better result when you specify only one of them.

KeepAspectRatio

If set to true, aspect ratio is kept when both Width and Height are set.

Transform

A string to indicate how to transform the image. Valid values are

rotate(\d), flipx, flipy, matrix(\d \d \d \d \d \d).

SessionId

This handler usually uses the same group if it finds a group it has added before. If SessionId is specified, it only reuses the group with the same id. Otherwise, it adds a new group to wrap the existing group.

info

Returns an informational hash reference.

AUTHOR

Kenichi Ishigaki, <ishigaki@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by Kenichi Ishigaki.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.