--- loncom/xml/lonplot.pm	2003/08/26 21:52:46	1.86
+++ loncom/xml/lonplot.pm	2003/09/19 20:05:29	1.90
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.86 2003/08/26 21:52:46 albertel Exp $
+# $Id: lonplot.pm,v 1.90 2003/09/19 20:05:29 matthew Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -34,6 +34,8 @@
 package Apache::lonplot;
 
 use strict;
+use warnings FATAL=>'all';
+no warnings 'uninitialized';
 use Apache::File;
 use Apache::response;
 use Apache::lonxml;
@@ -113,7 +115,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 +232,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 = 
@@ -282,43 +291,51 @@ my %label_defaults =
      }
      );
 
-my @tic_edit_order = ('location','mirror','start','increment','end');
+my @tic_edit_order = ('location','mirror','start','increment','end',
+                      'minorfreq');
 my %tic_defaults =
     (
      location => {
 	 default => 'border', 
 	 test => sub {$_[0]=~/^(border|axis)$/},
-	 description => 'Location of tick marks',
+	 description => 'Location of major tic marks',
 	 edit_type   => 'choice',
 	 choices     => ['border','axis']
 	 },
      mirror => {
 	 default => 'on', 
 	 test => $onoff_test,
-	 description => 'mirror ticks on opposite axis?',
+	 description => 'mirror tics on opposite axis?',
 	 edit_type   => 'onoff'
 	 },
      start => {
 	 default => '-10.0',
 	 test => $real_test,
-	 description => 'Start ticks at',
+	 description => 'Start major tics at',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      increment => {
 	 default => '1.0',
 	 test => $real_test,
-	 description => 'Place a tick every',
+	 description => 'Place a major tic every',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      end => {
 	 default => ' 10.0',
 	 test => $real_test,
-	 description => 'Stop ticks at ',
+	 description => 'Stop major tics at ',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
+     minorfreq => {
+	 default => '0',
+	 test => $int_test,
+	 description => 'Number of minor tics between major tic marks',
+	 edit_type   => 'entry',
+	 size        => '10'
+	 },         
      );
 
 my @axis_edit_order = ('color','xmin','xmax','ymin','ymax');
@@ -449,10 +466,10 @@ my %curve_defaults =
 my (%plot,%key,%axis,$title,$xlabel,$ylabel,@labels,@curves,%xtics,%ytics);
 
 sub start_gnuplot {
-    %plot    = ();      %key     = ();      %axis   = (); 
-    $title   = undef;   $xlabel  = undef;   $ylabel = undef;
-    $#labels = -1;      $#curves = -1;
-    %xtics    = ();      %ytics    = ();
+    undef(%plot);   undef(%key);    undef(%axis);
+    undef($title);  undef($xlabel); undef($ylabel);
+    undef(@labels); undef(@curves);
+    undef(%xtics);  undef(%ytics);
     #
     my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
     my $result='';
@@ -1017,10 +1034,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
@@ -1031,9 +1054,15 @@ 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));
+    if ($target eq 'tex') {
+        $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));
+    } else {
+        $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));
+    }
     # tics
     if (%xtics) {    
 	$gnuplot_input .= "set xtics $xtics{'location'} ";
@@ -1041,6 +1070,9 @@ sub write_gnuplot_file {
 	$gnuplot_input .= "$xtics{'start'}, ";
 	$gnuplot_input .= "$xtics{'increment'}, ";
 	$gnuplot_input .= "$xtics{'end'}\n";
+        if ($xtics{'minorfreq'} != 0) {
+            $gnuplot_input .= "set mxtics ".$xtics{'minorfreq'}."\n";
+        } 
     }
     if (%ytics) {    
 	$gnuplot_input .= "set ytics $ytics{'location'} ";
@@ -1048,6 +1080,9 @@ sub write_gnuplot_file {
 	$gnuplot_input .= "$ytics{'start'}, ";
 	$gnuplot_input .= "$ytics{'increment'}, ";
         $gnuplot_input .= "$ytics{'end'}\n";
+        if ($ytics{'minorfreq'} != 0) {
+            $gnuplot_input .= "set mytics ".$ytics{'minorfreq'}."\n";
+        } 
     }
     # axis
     if (%axis) {
@@ -1068,7 +1103,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;