Index: PostScript-Simple-0.07/lib/PostScript/Simple.pm --- PostScript-Simple-0.07/lib/PostScript/Simple.pm.orig 2005-05-04 16:42:28.187771138 +0200 +++ PostScript-Simple-0.07/lib/PostScript/Simple.pm 2005-05-04 16:58:39.923776000 +0200 @@ -1322,10 +1322,21 @@ my ($x, $y, $r) = @_; - unless (@_ == 3) + if (@_ == 4) { - $self->_error("circle: wrong number of arguments"); - return 0; + if (defined($opt{'filled'})) + { + $opt{'filled'} = 1; + } + else + { + $opt{'filled'} = 0; + } + } + elsif (@_ != 3) + { + $self->_error( "wrong number of args for line" ); + return 0; } if (!$self->{usedcircle}) @@ -1378,7 +1385,7 @@ my ($x, $y, $r, $a, $text) = @_; - unless (@_ == 5) { + unless (@_ == 5 || @_ == 6) { $self->_error("circletext: wrong number of arguments"); return 0; } @@ -1499,16 +1506,23 @@ my ($x1, $y1, $x2, $y2) = @_; - unless (@_ == 4) { - $self->_error("box: wrong number of arguments"); - return 0; + if (@_ == 5) + { + if (defined($opt{'filled'})) + { + $opt{'filled'} = 1; + } + else + { + $opt{'filled'} = 0; + } } - - if (!defined($opt{'filled'})) + elsif (@_ != 4) { - $opt{'filled'} = 0; + $self->_error( "wrong number of args for line" ); + return 0; } - + unless ($self->{usedbox}) { $self->{psfunctions} .= "/box { @@ -1606,7 +1616,7 @@ %opt = %{; shift}; } - unless ( @_ == 3 ) + unless ( @_ == 3 || @_ == 4 ) { # check required params first $self->_error("text: wrong number of arguments"); return 0; @@ -1818,7 +1828,7 @@ my ($file, $x1, $y1, $x2, $y2) = @_; - unless (@_ == 5) { + unless (@_ == 5 || @_ == 6) { $self->_error("importepsfile: wrong number of arguments"); return 0; } Index: PDF-Table-0.9.3/lib/PDF/Table.pm --- PDF-Table-0.9.3/lib/PDF/Table.pm.orig 2006-12-27 15:44:26 +0100 +++ PDF-Table-0.9.3/lib/PDF/Table.pm 2007-10-31 14:16:23 +0100 @@ -384,15 +384,14 @@ # Keep a running total of the overall min and max widths $col_props->[$j]->{min_w} = $col_props->[$j]->{min_w} || 0; - $col_props->[$j]->{max_w} = $col_props->[$j]->{max_w} || 0; + $col_props->[$j]->{max_w} = $col_props->[$j]->{max_w} || 99999999; if( $min_col_w > $col_props->[$j]->{min_w} ) { # Calculated Minimum Column Width is more than user-defined $col_props->[$j]->{min_w} = $min_col_w ; } - if( $max_col_w > $col_props->[$j]->{max_w} ) - { # Calculated Maximum Column Width is more than user-defined - $col_props->[$j]->{max_w} = $max_col_w ; + if( $col_props->[$j]->{min_w} > $col_props->[$j]->{max_w} ) { + $col_props->[$j]->{max_w} = $col_props->[$j]->{min_w}; } }#End of for(my $j.... $row_props->[$rows_counter] = $column_widths; @@ -599,11 +598,11 @@ $background_color ) { $gfx_bg->rect( $cur_x, $cur_y-$row_h, $calc_column_widths->[$j], $row_h); - if ( $cell_props->[$row_cnt][$j]->{'background_color'} && !$first_row ) + if ( $cell_props->[$row_cnt][$j]->{'background_color'} && !($first_row and ref $header_props) ) { $gfx_bg->fillcolor($cell_props->[$row_cnt][$j]->{'background_color'}); } - elsif( $col_props->[$j]->{'background_color'} && !$first_row ) + elsif( $col_props->[$j]->{'background_color'} && !($first_row and ref $header_props) ) { $gfx_bg->fillcolor($col_props->[$j]->{'background_color'}); } @@ -621,7 +620,7 @@ $gfx->move( $xbase , $cur_y ); $gfx->hline( $xbase + $width ); $rows_counter++; - $row_cnt++ unless ( $first_row ); + $row_cnt++ unless ( $first_row and ref $header_props ); $first_row = 0; }# End of while(scalar(@{$data}) and $cur_y-$row_h > $bot_marg) @@ -679,12 +678,23 @@ } - my $span = 0; - # Calculate how much can be added to every column to fit the available width - $span = ($avail_width - $min_width) / scalar( @$col_props); - for(my $j = 0; $j < scalar(@$col_props); $j++ ) - { - $calc_widths->[$j] = $col_props->[$j]->{min_w} + $span; + my $expansion_width = ($avail_width - $min_width); + my $expansion_cols = scalar(@$col_props); + my $expansion_span = int($expansion_width / $expansion_cols); + foreach my $j ( sort { $col_props->[$a]->{max_w} <=> $col_props->[$b]->{max_w} } (0..$#{$col_props}) ) { + $calc_widths->[$j] = $col_props->[$j]->{min_w}; + my $expansion_possible = $col_props->[$j]->{max_w} - $col_props->[$j]->{min_w}; + if ($expansion_span <= $expansion_possible) { + $calc_widths->[$j] += $expansion_span; + $expansion_width -= $expansion_span; + $expansion_cols--; + } + else { + $calc_widths->[$j] += $expansion_possible; + $expansion_width -= $expansion_possible; + $expansion_cols--; + $expansion_span = int($expansion_width / $expansion_cols); + } } return ($calc_widths,$avail_width);