SVG viewer for Perl/Gtk2
zentara
created: 2006-01-28 16:12:24
Torsten Schoenfeld has posted the Perl interface to the Gnome Scalable Vector Graphics library... librsvg. [cpan://Gnome2-Rsvg]

You don't need the Gnome desktop to run this, but you may need a few Gnome libs, like libcroco, librsvg and the latest Cairo version. It displays SVG files, can zoom them, etc. This is a very basic example showing it's use.

#!/usr/bin/perl
use strict;
use warnings;
use Gtk2 '-init';
use Gnome2::Rsvg;

my $file = shift || die "Need and svg file as argument $!\n";

my $sw = Gtk2::ScrolledWindow->new(undef, undef);
$sw->set_policy('automatic','automatic');

my $mw = Gtk2::Window->new;
$mw->add($sw);

my $vp;

&load_image;

$mw->signal_connect('destroy', sub { Gtk2->main_quit });
Gtk2->main;

##########################################################
sub load_image {

$sw->remove($vp) if defined $vp;

# The easy way.
my $pb = Gnome2::Rsvg->pixbuf_from_file_at_zoom_with_max($file,10,10,1000,1000);
#          ($file, x_zoom, y_zoom, max_x, max_y )

my $img = Gtk2::Image->new_from_pixbuf($pb);

my ($x, $y) = ($pb->get_width, $pb->get_height);

$vp = Gtk2::Viewport->new(undef, undef);
$vp->add($img);
$sw->add($vp);

$mw->resize(500,500);

my $ha = Gtk2::Adjustment->new(50, 0, 1, 0.1, 0.9, 1);
my $va = Gtk2::Adjustment->new(50, 0, 1, 0.1, 0.9, 1);

$sw->set_hadjustment($ha);
$sw->set_vadjustment($va);

$mw->set_title("$file ${x}x${y}");
$mw->show_all();

return 1;
}


perlmonks.org content © perlmonks.org and zentara

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03