--- loncom/xml/lonplot.pm	2003/05/16 14:50:13	1.83
+++ loncom/xml/lonplot.pm	2003/09/10 13:50:29	1.88
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.83 2003/05/16 14:50:13 sakharuk Exp $
+# $Id: lonplot.pm,v 1.88 2003/09/10 13:50:29 sakharuk Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -113,7 +113,7 @@ my $words_test     = sub {$_[0]=~s/\s+/
 ###################################################################
 my @gnuplot_edit_order = 
     qw/alttag bgcolor fgcolor height width font transparent grid samples 
-    border align texwidth/;
+    border align texwidth plottype/;
 
 my $gnuplot_help_text = <<"ENDPLOTHELP";
 <p>
@@ -230,6 +230,13 @@ my %gnuplot_defaults =
          edit_type   => 'entry',
          size        => '5'
          },
+     plottype  => {
+	 default     => 'Cartesian',
+	 test        => sub {$_[0]=~/^(Polar|Cartesian)$/},
+	 description => 'Plot type:',
+	 edit_type   => 'choice',
+         choices     => ['Polar','Cartesian']
+         },
      );
 
 my %key_defaults = 
@@ -515,7 +522,7 @@ ENDIMAGE
         } elsif ($target eq 'tex') {
 	    &Apache::lonnet::ssi("/cgi-bin/plot.gif?file=$filename.data&output=eps");
 
-	    $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width=93 mm]{'.&Apache::lonnet::unescape($filename).'.eps}';
+	    $result = '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$plot{'texwidth'}.' mm]{'.&Apache::lonnet::unescape($filename).'.eps}';
 	}
     } elsif ($target eq 'edit') {
 	$result.=&Apache::edit::tag_end($target,$token);
@@ -807,7 +814,11 @@ sub start_function {
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	if (exists($curves[-1]->{'data'})) {
-	    &Apache::lonxml::warning('Use of <function> precludes use of <data>.  The <data> will be omitted in favor of the <function> declaration.');
+	    &Apache::lonxml::warning
+                ('Use of the <b>curve function</b> tag precludes use of '.
+                 ' the <b>curve data</b> tag.  '.
+                 'The curve data tag will be omitted in favor of the '.
+                 'curve function declaration.');
 	    delete $curves[-1]->{'data'} ;
 	}
         my $function = &Apache::lonxml::get_all_text("/function",$parser);
@@ -843,9 +854,11 @@ sub start_data {
     my $result='';
     if ($target eq 'web' || $target eq 'tex') {
 	if (exists($curves[-1]->{'function'})) {
-	    &Apache::lonxml::warning('Use of <data> precludes use of .'.
-	    '<function>.  The <function> will be omitted in favor of '.
-            'the <data> declaration.');
+	    &Apache::lonxml::warning
+                ('Use of the <b>curve function</b> tag precludes use of '.
+                 ' the <b>curve data</b> tag.  '.
+                 'The curve function tag will be omitted in favor of the '.
+                 'curve data declaration.');
 	    delete($curves[-1]->{'function'});
 	}
 	my $datatext = &Apache::lonxml::get_all_text("/data",$parser);
@@ -869,14 +882,14 @@ sub start_data {
 	    # Check that it's non-empty
 	    if (! defined($data[$i])) {
 		&Apache::lonxml::warning(
-		    'undefined <data> value.  Replacing with '.
+		    'undefined curve data value.  Replacing with '.
 		    ' pi/e = 1.15572734979092');
 		$data[$i] = 1.15572734979092;
 	    }
 	    # Check that it's a number
 	    if (! &$real_test($data[$i]) & ! &$int_test($data[$i])) {
 		&Apache::lonxml::warning(
-		    'Bad <data> value of '.$data[$i].'  Replacing with '.
+		    'Bad curve data value of '.$data[$i].'  Replacing with '.
 		    ' pi/e = 1.15572734979092');
 		$data[$i] = 1.15572734979092;
 	    }
@@ -964,8 +977,13 @@ sub set_defaults {
 sub get_attributes{
     my ($values,$defaults,$parstack,$safeeval,$tag) = @_;
     foreach my $attr (keys(%{$defaults})) {
-	$values->{$attr} = 
-	    &Apache::lonxml::get_param($attr,$parstack,$safeeval);
+	if ($attr eq 'texwidth') {
+	    $values->{$attr} = 
+		&Apache::lonxml::get_param($attr,$parstack,$safeeval,undef,1);
+	} else {
+	    $values->{$attr} = 
+		&Apache::lonxml::get_param($attr,$parstack,$safeeval);
+	}
 	if ($values->{$attr} eq '' | !defined($values->{$attr})) {
 	    $values->{$attr} = $defaults->{$attr}->{'default'};
 	    next;
@@ -1006,10 +1024,16 @@ sub write_gnuplot_file {
 	# set output
 	$gnuplot_input .= "set output\n";
     } elsif ($target eq 'tex') {
-	$gnuplot_input .= "set term postscript eps monochrome solid\n";
+	$gnuplot_input .= "set term postscript eps monochrome solid \"Helvetica\" 25 \n";
 	$gnuplot_input .= "set output \"/home/httpd/perl/tmp/".
 	    &Apache::lonnet::unescape($filename).".eps\"\n";
     }
+    # cartesian or polar?
+    if (lc($plot{'plottype'}) eq 'polar') {
+        $gnuplot_input .= 'set polar'.$/;
+    } else {
+        # Assume Cartesian
+    }
     # grid
     $gnuplot_input .= 'set grid'.$/ if ($plot{'grid'} eq 'on');
     # border
@@ -1020,9 +1044,9 @@ sub write_gnuplot_file {
     $gnuplot_input .= "set samples $plot{'samples'}\n";
     # title, xlabel, ylabel
     # titles
-    $gnuplot_input .= "set title  \"$title\"\n"  if (defined($title)) ;
-    $gnuplot_input .= "set xlabel \"$xlabel\"\n" if (defined($xlabel));
-    $gnuplot_input .= "set ylabel \"$ylabel\"\n" if (defined($ylabel));
+    $gnuplot_input .= "set title  \"$title\" font \"Helvetica,25pt\"\n"  if (defined($title)) ;
+    $gnuplot_input .= "set xlabel \"$xlabel\" font \"Helvetica,25pt\" \n" if (defined($xlabel));
+    $gnuplot_input .= "set ylabel \"$ylabel\" font \"Helvetica,25pt\"\n" if (defined($ylabel));
     # tics
     if (%xtics) {    
 	$gnuplot_input .= "set xtics $xtics{'location'} ";
@@ -1057,7 +1081,7 @@ sub write_gnuplot_file {
     my $label;
     foreach $label (@labels) {
 	$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '.
-	    $label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}.$/ ;
+	    $label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'}.' font "Helvetica,25pt"'.$/ ;
     }
     if ($target eq 'tex') {
         $gnuplot_input .="set size 1,".$plot{'height'}/$plot{'width'}*1.38;
@@ -1144,7 +1168,7 @@ sub check_inputs {
     my $curve;
     foreach $curve (@curves) {
 	if (!defined($curve->{'function'})&&!defined($curve->{'data'})){
-	    &Apache::lonxml::warning("One of the curves specified did not contain any <data> or <function> declarations\n");
+	    &Apache::lonxml::warning("One of the curves specified did not contain any curve data or curve function declarations\n");
 	    return '';
 	}
     }