--- loncom/xml/lonplot.pm 2005/04/07 06:56:27 1.106 +++ loncom/xml/lonplot.pm 2005/05/16 21:58:41 1.107 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.106 2005/04/07 06:56:27 albertel Exp $ +# $Id: lonplot.pm,v 1.107 2005/05/16 21:58:41 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -464,10 +464,12 @@ my %curve_defaults = ## parsing and edit rendering ## ## ## ################################################################### -my (%plot,%key,%axis,$title,$xlabel,$ylabel,@labels,@curves,%xtics,%ytics); + +undef %Apache::lonplot::plot; +my (%key,%axis,$title,$xlabel,$ylabel,@labels,@curves,%xtics,%ytics); sub start_gnuplot { - undef(%plot); undef(%key); undef(%axis); + undef(%Apache::lonplot::plot); undef(%key); undef(%axis); undef($title); undef($xlabel); undef($ylabel); undef(@labels); undef(@curves); undef(%xtics); undef(%ytics); @@ -479,7 +481,7 @@ sub start_gnuplot { 'xtics','ytics')); push (@Apache::lonxml::namespace,'lonplot'); if ($target eq 'web' || $target eq 'tex') { - &get_attributes(\%plot,\%gnuplot_defaults,$parstack,$safeeval, + &get_attributes(\%Apache::lonplot::plot,\%gnuplot_defaults,$parstack,$safeeval, $tagstack->[-1]); } elsif ($target eq 'edit') { $result .= &Apache::edit::tag_start($target,$token,'GnuPlot'); @@ -523,15 +525,17 @@ sub end_gnuplot { if ($target eq 'web') { $result .= <<"ENDIMAGE"; $plot{'alttag'} + width = "$Apache::lonplot::plot{'width'}" + height = "$Apache::lonplot::plot{'height'}" + align = "$Apache::lonplot::plot{'align'}" + alt = "$Apache::lonplot::plot{'alttag'}" /> ENDIMAGE } elsif ($target eq 'tex') { + &Apache::lonxml::debug(" gnuplot wid = $Apache::lonplot::plot{'width'}"); + &Apache::lonxml::debug(" gnuplot ht = $Apache::lonplot::plot{'height'}"); #might be inside the safe space, register the URL for later &Apache::lonxml::register_ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps"); - $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$plot{'texwidth'}.' mm]{'.&Apache::lonnet::unescape($filename).'.eps}'; + $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&Apache::lonnet::unescape($filename).'.eps}'; } } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_end($target,$token); @@ -1006,7 +1010,7 @@ sub write_gnuplot_file { my ($tmpdir,$filename,$target)= @_; my $gnuplot_input = ''; my $curve; - my $pt = $plot{'texfont'}; + my $pt = $Apache::lonplot::plot{'texfont'}; # # Check to be sure we do not have any empty curves my @curvescopy; @@ -1027,58 +1031,58 @@ sub write_gnuplot_file { @curves = @curvescopy; # Collect all the colors my @Colors; - push @Colors, $plot{'bgcolor'}; - push @Colors, $plot{'fgcolor'}; - push @Colors, (defined($axis{'color'})?$axis{'color'}:$plot{'fgcolor'}); + push @Colors, $Apache::lonplot::plot{'bgcolor'}; + push @Colors, $Apache::lonplot::plot{'fgcolor'}; + push @Colors, (defined($axis{'color'})?$axis{'color'}:$Apache::lonplot::plot{'fgcolor'}); foreach $curve (@curves) { push @Colors, ($curve->{'color'} ne '' ? $curve->{'color'} : - $plot{'fgcolor'} ); + $Apache::lonplot::plot{'fgcolor'} ); } # set term if ($target eq 'web') { $gnuplot_input .= 'set term '.$weboutputformat .' '; - $gnuplot_input .= 'transparent ' if ($plot{'transparent'} eq 'on'); - $gnuplot_input .= $plot{'font'} . ' '; - $gnuplot_input .= 'size '.$plot{'width'}.','.$plot{'height'}.' '; + $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'}.' '; $gnuplot_input .= "@Colors\n"; # set output $gnuplot_input .= "set output\n"; } elsif ($target eq 'tex') { - $gnuplot_input .= "set term postscript eps $plot{'plotcolor'} solid \"Helvetica\" $pt \n"; + $gnuplot_input .= "set term postscript eps $Apache::lonplot::plot{'plotcolor'} solid \"Helvetica\" $pt \n"; $gnuplot_input .= "set output \"/home/httpd/perl/tmp/". &Apache::lonnet::unescape($filename).".eps\"\n"; } # cartesian or polar? - if (lc($plot{'plottype'}) eq 'polar') { + if (lc($Apache::lonplot::plot{'plottype'}) eq 'polar') { $gnuplot_input .= 'set polar'.$/; } else { # Assume Cartesian } # margin - if (lc($plot{'lmargin'}) ne 'default') { - $gnuplot_input .= 'set lmargin '.$plot{'lmargin'}.$/; + if (lc($Apache::lonplot::plot{'lmargin'}) ne 'default') { + $gnuplot_input .= 'set lmargin '.$Apache::lonplot::plot{'lmargin'}.$/; } - if (lc($plot{'rmargin'}) ne 'default') { - $gnuplot_input .= 'set rmargin '.$plot{'rmargin'}.$/; + if (lc($Apache::lonplot::plot{'rmargin'}) ne 'default') { + $gnuplot_input .= 'set rmargin '.$Apache::lonplot::plot{'rmargin'}.$/; } - if (lc($plot{'tmargin'}) ne 'default') { - $gnuplot_input .= 'set tmargin '.$plot{'tmargin'}.$/; + if (lc($Apache::lonplot::plot{'tmargin'}) ne 'default') { + $gnuplot_input .= 'set tmargin '.$Apache::lonplot::plot{'tmargin'}.$/; } - if (lc($plot{'bmargin'}) ne 'default') { - $gnuplot_input .= 'set bmargin '.$plot{'bmargin'}.$/; + if (lc($Apache::lonplot::plot{'bmargin'}) ne 'default') { + $gnuplot_input .= 'set bmargin '.$Apache::lonplot::plot{'bmargin'}.$/; } # tic scales $gnuplot_input .= 'set ticscale '. - $plot{'major_ticscale'}.' '.$plot{'minor_ticscale'}.$/; + $Apache::lonplot::plot{'major_ticscale'}.' '.$Apache::lonplot::plot{'minor_ticscale'}.$/; # grid - $gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on'); + $gnuplot_input .= 'set grid'.$/ if ($Apache::lonplot::plot{'grid'} eq 'on'); # border - $gnuplot_input .= ($plot{'border'} eq 'on'? + $gnuplot_input .= ($Apache::lonplot::plot{'border'} eq 'on'? 'set border'.$/ : 'set noborder'.$/ ); # sampling rate for non-data curves - $gnuplot_input .= "set samples $plot{'samples'}\n"; + $gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n"; # title, xlabel, ylabel # titles if ($target eq 'tex') { @@ -1137,7 +1141,7 @@ sub write_gnuplot_file { $gnuplot_input .= $/; } if ($target eq 'tex') { - $gnuplot_input .="set size 1,".$plot{'height'}/$plot{'width'}*1.38; + $gnuplot_input .="set size 1,".$Apache::lonplot::plot{'height'}/$Apache::lonplot::plot{'width'}*1.38; $gnuplot_input .="\n"; } # curves @@ -1207,7 +1211,7 @@ sub write_gnuplot_file { sub check_inputs { ## Note: no inputs, no outputs - this acts only on global variables. ## Make sure we have all the input we need: - if (! %plot) { &set_defaults(\%plot,\%gnuplot_defaults); } + if (! %Apache::lonplot::plot) { &set_defaults(\%Apache::lonplot::plot,\%gnuplot_defaults); } if (! %key ) {} # No key for this plot, thats okay # if (! %axis) { &set_defaults(\%axis,\%axis_defaults); } if (! defined($title )) {} # No title for this plot, thats okay