--- loncom/xml/lonplot.pm 2018/09/26 15:24:46 1.180 +++ loncom/xml/lonplot.pm 2019/05/08 12:24:27 1.182 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.180 2018/09/26 15:24:46 raeburn Exp $ +# $Id: lonplot.pm,v 1.182 2019/05/08 12:24:27 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,7 +42,7 @@ use Apache::lonnet; use LONCAPA; -use vars qw/$weboutputformat $version/; +use vars qw/$weboutputformat $version $colorprefix/; @@ -56,7 +56,10 @@ BEGIN { if ($version >= 4) { $weboutputformat = 'png'; } - + $colorprefix = 'x'; + if ($version > 4.6) { + $colorprefix = '#'; + } } @@ -186,17 +189,17 @@ my %gnuplot_defaults = size => '10' }, bgcolor => { - default => 'xffffff', - test => $color_test, - description => 'Background color of image (xffffff)', + default => $colorprefix.'ffffff', + test => $color_test, + description => 'Background color of image ('.$colorprefix.'ffffff)', edit_type => 'entry', size => '10', class => 'colorchooser' }, fgcolor => { - default => 'x000000', + default => $colorprefix.'000000', test => $color_test, - description => 'Foreground color of image (x000000)', + description => 'Foreground color of image ('.$colorprefix.'000000)', edit_type => 'entry', size => '10', class => 'colorchooser' @@ -367,6 +370,7 @@ my %gnuplot_defaults = }, ); + my %key_defaults = ( title => { @@ -488,9 +492,9 @@ my @axis_edit_order = ('color','xmin','x my %axis_defaults = ( color => { - default => 'x000000', + default => $colorprefix.'000000', test => $color_test, - description => 'Color of grid lines (x000000)', + description => 'Color of grid lines ('.$colorprefix.'000000)', edit_type => 'entry', size => '10', class => 'colorchooser' @@ -564,9 +568,9 @@ my @curve_edit_order = ('color','name',' my %curve_defaults = ( color => { - default => 'x000000', + default => $colorprefix.'000000', test => $color_test, - description => 'Color of curve (x000000)', + description => 'Color of curve ('.$colorprefix.'000000)', edit_type => 'entry', size => '10', class => 'colorchooser' @@ -697,13 +701,13 @@ sub start_gnuplot { if ($constructtag) { # - # The color chooser does not prepent x to the color values + # Color chooser does not prepend x (or #) to the color values # Do that here: # foreach my $attribute ('bgcolor', 'fgcolor') { my $value = $token->[2]{$attribute}; - if (defined $value && !($value =~ /^x/)) { - $token->[2]{$attribute} = 'x' . $value; + if (defined $value && ($value !~ /^\Q$colorprefix\E/)) { + $token->[2]{$attribute} = $colorprefix . $value; } } $result = &Apache::edit::rebuild_tag($token); @@ -1497,11 +1501,12 @@ sub start_curve { ($token,$parstack,$safeeval,keys(%curve_defaults)); if ($constructtag) { # - # Fix up the color attribute as jcolor does not prepend an x + # Fix up the color attribute as jcolor does not prepend an x + # (or #) # my $value = $token->[2]{'color'}; - if (defined $value && !($value =~ /^x/)) { - $token->[2]{'color'} = 'x' . $value; + if (defined $value && ($value !~ /^\Q$colorprefix\E/)) { + $token->[2]{'color'} = $colorprefix . $value; } $result = &Apache::edit::rebuild_tag($token); } @@ -1655,11 +1660,11 @@ sub start_axis { if ($constructtag) { # # Fix up the color attribute since jchooser does not - # prepend an x to the color: + # prepend an x (or #) to the color: # my $value = $token->[2]{'color'}; - if (defined $value && !($value =~ /^x/)) { - $token->[2]{'color'} = 'x' . $value; + if (defined $value && ($value !~ /^\Q$colorprefix\E/)) { + $token->[2]{'color'} = $colorprefix . $value; } $result = &Apache::edit::rebuild_tag($token); @@ -1822,7 +1827,13 @@ sub write_gnuplot_file { '/'.$font_properties->{'file'}.'.ttf" '; $gnuplot_input .= $fontsize; $gnuplot_input .= ' size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' '; - $gnuplot_input .= "@Colors\n"; + if ($version > 4.6) { + if ($Apache::lonplot::plot{'bgcolor'}) { + $gnuplot_input .= "background '$Apache::lonplot::plot{'bgcolor'}'\n"; + } + } else { + $gnuplot_input .= "@Colors\n"; + } # set output $gnuplot_input .= "set output\n"; } elsif ($target eq 'tex') { @@ -1898,11 +1909,25 @@ sub write_gnuplot_file { if ($Apache::lonplot::plot{'gridlayer'} eq 'on'); # grid - $gnuplot_input .= 'set grid'.$/ if ($Apache::lonplot::plot{'grid'} eq 'on'); + if (($version > 4.6) && ($Apache::lonplot::plot{'fgcolor'} ne '')) { + $gnuplot_input .= 'set grid linecolor "'.$Apache::lonplot::plot{'fgcolor'}.'"'.$/ + if ($Apache::lonplot::plot{'grid'} eq 'on'); + } else { + $gnuplot_input .= 'set grid'.$/ if ($Apache::lonplot::plot{'grid'} eq 'on'); + } # border - $gnuplot_input .= ($Apache::lonplot::plot{'border'} eq 'on'? - 'set border'.$/ : - 'set noborder'.$/ ); + if ($Apache::lonplot::plot{'border'} eq 'on') { + if (($version > 4.6) && (($axis{'color'} ne '') || ($Apache::lonplot::plot{'fgcolor'} ne ''))) { + $gnuplot_input .= 'set border linecolor "'. + (($axis{'color'} ne '')?$axis{'color'}: + $Apache::lonplot::plot{'fgcolor'}). + '" '.$/; + } else { + $gnuplot_input .= 'set border '.$/; + } + } else { + $gnuplot_input .= 'set noborder '.$/; + } # sampling rate for non-data curves $gnuplot_input .= "set samples $Apache::lonplot::plot{'samples'}\n"; # title, xlabel, ylabel