Diff for /loncom/cgi/plot.gif between versions 1.1 and 1.2

version 1.1, 2001/12/07 22:52:38 version 1.2, 2001/12/10 15:45:54
Line 24 Line 24
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   ###########################################################################
   #
 # CGI-BIN interface to GD, used for making mathematical plots.  # CGI-BIN interface to GD, used for making mathematical plots.
 #  #
 # User specifies the following variables (given are defaults):  # User specifies the following variables (given are defaults):
Line 33 Line 35
 #    xmax     = " 10.0"  #    xmax     = " 10.0"
 #    ymin     = "-10.0"  #    ymin     = "-10.0"
 #    ymax     = " 10.0"  #    ymax     = " 10.0"
   #    transparent   (doesn't work with gif?)
 #    frame      #    frame    
 #    drawaxes   #    drawaxes 
 #    drawtics   #    drawtics 
Line 51 Line 54
 #    size of a labelN is one of :  #    size of a labelN is one of :
 #       giant, large, medium, small, tiny  #       giant, large, medium, small, tiny
 #  #
   ###########################################################################
 use GD;  use GD;
   
 my @inputs = split(/&/,$ENV{'QUERY_STRING'});  my @inputs = split(/&/,$ENV{'QUERY_STRING'});
Line 73  $axis->{'ylen'} = $axis->{'ymax'} - $axi Line 77  $axis->{'ylen'} = $axis->{'ymax'} - $axi
 $vtic_every = &grab('vtic_every',1.0,\%In);  $vtic_every = &grab('vtic_every',1.0,\%In);
 $htic_every = &grab('htic_every',1.0,\%In);  $htic_every = &grab('htic_every',1.0,\%In);
   
 my $image = new GD::Image($height,$width);  my $image = new GD::Image($width,$height);
   
 # allocate standard colors  # allocate standard colors
 my $white = $image->colorAllocate(255,255,255);  my $white = $image->colorAllocate(255,255,255);
 my $black = $image->colorAllocate(  0,  0,  0);         my $black = $image->colorAllocate(  0,  0,  0);       
   
 # Draw a black frame around the picture  # Draw a black frame around the picture
 &drawtics($htic_every,$vtic_every) if (exists($In{"drawtics"}));  &drawtics($htic_every,$vtic_every) if (exists($In{'drawtics'}));
 &drawaxes($axis)                   if (exists($In{"drawaxis"}));  &drawaxes($axis)                   if (exists($In{'drawaxis'}));
 &frame(1)                          if (exists($In{'frame'}));  &drawframe(1)                          if (exists($In{'frame'}));
   # make the background transparent if needed (this doesn't work, at least
   # not for gif images, don't know if it works for png)
   $image->transparent($white)       if (exists($In{'transparent'}));
   
 ## Take care of labels and data series  ## Take care of labels and data series
 foreach (keys %In) {  foreach (keys %In) {
Line 108  foreach (keys %In) { Line 115  foreach (keys %In) {
     }      }
 }  }
   
 # make the background transparent and interlaced  
 $image->transparent($white);  
   
 # make sure we are writing to a binary stream  
 binmode STDOUT;  
   
 # Convert the image to PNG and print it on standard output  # Tell the browser our mime-type
 print <<END;  print <<END;
 Content-type: image/png  Content-type: image/gif
   
 END  END
   
 my $BinaryData=$image->plot(\@data)->png;  my $BinaryData=$image->png;
 undef $image;  undef $image;
 binmode(STDOUT);  binmode(STDOUT);
 open IMG,"|pngtopnm|ppmtogif 2>/dev/null"; # convert into a gif image  open IMG,"|pngtopnm|ppmtogif 2>/dev/null"; # convert into a gif image
Line 166  sub drawtics{ Line 168  sub drawtics{
     my ($htic_every,$vtic_every) = @_;      my ($htic_every,$vtic_every) = @_;
     my ($width,$height) = $image->getBounds();      my ($width,$height) = $image->getBounds();
           
     $ticwidth  = ($width  > 99 ? 10 : int($width /10) + 1);      $ticwidth  = ($width  > 99 ? 5 : int($width /20) + 1);
     $ticheight = ($height > 99 ? 10 : int($height/10));      $ticheight = ($height > 99 ? 5 : int($height/20) + 1);
   
     # Do tics along y-axis      # Do tics along y-axis
     for ($ntic = 0; $ntic <=int($axis->{"ylen"}/$vtic_every); $ntic++){      for ($ntic = 0; $ntic <=int($axis->{"ylen"}/$vtic_every); $ntic++){
Line 196  sub drawcurve{ Line 198  sub drawcurve{
     }      }
 }  }
   
 sub frame{  sub drawframe{
     # Draw a frame around the picture.      # Draw a frame around the picture.
     my ($xoffset,$yoffset) = @_;      my ($xoffset,$yoffset) = @_;
     $xoffset = $xoffset || 1;      $xoffset = $xoffset || 1;

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>