- round the dimensions used within the legend to integers to prevent
[imager-graph.git] / Graph.pm
index 1766777..bea06d9 100644 (file)
--- a/Graph.pm
+++ b/Graph.pm
@@ -19,15 +19,6 @@ defines the colors, text display information and fills based on both
 built-in styles and modifications supplied by the user to the draw()
 method.
 
-For best results you need a version of Imager after 0.38.  At the time
-of writing this is only available via CVS:
-
-  cvs -d :pserver:anoncvs@cvs.imager.perl.org:/u02/cvsroot login
-  cvs -d :pserver:anoncvs@cvs.imager.perl.org:/u02/cvsroot co Imager
-
-This provides extra file format support, fountain (gradient), hatch
-and image fills, and masked images.
-
 =over
 
 =cut
@@ -35,15 +26,9 @@ and image fills, and masked images.
 use strict;
 use vars qw($VERSION);
 use Imager qw(:handy);
+use Imager::Fountain;
 
-$VERSION = '0.03_01';
-
-my $fancy_fills = 0;
-my ($im_version) = ($Imager::VERSION =~ /(\d\.[\d_]+)/);
-if ($im_version > 0.38) {
-  ++$fancy_fills;
-  require 'Imager/Fountain.pm';
-}
+$VERSION = '0.05';
 
 # the maximum recursion depth in determining a color, fill or number
 use constant MAX_DEPTH => 10;
@@ -731,10 +716,7 @@ my %styles =
            blur=>undef,
           },
    },
-  );
-
-if ($fancy_fills) {
-  $styles{fount_lin} =
+   fount_lin =>
    {
     fills=>
     [
@@ -779,9 +761,9 @@ if ($fancy_fills) {
     fg=>'000000',
     bg=>'FFFFFF',
     features=>{ dropshadow=>1 },
-   };
-   $styles{fount_rad} =
-     {
+   },
+   fount_rad =>
+   {
     fills=>
     [
      { fountain=>'radial',
@@ -823,8 +805,8 @@ if ($fancy_fills) {
               colors=>[ NC('6060FF'), NC('60FF60') ]) },
     fg=>'000000',
     bg=>'FFFFFF',
-   };
-}
+   }
+  );
 
 =item $self->_style_setup(\%opts)
 
@@ -950,6 +932,7 @@ in the style and the product is returned.
 =back
 
 =cut
+
 sub _get_number {
   my ($self, $name, @depth) = @_;
 
@@ -998,6 +981,22 @@ sub _get_number {
   }
 }
 
+=item $self->_get_integer($name)
+
+Retrieves an integer from the style.  This is a simple wrapper around
+_get_number() that rounds the result to an integer.
+
+=cut
+
+sub _get_integer {
+  my ($self, $name, @depth) = @_;
+
+  my $number = $self->_get_number($name, @depth)
+    or return;
+
+  return sprintf("%.0f", $number);
+}
+
 =item _get_color($name)
 
 Returns a color object of the given name from the style hash.
@@ -1288,11 +1287,11 @@ sub _remove_box {
 sub _draw_legend {
   my ($self, $img, $labels, $chart_box) = @_;
 
-  defined(my $padding = $self->_get_number('legend.padding'))
+  defined(my $padding = $self->_get_integer('legend.padding'))
     or return;
-  my $patchsize = $self->_get_number('legend.patchsize')
+  my $patchsize = $self->_get_integer('legend.patchsize')
     or return;
-  defined(my $gap = $self->_get_number('legend.patchgap'))
+  defined(my $gap = $self->_get_integer('legend.patchgap'))
     or return;
   my $minrowsize = $patchsize + $gap;
   my ($width, $height) = (0,0);