--- loncom/xml/lonplot.pm 2012/07/24 10:50:54 1.163 +++ loncom/xml/lonplot.pm 2018/10/24 13:37:43 1.181 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Dynamic plot # -# $Id: lonplot.pm,v 1.163 2012/07/24 10:50:54 foxr Exp $ +# $Id: lonplot.pm,v 1.181 2018/10/24 13:37:43 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 = '#'; + } } @@ -78,7 +81,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 +108,7 @@ my %linetypes = # For png use these li ); my %ps_linetypes = # For ps the line types are different! ( - solid => 0, + solid => 1, dashed => 7 ); @@ -132,7 +135,12 @@ my $real_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^[+-]?\d*\.?\d*([eE][+-]\d+)?$/}; my $pos_real_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^[+]?\d*\.?\d*([eE][+-]\d+)?$/}; -my $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~/^x[\da-fA-F]{6}$/}; +my $color_test; +if ($version < 4.6) { + $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~s/^\#/x/;$_[0]=~/^x[\da-fA-F]{6}$/}; +} else { + $color_test = sub {$_[0]=~s/\s+//g;$_[0]=~s/^x/#/;$_[0]=~/^\#[\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]=~/^(\d+|small|medium|large)$/}; @@ -181,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' @@ -253,7 +261,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', @@ -362,6 +370,7 @@ my %gnuplot_defaults = }, ); + my %key_defaults = ( title => { @@ -416,7 +425,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', @@ -463,16 +479,22 @@ my %tic_defaults = description => 'Number of minor tics per major tic mark', edit_type => 'entry', size => '10' - }, + }, + rotate => { + default => 'off', + test => $onoff_test, + description => 'Rotate tic label by 90 degrees if on', + edit_type => 'onoff' + } ); my @axis_edit_order = ('color','xmin','xmax','ymin','ymax','xformat', 'yformat', 'xzero', 'yzero'); 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' @@ -507,14 +529,14 @@ my %axis_defaults = }, xformat => { default => 'on', - test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E))$/}, + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*\Q\0317\0200\E)))$/}, description => 'X-axis number formatting', edit_type => 'choice', choices => ['on', 'off', '2e', '2f'], }, yformat => { default => 'on', - test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E))$/}, + test => sub {$_[0]=~/^(on|off|\d+(f|F|e|E|P(|\s*\Q\0317\0200\E)))$/}, description => 'Y-axis number formatting', edit_type => 'choice', choices => ['on', 'off', '2e', '2f'], @@ -546,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' @@ -679,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); @@ -721,13 +743,19 @@ sub end_gnuplot { $filename = &escape($filename); ## return image tag for the plot if ($target eq 'web') { - $result .= <<"ENDIMAGE"; - -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 .= '