--- loncom/xml/lonplot.pm 2012/12/05 19:30:28 1.170 +++ loncom/xml/lonplot.pm 2017/04/02 21:38:15 1.177 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.170 2012/12/05 19:30:28 raeburn Exp $ +# $Id: lonplot.pm,v 1.177 2017/04/02 21:38:15 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -78,7 +78,7 @@ BEGIN { ## align ## ## @labels: $labels[$i] = \%label -## %label: text, xpos, ypos, justify +## %label: text, xpos, ypos, justify, rotate, zlayer ## ## @curves: $curves[$i] = \%curve ## %curve: name, linestyle, ( function | data ) @@ -105,7 +105,7 @@ my %linetypes = # For png use these li ); my %ps_linetypes = # For ps the line types are different! ( - solid => 0, + solid => 1, dashed => 7 ); @@ -258,7 +258,7 @@ my %gnuplot_defaults = test => sub {$_[0]=~/^(left|right|middle|center)$/}, description => 'Alignment for image in HTML', edit_type => 'choice', - choices => ['left','right','middle'] + choices => ['left','right','middle','center'] }, texwidth => { default => '93', @@ -421,7 +421,14 @@ my %label_defaults = description => 'Rotation of label (degrees)', edit_type => 'entry', size => '10', - } + }, + zlayer => { + default => '', + test => sub {$_[0]=~/^(front|back)$/}, + description => 'Z position of label', + edit_type => 'choice', + choices => ['front','back'], + }, ); my @tic_edit_order = ('location','mirror','start','increment','end', @@ -732,13 +739,19 @@ sub end_gnuplot { $filename = &escape($filename); ## return image tag for the plot if ($target eq 'web') { - $result .= <<"ENDIMAGE"; -$Apache::lonplot::plot{'alttag'} -ENDIMAGE + my $srcatt = "src=\"/cgi-bin/plot.$weboutputformat?file=$filename.data\""; + my $widthatt = "width=\"$Apache::lonplot::plot{'width'}\""; + my $heightatt = "height=\"$Apache::lonplot::plot{'height'}\""; + my $alignatt = "align=\"$Apache::lonplot::plot{'align'}\""; + my $altatt = "alt=\"$Apache::lonplot::plot{'alttag'}\""; + if ($Apache::lonplot::plot{'align'} eq 'center') { + $result .= '
'. + "". + "
\n"; + + } else { + $result .= ""; + } } elsif ($target eq 'tex') { &Apache::lonxml::debug(" gnuplot wid = $Apache::lonplot::plot{'width'}"); &Apache::lonxml::debug(" gnuplot ht = $Apache::lonplot::plot{'height'}"); @@ -746,7 +759,13 @@ ENDIMAGE &Apache::lonxml::register_ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps"); $result = "%DYNAMICIMAGE:$Apache::lonplot::plot{'width'}:$Apache::lonplot::plot{'height'}:$Apache::lonplot::plot{'texwidth'}\n"; $result .= '\graphicspath{{'.$tmpdir.'}}'."\n"; + if ($Apache::lonplot::plot{'align'} eq 'center') { + $result .= '\begin{center}'; + } $result .= '\includegraphics[width='.$Apache::lonplot::plot{'texwidth'}.' mm]{'.&unescape($filename).'.eps}'; + if ($Apache::lonplot::plot{'align'} eq 'center') { + $result .= '\end{center}'; + } } } elsif ($target eq 'edit') { $result.=&Apache::edit::tag_end($target,$token); @@ -1714,7 +1733,7 @@ sub generate_tics { my $result = ''; - if (defined %$spec) { + if ((ref($spec) eq 'HASH') && (keys(%{$spec}) > 0)) { @@ -1752,7 +1771,7 @@ sub generate_tics { if ($spec->{'minorfreq'} != 0) { $result .= "set m$type $spec->{'minorfreq'}\n"; } - } else { + } elsif ($target eq 'tex' ) { $result .= "set $type font " . '"Helvetica,22"' ."\n"; } @@ -1967,7 +1986,10 @@ sub write_gnuplot_file { $gnuplot_input .= ' '.$label->{'justify'}; if ($target eq 'tex') { - $gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$fontsize.'pt"' ; + $gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$fontsize.'pt"'; + } + if (($label->{'zlayer'} eq 'front') || ($label->{'zlayer'} eq 'back')) { + $gnuplot_input .= ' '.$label->{'zlayer'}; } $gnuplot_input .= $/; } @@ -1984,7 +2006,7 @@ sub write_gnuplot_file { # my $linestyle_index = 50; my $line_width = ''; - my $plots; + my $plots = ''; # If arrows are needed there will be an arrow style for each as well: # @@ -1993,8 +2015,11 @@ sub write_gnuplot_file { for (my $i = 0;$i<=$#curves;$i++) { $curve = $curves[$i]; - my $plot_command; - my $plot_type = ', ' if ($i > 0); + my $plot_command = ''; + my $plot_type = ''; + if ($i > 0) { + $plot_type = ', '; + } if ($target eq 'tex') { $curve->{'linewidth'} *= 2; }