Diff for /loncom/xml/lonplot.pm between versions 1.117 and 1.126

version 1.117, 2007/05/23 22:36:28 version 1.126, 2007/08/03 20:48:01
Line 117  my $pos_real_test  = Line 117  my $pos_real_test  =
 my $color_test     = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-fA-F]{6}$/};  my $color_test     = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-fA-F]{6}$/};
 my $onoff_test     = sub {$_[0]=~/^(on|off)$/};  my $onoff_test     = sub {$_[0]=~/^(on|off)$/};
 my $key_pos_test   = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/};  my $key_pos_test   = sub {$_[0]=~/^(top|bottom|right|left|outside|below| )+$/};
 my $sml_test       = sub {$_[0]=~/^(small|medium|large)$/};  my $sml_test       = sub {$_[0]=~/^(\d+|small|medium|large)$/};
 my $linestyle_test = sub {exists($linestyles{$_[0]})};  my $linestyle_test = sub {exists($linestyles{$_[0]})};
 my $words_test     = sub {$_[0]=~s/\s+/ /g;$_[0]=~/^([\w~!\@\#\$\%^&\*\(\)-=_\+\[\]\{\}:\;\'<>,\.\/\?\\]+ ?)+$/};  my $words_test     = sub {$_[0]=~s/\s+/ /g;$_[0]=~/^([\w~!\@\#\$\%^&\*\(\)-=_\+\[\]\{\}:\;\'<>,\.\/\?\\]+ ?)+$/};
   
Line 127  my $words_test     = sub {$_[0]=~s/\s+/ Line 127  my $words_test     = sub {$_[0]=~s/\s+/
 ##                                                               ##  ##                                                               ##
 ###################################################################  ###################################################################
 my @gnuplot_edit_order =   my @gnuplot_edit_order = 
     qw/alttag bgcolor fgcolor height width font transparent grid samples       qw/alttag bgcolor fgcolor height width texwidth fontface font texfont
     border align texwidth texfont plotcolor plottype gridtype lmargin rmargin      transparent grid samples 
       border align plotcolor plottype gridtype lmargin rmargin
     tmargin bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle      tmargin bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle
     pattern solid/;      pattern solid/;
   
Line 139  my %gnuplot_defaults = Line 140  my %gnuplot_defaults =
      alttag       => {       alttag       => {
  default     => 'dynamically generated plot',   default     => 'dynamically generated plot',
  test        => $words_test,   test        => $words_test,
  description => 'brief description of the plot',   description => 'Brief description of the plot',
       edit_type   => 'entry',        edit_type   => 'entry',
  size        => '40'   size        => '40'
  },   },
      height       => {       height       => {
  default     => 300,   default     => 300,
  test        => $int_test,   test        => $int_test,
  description => 'height of image (pixels)',   description => 'Height of image (pixels)',
       edit_type   => 'entry',        edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      width        => {       width        => {
  default     => 400,   default     => 400,
  test        => $int_test,   test        => $int_test,
  description => 'width of image (pixels)',   description => 'Width of image (pixels)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      bgcolor      => {       bgcolor      => {
  default     => 'xffffff',   default     => 'xffffff',
  test        => $color_test,    test        => $color_test, 
  description => 'background color of image (xffffff)',   description => 'Background color of image (xffffff)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      fgcolor      => {       fgcolor      => {
  default     => 'x000000',   default     => 'x000000',
  test        => $color_test,   test        => $color_test,
  description => 'foreground color of image (x000000)',   description => 'Foreground color of image (x000000)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
Line 203  my %gnuplot_defaults = Line 204  my %gnuplot_defaults =
  edit_type   => 'onoff'   edit_type   => 'onoff'
  },   },
      font         => {       font         => {
  default     => 'medium',   default     => '9',
  test        => $sml_test,   test        => $sml_test,
  description => 'Size of font to use',   description => 'Font size to use in web output (pts)',
  edit_type   => 'choice',   edit_type   => 'choice',
  choices     => ['small','medium','large']   choices     => [['5','5 (small)'],'6','7','8',['9','9 (medium)'],'10',['11','11 (large)'],'12','15']
  },   },
        fontface     => {
           default     => 'sans-serif',
           test        => sub {$_[0]=~/^(sans-serif|serif|classic)$/},
           description => 'Type of font to use',
           edit_type   => 'choice',
           choices     => ['sans-serif','serif', 'classic']
           },
      samples      => {       samples      => {
  default     => '100',   default     => '100',
  test        => $int_test,   test        => $int_test,
Line 219  my %gnuplot_defaults = Line 227  my %gnuplot_defaults =
      align        => {       align        => {
  default     => 'middle',   default     => 'middle',
  test        => sub {$_[0]=~/^(left|right|middle|center)$/},   test        => sub {$_[0]=~/^(left|right|middle|center)$/},
  description => 'alignment for image in html',   description => 'Alignment for image in HTML',
  edit_type   => 'choice',   edit_type   => 'choice',
  choices     => ['left','right','middle']   choices     => ['left','right','middle']
  },   },
Line 247  my %gnuplot_defaults = Line 255  my %gnuplot_defaults =
      pattern      => {       pattern      => {
  default     => '',   default     => '',
  test        => $int_test,   test        => $int_test,
  description => 'pattern value for boxes:',   description => 'Pattern value for boxes:',
  edit_type   => 'choice',   edit_type   => 'choice',
          choices     => [0,1,2,3,4,5,6]           choices     => [0,1,2,3,4,5,6]
          },           },
Line 274  my %gnuplot_defaults = Line 282  my %gnuplot_defaults =
          },           },
      gridtype     => {       gridtype     => {
  default     => 'Cartesian',   default     => 'Cartesian',
  test        => sub {$_[0]=~/^(Polar|Cartesian)$/},   test        => sub {$_[0]=~/^(Polar|Cartesian|Linear-Log|Log-Linear|Log-Log)$/},
  description => 'Grid type:',   description => 'Grid type:',
  edit_type   => 'choice',   edit_type   => 'choice',
          choices     => ['Cartesian','Polar']           choices     => ['Cartesian','Polar','Linear-Log','Log-Linear','Log-Log']
          },           },
      lmargin      => {       lmargin      => {
  default     => 'default',   default     => 'default',
Line 310  my %gnuplot_defaults = Line 318  my %gnuplot_defaults =
      boxwidth     => {       boxwidth     => {
  default     => '',   default     => '',
  test        => $real_test,    test        => $real_test, 
  description => 'width of boxes default auto',   description => 'Width of boxes, default is auto',
  edit_type   => 'entry',   edit_type   => 'entry',
          size        => '5'           size        => '5'
          },           },
Line 348  my %key_defaults = Line 356  my %key_defaults =
      pos   => {        pos   => { 
  default => 'top right',    default => 'top right', 
  test => $key_pos_test,    test => $key_pos_test, 
  description => 'position of the key on the plot',   description => 'Position of the key on the plot',
  edit_type   => 'choice',   edit_type   => 'choice',
  choices     => ['top left','top right','bottom left','bottom right',   choices     => ['top left','top right','bottom left','bottom right',
  'outside','below']   'outside','below']
Line 360  my %label_defaults = Line 368  my %label_defaults =
      xpos    => {       xpos    => {
  default => 0,   default => 0,
  test => $real_test,   test => $real_test,
  description => 'x position of label (graph coordinates)',   description => 'X position of label (graph coordinates)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      ypos    => {       ypos    => {
  default => 0,    default => 0, 
  test => $real_test,   test => $real_test,
  description => 'y position of label (graph coordinates)',   description => 'Y position of label (graph coordinates)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
Line 394  my %tic_defaults = Line 402  my %tic_defaults =
      mirror => {       mirror => {
  default => 'on',    default => 'on', 
  test => $onoff_test,   test => $onoff_test,
  description => 'mirror tics on opposite axis?',   description => 'Mirror tics on opposite axis?',
  edit_type   => 'onoff'   edit_type   => 'onoff'
  },   },
      start => {       start => {
Line 433  my %axis_defaults = Line 441  my %axis_defaults =
      color   => {       color   => {
  default => 'x000000',    default => 'x000000', 
  test => $color_test,   test => $color_test,
  description => 'color of grid lines (x000000)',   description => 'Color of grid lines (x000000)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      xmin      => {       xmin      => {
  default => '-10.0',   default => '-10.0',
  test => $real_test,   test => $real_test,
  description => 'minimum x-value shown in plot',   description => 'Minimum x-value shown in plot',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      xmax      => {       xmax      => {
  default => ' 10.0',   default => ' 10.0',
  test => $real_test,   test => $real_test,
  description => 'maximum x-value shown in plot',     description => 'Maximum x-value shown in plot',  
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      ymin      => {       ymin      => {
  default => '-10.0',   default => '-10.0',
  test => $real_test,   test => $real_test,
  description => 'minimum y-value shown in plot',     description => 'Minimum y-value shown in plot',  
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      ymax      => {       ymax      => {
  default => ' 10.0',   default => ' 10.0',
  test => $real_test,   test => $real_test,
  description => 'maximum y-value shown in plot',     description => 'Maximum y-value shown in plot',  
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  }   }
      );       );
   
 my @curve_edit_order = ('color','name','linestyle','pointtype','pointsize','limit');  my @curve_edit_order = ('color','name','linestyle','linewidth','pointtype','pointsize','limit');
   
 my %curve_defaults =   my %curve_defaults = 
     (      (
      color     => {       color     => {
  default => 'x000000',   default => 'x000000',
  test => $color_test,   test => $color_test,
  description => 'color of curve (x000000)',   description => 'Color of curve (x000000)',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '10'   size        => '10'
  },   },
      name      => {       name      => {
  default => '',   default => '',
  test => $words_test,   test => $words_test,
  description => 'name of curve to appear in key',   description => 'Name of curve to appear in key',
  edit_type   => 'entry',   edit_type   => 'entry',
  size        => '20'   size        => '20'
  },   },
Line 492  my %curve_defaults = Line 500  my %curve_defaults =
  edit_type   => 'choice',   edit_type   => 'choice',
  choices     => [keys(%linestyles)]   choices     => [keys(%linestyles)]
  },   },
 # gnuplots term=gif driver does not handle linewidth :(       linewidth => {
 #     linewidth => {           default     => 2,
 #         default     => 1,           test        => $int_test,
 #         test        => $int_test,           description => 'Line width (may not apply to all line styles)',
 #         description => 'Line width (may not apply to all line styles)',           edit_type   => 'choice',
 #         edit_type   => 'choice',           choices     => [1,2,3,4,5,6,7,8,9,10]
 #         choices     => [1,2,3,4,5,6,7,8,9,10]           },
 #         },  
      pointsize => {       pointsize => {
          default     => 1,           default     => 1,
          test        => $pos_real_test,           test        => $pos_real_test,
          description => 'point size (may not apply to all line styles)',           description => 'Point size (may not apply to all line styles)',
          edit_type   => 'entry',           edit_type   => 'entry',
          size        => '5'           size        => '5'
          },           },
      pointtype => {       pointtype => {
          default     => 1,           default     => 1,
          test        => $int_test,           test        => $int_test,
          description => 'point type (may not apply to all line styles)',           description => 'Point type (may not apply to all line styles)',
          edit_type   => 'choice',           edit_type   => 'choice',
          choices     => [0,1,2,3,4,5,6]           choices     => [0,1,2,3,4,5,6]
          },           },
      limit     => {       limit     => {
          default     => 'closed',           default     => 'closed',
  test        => sub {$_[0]=~/^(closed|x1|x2|y1|y2)$/},   test        => sub {$_[0]=~/^(closed|x1|x2|y1|y2)$/},
          description => 'point to fill -- for filledcurves',           description => 'Point to fill -- for filledcurves',
          edit_type   => 'choice',           edit_type   => 'choice',
          choices     => ['closed','x1','x2','y1','y2']           choices     => ['closed','x1','x2','y1','y2']
          },           },
Line 674  sub end_ytics { Line 681  sub end_ytics {
     return $result;      return $result;
 }  }
   
   ##-----------------------------------------------------------------font
   my %font_properties =
       (
        'classic'    => {
    face       => 'classic',
    file       => 'DejaVuSansMono-Bold',
    printname  => 'Helvetica',
    tex_no_file => 1,
        },
        'sans-serif' => {
    face       => 'sans-serif',
    file       => 'DejaVuSans',
    printname  => 'DejaVuSans',
        },
        'serif'      => {
    face       => 'serif',
    file       => 'DejaVuSerif',
    printname  => 'DejaVuSerif',
        },
        );
   
   sub get_font {
       my ($target) = @_;
       my ($size, $selected_font);
   
       if ( $Apache::lonplot::plot{'font'} =~ /^(small|medium|large)/) {
    $selected_font = $font_properties{'classic'};
    if ( $Apache::lonplot::plot{'font'} eq 'small') {
       $size = '5';
    } elsif ( $Apache::lonplot::plot{'font'} eq 'medium') {
       $size = '9';
    } elsif ( $Apache::lonplot::plot{'font'} eq 'large') {
       $size = '11';
    } else {
       $size = '9';
    }
       } else {
    $size = $Apache::lonplot::plot{'font'};
    $selected_font = $font_properties{$Apache::lonplot::plot{'fontface'}};
       }
       if ($target eq 'tex' && defined($Apache::lonplot::plot{'texfont'})) {
    $size = $Apache::lonplot::plot{'texfont'};
       }
       return ($size, $selected_font);
   }
   
 ##----------------------------------------------------------------- key  ##----------------------------------------------------------------- key
 sub start_key {  sub start_key {
Line 1069  sub get_attributes{ Line 1121  sub get_attributes{
 ##------------------------------------------------------- write_gnuplot_file  ##------------------------------------------------------- write_gnuplot_file
 sub write_gnuplot_file {  sub write_gnuplot_file {
     my ($tmpdir,$filename,$target)= @_;      my ($tmpdir,$filename,$target)= @_;
       my ($fontsize, $font_properties) =  &get_font($target);
     my $gnuplot_input = '';      my $gnuplot_input = '';
     my $curve;      my $curve;
     my $pt = $Apache::lonplot::plot{'texfont'};  
     #      #
     # Check to be sure we do not have any empty curves      # Check to be sure we do not have any empty curves
     my @curvescopy;      my @curvescopy;
Line 1102  sub write_gnuplot_file { Line 1154  sub write_gnuplot_file {
     }      }
     # set term      # set term
     if ($target eq 'web') {      if ($target eq 'web') {
  $gnuplot_input .= 'set term '.$weboutputformat .' ';   $gnuplot_input .= 'set terminal png enhanced nocrop ';
  $gnuplot_input .= 'transparent ' if ($Apache::lonplot::plot{'transparent'} eq 'on');   $gnuplot_input .= 'transparent ' if ($Apache::lonplot::plot{'transparent'} eq 'on');
  $gnuplot_input .= $Apache::lonplot::plot{'font'} . ' ';   $gnuplot_input .= 'font "'.$Apache::lonnet::perlvar{'lonFontsDir'}.
  $gnuplot_input .= 'size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' ';      '/'.$font_properties->{'file'}.'.ttf" ';
    $gnuplot_input .= $fontsize;
    $gnuplot_input .= ' size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' ';
  $gnuplot_input .= "@Colors\n";   $gnuplot_input .= "@Colors\n";
  # set output   # set output
  $gnuplot_input .= "set output\n";   $gnuplot_input .= "set output\n";
     } elsif ($target eq 'tex') {      } elsif ($target eq 'tex') {
  $gnuplot_input .= "set term postscript eps $Apache::lonplot::plot{'plotcolor'} solid \"Helvetica\" $pt \n";   $gnuplot_input .= "set term postscript eps enhanced $Apache::lonplot::plot{'plotcolor'} solid ";
  $gnuplot_input .= "set output \"/home/httpd/perl/tmp/".   if (!$font_properties->{'tex_no_file'}) {
       $gnuplot_input .=
    'fontfile "'.$Apache::lonnet::perlvar{'lonFontsDir'}.
    '/'.$font_properties->{'file'}.'.pfb" ';
    }
    $gnuplot_input .= ' "'.$font_properties->{'printname'}.'" ';
    $gnuplot_input .= $fontsize;
    $gnuplot_input .= "\nset output \"/home/httpd/perl/tmp/".
     &unescape($filename).".eps\"\n";      &unescape($filename).".eps\"\n";
     }      }
     # cartesian or polar plot?      # cartesian or polar plot?
Line 1123  sub write_gnuplot_file { Line 1184  sub write_gnuplot_file {
     # cartesian or polar grid?      # cartesian or polar grid?
     if (lc($Apache::lonplot::plot{'gridtype'}) eq 'polar') {      if (lc($Apache::lonplot::plot{'gridtype'}) eq 'polar') {
         $gnuplot_input .= 'set grid polar'.$/;          $gnuplot_input .= 'set grid polar'.$/;
       } elsif (lc($Apache::lonplot::plot{'gridtype'}) eq 'linear-log') {
           $gnuplot_input .= 'set logscale x'.$/;
       } elsif (lc($Apache::lonplot::plot{'gridtype'}) eq 'log-linear') {
           $gnuplot_input .= 'set logscale y'.$/;
       } elsif (lc($Apache::lonplot::plot{'gridtype'}) eq 'log-log') {
           $gnuplot_input .= 'set logscale x'.$/;
           $gnuplot_input .= 'set logscale y'.$/;
     } else {      } else {
         # Assume Cartesian          # Assume Cartesian
     }      }
Line 1168  sub write_gnuplot_file { Line 1236  sub write_gnuplot_file {
     $gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n";      $gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n";
     # title, xlabel, ylabel      # title, xlabel, ylabel
     # titles      # titles
       my $extra_space_x = ($xtics{'location'} eq 'axis') ? ' 0, -0.5 ' : '';
       my $extra_space_y = ($ytics{'location'} eq 'axis') ? ' -0.5, 0 ' : '';
   
     if ($target eq 'tex') {      if ($target eq 'tex') {
         $gnuplot_input .= "set title  \"$title\" font \"Helvetica,".$pt."pt\"\n"  if (defined($title)) ;   $gnuplot_input .= "set title  \"$title\"          font \"".$font_properties->{'printname'}.",".$fontsize."pt\"\n" if (defined($title)) ;
         $gnuplot_input .= "set xlabel \"$xlabel\" font \"Helvetica,".$pt."pt\" \n" if (defined($xlabel));   $gnuplot_input .= "set xlabel \"$xlabel\" $extra_space_x font \"".$font_properties->{'printname'}.",".$fontsize."pt\"\n" if (defined($xlabel));
         $gnuplot_input .= "set ylabel \"$ylabel\" font \"Helvetica,".$pt."pt\"\n" if (defined($ylabel));   $gnuplot_input .= "set ylabel \"$ylabel\" $extra_space_y font \"".$font_properties->{'printname'}.",".$fontsize."pt\"\n" if (defined($ylabel));
     } else {      } else {
         $gnuplot_input .= "set title  \"$title\"  \n"  if (defined($title)) ;          $gnuplot_input .= "set title  \"$title\"          \n" if (defined($title)) ;
         $gnuplot_input .= "set xlabel \"$xlabel\" \n" if (defined($xlabel));          $gnuplot_input .= "set xlabel \"$xlabel\" $extra_space_x \n" if (defined($xlabel));
         $gnuplot_input .= "set ylabel \"$ylabel\" \n" if (defined($ylabel));          $gnuplot_input .= "set ylabel \"$ylabel\" $extra_space_y \n" if (defined($ylabel));
     }      }
     # tics      # tics
     if (%xtics) {          if (%xtics) {    
Line 1219  sub write_gnuplot_file { Line 1290  sub write_gnuplot_file {
  $gnuplot_input .= 'set label "'.$label->{'text'}.'" at '.   $gnuplot_input .= 'set label "'.$label->{'text'}.'" at '.
     $label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'};      $label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'};
         if ($target eq 'tex') {          if ($target eq 'tex') {
             $gnuplot_input .=' font "Helvetica,'.$pt.'pt"' ;      $gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$fontsize.'pt"' ;
         }          }
         $gnuplot_input .= $/;          $gnuplot_input .= $/;
     }      }
     if ($target eq 'tex') {      if ($target eq 'tex') {
         $gnuplot_input .="set size 1,".$Apache::lonplot::plot{'height'}/$Apache::lonplot::plot{'width'}*1.38;          $gnuplot_input .="set size 1,".$Apache::lonplot::plot{'height'}/$Apache::lonplot::plot{'width'}*1.38;
         $gnuplot_input .="\n";          $gnuplot_input .="\n";
         }      }
     # curves      # curves
     $gnuplot_input .= 'plot ';      $gnuplot_input .= 'plot ';
     for (my $i = 0;$i<=$#curves;$i++) {      for (my $i = 0;$i<=$#curves;$i++) {
  $curve = $curves[$i];   $curve = $curves[$i];
  $gnuplot_input.= ', ' if ($i > 0);   $gnuplot_input.= ', ' if ($i > 0);
    if ($target eq 'tex') {
       $curve->{'linewidth'} *= 2;
    }
  if (exists($curve->{'function'})) {   if (exists($curve->{'function'})) {
     $gnuplot_input.=       $gnuplot_input.= 
  $curve->{'function'}.' title "'.   $curve->{'function'}.' title "'.
  $curve->{'name'}.'" with '.   $curve->{'name'}.'" with '.
                 $curve->{'linestyle'};                  $curve->{'linestyle'};
             $gnuplot_input.= ' linewidth 4 ' if ($target eq 'tex');              $gnuplot_input.= ' linewidth '.$curve->{'linewidth'};
   
             if (($curve->{'linestyle'} eq 'points')      ||              if (($curve->{'linestyle'} eq 'points')      ||
                 ($curve->{'linestyle'} eq 'linespoints') ||                  ($curve->{'linestyle'} eq 'linespoints') ||
                 ($curve->{'linestyle'} eq 'errorbars')   ||                  ($curve->{'linestyle'} eq 'errorbars')   ||
Line 1267  sub write_gnuplot_file { Line 1342  sub write_gnuplot_file {
     }      }
     #   write file      #   write file
     print $fh $datatext;      print $fh $datatext;
     close ($fh);      close($fh);
     #   generate gnuplot text      #   generate gnuplot text
     $gnuplot_input.= '"'.$datafilename.'" title "'.      $gnuplot_input.= '"'.$datafilename.'" title "'.
  $curve->{'name'}.'" with '.   $curve->{'name'}.'" with '.
  $curve->{'linestyle'};   $curve->{'linestyle'};
             $gnuplot_input.= ' linewidth 4 ' if ($target eq 'tex');              $gnuplot_input.= ' linewidth '.$curve->{'linewidth'};
             if (($curve->{'linestyle'} eq 'points')      ||              if (($curve->{'linestyle'} eq 'points')      ||
                 ($curve->{'linestyle'} eq 'linespoints') ||                  ($curve->{'linestyle'} eq 'linespoints') ||
                 ($curve->{'linestyle'} eq 'errorbars')   ||                  ($curve->{'linestyle'} eq 'errorbars')   ||

Removed from v.1.117  
changed lines
  Added in v.1.126


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