#!/usr/bin/perl -w
use strict;
use SOAP::Lite;
use SVG;
my $googleSearch = SOAP::Lite->service('file:GoogleSearch.wsdl');
my $key = '00000000000000000000000000000000';
my $query = 'exploring XML';
$ENV{HTTP_proxy} = 'http://proxy.puma-ag.lan:3128';
my $result = $googleSearch->doGoogleSearch($key, $query, 0, 10, 'false', '', 'false', '', 'latin1', 'latin1');

my $i = 0;
my $svg = new SVG;
foreach my $e (@{$result->{'resultElements'}}) {
  svgelement($i, $svg, $e->{'summary'}, $e->{'title'}, $e->{'URL'}, $e->{'directoryCategory'}->{'fullViewableName'}, $e->{'directoryTitle'}, $e->{'snippet'});
  $i++;
#  foreach my $key (keys(%$e)) {
#    print $key, ': ', $e->{$key}, "\n";
#  }
}
open(FH, '>g.svg');
print FH $svg->render();
close(FH);

sub svgelement {
  my ($i, $svg, $summary, $title, $url, $dirname, $dirtitle, $dirsnippet) = @_;
  if ($i > 8) { return; }
  my @pos = ([1,1],[1,0],[2,0],[2,1],[2,2],[1,2],[0,2],[0,1],[0,0]);
  my $w = 200;
  my $h = 150;
  $svg->rect(x=>$w*$pos[$i][0], y=>$h*$pos[$i][1], width=>$w, height=>$h, stroke=>'black', fill=>'white');
  my $tag = $svg->anchor(-href=>$url);
  addtext($tag, stripHTML($title), 12, $w*$pos[$i][0], $h*$pos[$i][1]);
  addtext($tag, stripHTML($dirsnippet), 60, $w*$pos[$i][0], $h*$pos[$i][1]);
}

sub stripHTML {
  my ($str) = @_;
  $str=~s/<.*?>//sg;
  return $str;
}

sub addtext {
  my ($tag, $str, $y, $w, $h) = @_;
  my @words = split(/ /, $str);
  my $line = '';
  my $row = 1;
  foreach my $word (@words) {
    if (length($line) + length($word) > 30) {
      $tag->text(x=>$w+2, y=>$h+$y+12*$row)->cdata($line);
      $row++;
      $line = '';
    }
    $line .= $word . ' ';
  }
  $tag->text(x=>$w+2, y=>$h+$y+12*$row)->cdata($line);
}
