[LON-CAPA-cvs] cvs: loncom /xml lonplot.pm

faziophi lon-capa-cvs-allow@mail.lon-capa.org
Wed, 19 Mar 2008 21:09:09 -0000


faziophi		Wed Mar 19 17:09:09 2008 EDT

  Modified files:              
    /loncom/xml	lonplot.pm 
  Log:
  adds dashed linetype capabilities, by adding linetype attribute to curves; also tweaks text descriptions for colorful editor
  
  
Index: loncom/xml/lonplot.pm
diff -u loncom/xml/lonplot.pm:1.134 loncom/xml/lonplot.pm:1.135
--- loncom/xml/lonplot.pm:1.134	Sat Jan 19 21:47:06 2008
+++ loncom/xml/lonplot.pm	Wed Mar 19 17:09:09 2008
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.134 2008/01/20 02:47:06 raeburn Exp $
+# $Id: lonplot.pm,v 1.135 2008/03/19 21:09:09 faziophi Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -91,6 +91,12 @@
 my $max_str_len = 50;    # if a label, title, xlabel, or ylabel text
                          # is longer than this, it will be truncated.
 
+my %linetypes =
+    (
+     solid          => 1,
+     dashed         => 0
+    );
+
 my %linestyles = 
     (
      lines          => 2,     # Maybe this will be used in the future
@@ -497,7 +503,7 @@
 
      );
 
-my @curve_edit_order = ('color','name','linestyle','linewidth','pointtype','pointsize','limit');
+my @curve_edit_order = ('color','name','linestyle','linewidth','linetype','pointtype','pointsize','limit');
 
 my %curve_defaults = 
     (
@@ -518,37 +524,44 @@
      linestyle => {
 	 default => 'lines',
 	 test => $linestyle_test,
-	 description => 'Line style',
+	 description => 'Plot with:',
 	 edit_type   => 'choice',
 	 choices     => [keys(%linestyles)]
 	 },
      linewidth => {
          default     => 1,
          test        => $int_test,
-         description => 'Line width (may not apply to all line styles)',
+         description => 'Line width (may not apply to all plot styles)',
          edit_type   => 'choice',
          choices     => [1,2,3,4,5,6,7,8,9,10]
          },
+     linetype => {
+         default     => 'solid',
+         test        => sub {$_[0]=~/^(solid|dashed)$/},
+         description => 'Line type (may not apply to all plot styles)',
+         edit_type   => 'choice',
+         choices     => ['solid', 'dashed']
+         }, 
      pointsize => {
          default     => 1,
          test        => $pos_real_test,
-         description => 'Point size (may not apply to all line styles)',
+         description => 'Point size (may not apply to all plot styles)',
          edit_type   => 'entry',
          size        => '5'
          },
      pointtype => {
          default     => 1,
          test        => $int_test,
-         description => 'Point type (may not apply to all line styles)',
+         description => 'Point type (may not apply to all plot styles)',
          edit_type   => 'choice',
          choices     => [0,1,2,3,4,5,6]
          },
      limit     => {
          default     => 'closed',
-	 test        => sub {$_[0]=~/^(closed|x1|x2|y1|y2)$/},
+	 test        => sub {$_[0]=~/^(above|below|closed|x1|x2|y1|y2)$/},
          description => 'Point to fill -- for filledcurves',
          edit_type   => 'choice',
-         choices     => ['closed','x1','x2','y1','y2']
+         choices     => ['above', 'below', 'closed','x1','x2','y1','y2']
          },
      );
 
@@ -1464,6 +1477,14 @@
                 $gnuplot_input.=' pointsize '.$curve->{'pointsize'};
             } elsif ($curve->{'linestyle'} eq 'filledcurves') { 
                 $gnuplot_input.= ' '.$curve->{'limit'};
+            } elsif ($curve->{'linetype'} ne '' &&
+                     $curve->{'linestyle'} eq 'lines') {
+                $gnuplot_input.= ' linetype ';
+                $gnuplot_input.= $linetypes{$curve->{'linetype'}};
+                $gnuplot_input.= ' linecolor rgb "';
+                # convert color from xaaaaaa to #aaaaaa
+                $curve->{'color'} =~ s/x/#/;
+                $gnuplot_input.= $curve->{'color'}.'"';
             }
             $gnuplot_input.= ' linewidth '.$curve->{'linewidth'};
 
@@ -1500,8 +1521,16 @@
                 $gnuplot_input.=' pointsize '.$curve->{'pointsize'};
             } elsif ($curve->{'linestyle'} eq 'filledcurves') { 
                 $gnuplot_input.= ' '.$curve->{'limit'};
+            } elsif ($curve->{'linetype'} ne '' &&
+                     $curve->{'linestyle'} eq 'lines') {
+                $gnuplot_input.= ' linetype ';
+                $gnuplot_input.= $linetypes{$curve->{'linetype'}};
+                $gnuplot_input.= ' linecolor rgb "';
+                # convert color from xaaaaaa to #aaaaaa
+                $curve->{'color'} =~ s/x/#/;
+                $gnuplot_input.= $curve->{'color'}.'"';
             }
-            $gnuplot_input.= ' linewidth '.$curve->{'linewidth'};
+                $gnuplot_input.= ' linewidth '.$curve->{'linewidth'}; 
 	}
     }
     # Write the output to a file.