PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/thread-self/root/proc/self/root/proc/self/root/usr/share/perl5/vendor_perl/Image/Info/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/thread-self/root/proc/self/root/proc/self/root/usr/share/perl5/vendor_perl/Image/Info/SVG.pm |
# -*- perl -*- # # Author: Slaven Rezic # # Copyright (C) 2009,2011,2016,2017 Slaven Rezic. All rights reserved. # This package is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # package Image::Info::SVG; use strict; use vars qw($VERSION @PREFER_MODULE $USING_MODULE); $VERSION = '2.04'; @PREFER_MODULE = qw(Image::Info::SVG::XMLLibXMLReader Image::Info::SVG::XMLSimple ) if !@PREFER_MODULE; TRY_MODULE: { for my $try_module (@PREFER_MODULE) { if (eval qq{ require $try_module; 1 }) { my $sub = $try_module . '::process_file'; no strict 'refs'; *process_file = \&{$sub}; $USING_MODULE = $try_module; last TRY_MODULE; } } die "Cannot require any of @PREFER_MODULE...\n"; } 1; __END__ =pod =head1 NAME Image::Info::SVG - SVG support for Image::Info =head1 SYNOPSIS use Image::Info qw(image_info dim); my $info = image_info("image.svg"); if (my $error = $info->{error}) { die "Can't parse image info: $error\n"; } my $title = $info->{SVG_Title}; my($w, $h) = dim($info); =head1 DESCRIPTION This modules supplies the standard key names except for BitsPerSample, Compression, Gamma, Interlace, LastModificationTime, as well as: =over =item ImageDescription The image description, corresponds to <desc>. =item SVG_Image A scalar or reference to an array of scalars containing the URI's of embedded images (JPG or PNG) that are embedded in the image. =item SVG_StandAlone Whether or not the image is standalone. =item SVG_Title The image title, corresponds to <title> =item SVG_Version The URI of the DTD the image conforms to. =back =head1 METHODS =head2 process_file() $info->process_file($source, $options); Processes one file and sets the found info fields in the C<$info> object. =head1 FILES This module requires either L<XML::LibXML::Reader> or L<XML::Simple>. =head1 COMPATIBILITY Previous versions (until Image-Info-1.28) used L<XML::Simple> as the underlying parser. Since Image-Info-1.29 the default parser is L<XML::LibXML::Reader> which is much more faster, memory-efficient, and does not rely on regular expressions for some aspects of XML parsing. If for some reason you need the old parser, you can force it by setting the variable C<@Image::Info::SVG::PREFER_MODULE> as early as possible: use Image::Info; @Image::Info::SVG::PREFER_MODULE = qw(Image::Info::SVG::XMLSimple Image::Info::SVG::XMLLibXMLReader); The variable C<$Image::Info::SVG::USING_MODULE> can be queried to see which parser is in use (after B<Image::Info::SVG> is required). Since 1.38_50 processing of XML external entities (XXE) is not done anymore for security reasons in both backends (B<Image::Info::SVG::XMLLibXMLReader> and B<Image::Info::SVG::XMLSimple>). Controlling XXE processing behavior in B<XML::Simple> is not really possible (see L<https://rt.cpan.org/Ticket/Display.html?id=83794>), so as a workaround the underlying SAX parser is fixed to L<XML::SAX::PurePerl> which is uncapable of processing external entities E<0x2014> but unfortunately it is also a slow parser. =head1 SEE ALSO L<Image::Info>, L<XML::LibXML::Reader>, L<XML::Simple>, L<XML::SAX::PurePerl> =head1 NOTES For more information about SVG see L<http://www.w3.org/Graphics/SVG/> Random notes: Colors # iterate over polygon,rect,circle,ellipse,line,polyline,text for style->stroke: style->fill:? # and iterate over each of these within <g> too?! and recurse?! # append <color>'s # perhaps even deep recursion through <svg>'s? ColorProfile <color-profile> RenderingIntent ? requiredFeatures requiredExtensions systemLanguage =head1 AUTHOR Jerrad Pierce <belg4mit@mit.edu>/<webmaster@pthbb.org> wrote the original code based on L<XML::Simple> Slaven Rezic <srezic@cpan.org> wrote the code using L<XML::LibXML::Reader> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =begin register MAGIC: /^(<\?xml|[\012\015\t ]*<svg\b)/ Provides a plethora of attributes and metadata of an SVG vector graphic. =end register =cut