--- loncom/xml/lonplot.pm 2007/10/09 22:26:54 1.118.2.3 +++ loncom/xml/lonplot.pm 2007/06/19 01:15:24 1.119 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.118.2.3 2007/10/09 22:26:54 albertel Exp $ +# $Id: lonplot.pm,v 1.119 2007/06/19 01:15:24 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -117,7 +117,7 @@ my $pos_real_test = my $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-fA-F]{6}$/}; my $onoff_test = sub {$_[0]=~/^(on|off)$/}; 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 $words_test = sub {$_[0]=~s/\s+/ /g;$_[0]=~/^([\w~!\@\#\$\%^&\*\(\)-=_\+\[\]\{\}:\;\'<>,\.\/\?\\]+ ?)+$/}; @@ -203,11 +203,11 @@ my %gnuplot_defaults = edit_type => 'onoff' }, font => { - default => 'medium', + default => '9', test => $sml_test, description => 'Size of font to use', edit_type => 'choice', - choices => ['small','medium','large'] + choices => [['5','5 (small)'],'7',['9','9 (medium)'],'10','12',['15','15 (large)']] }, samples => { default => '100', @@ -493,7 +493,7 @@ my %curve_defaults = choices => [keys(%linestyles)] }, linewidth => { - default => 1, + default => 4, test => $int_test, description => 'Line width (may not apply to all line styles)', edit_type => 'choice', @@ -673,6 +673,24 @@ sub end_ytics { return $result; } +##-----------------------------------------------------------------font +sub get_font { + my ($size); + if ( $Apache::lonplot::plot{'font'} =~ /^(small|medium|large)/) { + 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 = '15'; + } else { + $size = '9'; + } + } else { + $size = $Apache::lonplot::plot{'font'}; + } + return ($size); +} ##----------------------------------------------------------------- key sub start_key { @@ -1101,7 +1119,7 @@ sub write_gnuplot_file { } # set term if ($target eq 'web') { - $gnuplot_input .= 'set term '.$weboutputformat .' '; + $gnuplot_input .= 'set term '.$weboutputformat .' enhanced '; $gnuplot_input .= 'transparent ' if ($Apache::lonplot::plot{'transparent'} eq 'on'); $gnuplot_input .= $Apache::lonplot::plot{'font'} . ' '; $gnuplot_input .= 'size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' '; @@ -1109,7 +1127,7 @@ sub write_gnuplot_file { # set output $gnuplot_input .= "set output\n"; } 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 \"Helvetica\" $pt \n"; $gnuplot_input .= "set output \"/home/httpd/perl/tmp/". &unescape($filename).".eps\"\n"; } @@ -1246,6 +1264,7 @@ sub write_gnuplot_file { $curve->{'function'}.' title "'. $curve->{'name'}.'" with '. $curve->{'linestyle'}; + $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; if (($curve->{'linestyle'} eq 'points') || ($curve->{'linestyle'} eq 'linespoints') || @@ -1258,8 +1277,6 @@ sub write_gnuplot_file { } elsif ($curve->{'linestyle'} eq 'filledcurves') { $gnuplot_input.= ' '.$curve->{'limit'}; } - $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; - } elsif (exists($curve->{'data'})) { # Store data values in $datatext my $datatext = ''; @@ -1278,11 +1295,12 @@ sub write_gnuplot_file { } # write file print $fh $datatext; - close ($fh); + close($fh); # generate gnuplot text $gnuplot_input.= '"'.$datafilename.'" title "'. $curve->{'name'}.'" with '. $curve->{'linestyle'}; + $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; if (($curve->{'linestyle'} eq 'points') || ($curve->{'linestyle'} eq 'linespoints') || ($curve->{'linestyle'} eq 'errorbars') || @@ -1294,7 +1312,6 @@ sub write_gnuplot_file { } elsif ($curve->{'linestyle'} eq 'filledcurves') { $gnuplot_input.= ' '.$curve->{'limit'}; } - $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; } } # Write the output to a file.