Diff for /loncom/xml/lonplot.pm between versions 1.121 and 1.127

version 1.121, 2007/08/03 05:56:00 version 1.127, 2007/08/04 00:01:52
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 fontface 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 205  my %gnuplot_defaults = Line 206  my %gnuplot_defaults =
      font         => {       font         => {
  default     => '9',   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     => [['5','5 (small)'],'7',['9','9 (medium)'],'10','12',['15','15 (large)']]   choices     => [['5','5 (small)'],'6','7','8',['9','9 (medium)'],'10',['11','11 (large)'],'12','15']
  },   },
      fontface     => {       fontface     => {
         default     => 'sans-serif',          default     => 'sans-serif',
Line 500  my %curve_defaults = Line 501  my %curve_defaults =
  choices     => [keys(%linestyles)]   choices     => [keys(%linestyles)]
  },   },
      linewidth => {       linewidth => {
          default     => 4,           default     => 2,
          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',
Line 702  my %font_properties = Line 703  my %font_properties =
      );       );
   
 sub get_font {  sub get_font {
       my ($target) = @_;
     my ($size, $selected_font);      my ($size, $selected_font);
   
     if ( $Apache::lonplot::plot{'font'} =~ /^(small|medium|large)/) {      if ( $Apache::lonplot::plot{'font'} =~ /^(small|medium|large)/) {
Line 711  sub get_font { Line 713  sub get_font {
  } elsif ( $Apache::lonplot::plot{'font'} eq 'medium') {   } elsif ( $Apache::lonplot::plot{'font'} eq 'medium') {
     $size = '9';      $size = '9';
  } elsif ( $Apache::lonplot::plot{'font'} eq 'large') {   } elsif ( $Apache::lonplot::plot{'font'} eq 'large') {
     $size = '15';      $size = '11';
  } else {   } else {
     $size = '9';      $size = '9';
  }   }
     } else {      } else {
    $size = $Apache::lonplot::plot{'font'};
  $selected_font = $font_properties{$Apache::lonplot::plot{'fontface'}};   $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);      return ($size, $selected_font);
 }  }
   
Line 751  sub end_key { Line 757  sub end_key {
     return $result;      return $result;
 }  }
   
   sub gnuplot_protect {
       my ($string) = @_;
       $string =~ s{([_^&~\{\}]|\\\\)}{\\\\$1}g;
       return $string;
   }
   
 ##------------------------------------------------------------------- title  ##------------------------------------------------------------------- title
 sub start_title {  sub start_title {
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;      my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
Line 762  sub start_title { Line 774  sub start_title {
  if (length($title) > $max_str_len) {   if (length($title) > $max_str_len) {
     $title = substr($title,0,$max_str_len);      $title = substr($title,0,$max_str_len);
  }   }
    $title = &gnuplot_protect($title);
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token,'Plot Title');   $result.=&Apache::edit::tag_start($target,$token,'Plot Title');
  my $text=&Apache::lonxml::get_all_text("/title",$parser,$style);   my $text=&Apache::lonxml::get_all_text("/title",$parser,$style);
Line 793  sub start_xlabel { Line 806  sub start_xlabel {
  if (length($xlabel) > $max_str_len) {   if (length($xlabel) > $max_str_len) {
     $xlabel = substr($xlabel,0,$max_str_len);      $xlabel = substr($xlabel,0,$max_str_len);
  }   }
    $xlabel = &gnuplot_protect($xlabel);
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result.=&Apache::edit::tag_start($target,$token,'Plot Xlabel');   $result.=&Apache::edit::tag_start($target,$token,'Plot Xlabel');
  my $text=&Apache::lonxml::get_all_text("/xlabel",$parser,$style);   my $text=&Apache::lonxml::get_all_text("/xlabel",$parser,$style);
Line 825  sub start_ylabel { Line 839  sub start_ylabel {
  if (length($ylabel) > $max_str_len) {   if (length($ylabel) > $max_str_len) {
     $ylabel = substr($ylabel,0,$max_str_len);      $ylabel = substr($ylabel,0,$max_str_len);
  }   }
    $ylabel = &gnuplot_protect($ylabel);
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .= &Apache::edit::tag_start($target,$token,'Plot Ylabel');   $result .= &Apache::edit::tag_start($target,$token,'Plot Ylabel');
  my $text = &Apache::lonxml::get_all_text("/ylabel",$parser,$style);   my $text = &Apache::lonxml::get_all_text("/ylabel",$parser,$style);
Line 858  sub start_label { Line 873  sub start_label {
  $text = &Apache::run::evaluate($text,$safeeval,$$parstack[-1]);   $text = &Apache::run::evaluate($text,$safeeval,$$parstack[-1]);
  $text =~ s/\n/ /g;   $text =~ s/\n/ /g;
  $text = substr($text,0,$max_str_len) if (length($text) > $max_str_len);   $text = substr($text,0,$max_str_len) if (length($text) > $max_str_len);
  $label{'text'} = $text;   $label{'text'} = &gnuplot_protect($text);
  push(@labels,\%label);   push(@labels,\%label);
     } elsif ($target eq 'edit') {      } elsif ($target eq 'edit') {
  $result .= &Apache::edit::tag_start($target,$token,'Plot Label');   $result .= &Apache::edit::tag_start($target,$token,'Plot Label');
Line 1115  sub get_attributes{ Line 1130  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();      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 1231  sub write_gnuplot_file { Line 1245  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 \"".$font_properties->{'printname'}.",".$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 \"".$font_properties->{'printname'}.",".$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 \"".$font_properties->{'printname'}.",".$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 1282  sub write_gnuplot_file { Line 1299  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 "'.$font_properties->{'printname'}.','.$pt.'pt"' ;      $gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$fontsize.'pt"' ;
         }          }
         $gnuplot_input .= $/;          $gnuplot_input .= $/;
     }      }

Removed from v.1.121  
changed lines
  Added in v.1.127


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