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

albertel lon-capa-cvs-allow@mail.lon-capa.org
Mon, 30 Jul 2007 21:50:29 -0000


This is a MIME encoded message

--albertel1185832229
Content-Type: text/plain

albertel		Mon Jul 30 17:50:29 2007 EDT

  Modified files:              
    /loncom	loncapa_apache.conf 
    /loncom/xml	lonplot.pm 
  Log:
  - BUG#5234 give font face choices to plotting
  - make capitalization of options the same
  
  
--albertel1185832229
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20070730175029.txt"

Index: loncom/loncapa_apache.conf
diff -u loncom/loncapa_apache.conf:1.167 loncom/loncapa_apache.conf:1.168
--- loncom/loncapa_apache.conf:1.167	Wed Apr 25 20:59:32 2007
+++ loncom/loncapa_apache.conf	Mon Jul 30 17:50:10 2007
@@ -1,7 +1,7 @@
 ##
 ## loncapa_apache.conf -- Apache HTTP LON-CAPA configuration file
 ##
-## $Id: loncapa_apache.conf,v 1.167 2007/04/26 00:59:32 banghart Exp $
+## $Id: loncapa_apache.conf,v 1.168 2007/07/30 21:50:10 albertel Exp $
 ##
 
 #
@@ -1393,7 +1393,7 @@
 PerlSetVar       lonPrtDir    /home/httpd/prtspool
 PerlSetVar       lonIncludes  /home/httpd/html/res/adm/includes
 PerlSetVar       lonZipDir    /home/httpd/zipspool
-
+PerlSetVar       lonFontsDir     /home/httpd/html/adm/fonts
 # & separated list of : separated fields in order of
 # - internal name to call it, 
 # - regexp that it should match (done case-insensitively)
@@ -1402,7 +1402,7 @@
 # - a number that describes the minimum version that has mathml support
 # - a number that describes the minimum number version that has unicode support
 
-PerlSetVar       lonBrowsDet  explorer:msie:netscape:msie\s(\d+\.\d+)\;:9999:9999&mozilla:mozilla\/[5-9]:msie:mozilla\/(\d+\.\d+)\s:9999:1&netscape:netscape:msie:netscape\/(\d+\.\d+):9999:7&netscape:netscape\/[7-9]:shouldnotmatch:netscape\/(\d+\.\d+):9999:7&amaya:amaya:mozilla:V(\d+\.\d+)\s:1:1&safari:safari:msie:safari\/([\d\.]+):9999:84
+PerlSetVar       lonBrowsDet  explorer:msie:netscape:msie\s(\d+\.\d+)\;:9999:9999&mozilla:mozilla\/[5-9]:msie:mozilla\/(\d+\.\d+)\s:9999:1&netscape:netscape:msie:netscape\/(\d+\.\d+):9999:7&netscape:netscape\/[7-9]:shouldnotmatch:netscape\/(\d+\.\d+):9999:7&amaya:amaya:mozilla:V(\d+\.\d+)\s:1:1&safari:safari:msie:safari\/(\d+)[\.\d+]:9999:84
 
 PerlSetVar       lonTextBrowsers windows\s+ce:lynx
 PerlSetVar       lonScansDir  /home/httpd/scantron
Index: loncom/xml/lonplot.pm
diff -u loncom/xml/lonplot.pm:1.119 loncom/xml/lonplot.pm:1.120
--- loncom/xml/lonplot.pm:1.119	Mon Jun 18 21:15:24 2007
+++ loncom/xml/lonplot.pm	Mon Jul 30 17:50:29 2007
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Dynamic plot
 #
-# $Id: lonplot.pm,v 1.119 2007/06/19 01:15:24 albertel Exp $
+# $Id: lonplot.pm,v 1.120 2007/07/30 21:50:29 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -127,7 +127,7 @@
 ##                                                               ##
 ###################################################################
 my @gnuplot_edit_order = 
-    qw/alttag bgcolor fgcolor height width font transparent grid samples 
+    qw/alttag bgcolor fgcolor height width fontface font transparent grid samples 
     border align texwidth texfont plotcolor plottype gridtype lmargin rmargin
     tmargin bmargin major_ticscale minor_ticscale boxwidth gridlayer fillstyle
     pattern solid/;
@@ -139,35 +139,35 @@
      alttag       => {
 	 default     => 'dynamically generated plot',
 	 test        => $words_test,
-	 description => 'brief description of the plot',
+	 description => 'Brief description of the plot',
       	 edit_type   => 'entry',
 	 size        => '40'
 	 },
      height       => {
 	 default     => 300,
 	 test        => $int_test,
-	 description => 'height of image (pixels)',
+	 description => 'Height of image (pixels)',
       	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      width        => {
 	 default     => 400,
 	 test        => $int_test,
-	 description => 'width of image (pixels)',
+	 description => 'Width of image (pixels)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      bgcolor      => {
 	 default     => 'xffffff',
 	 test        => $color_test, 
-	 description => 'background color of image (xffffff)',
+	 description => 'Background color of image (xffffff)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      fgcolor      => {
 	 default     => 'x000000',
 	 test        => $color_test,
-	 description => 'foreground color of image (x000000)',
+	 description => 'Foreground color of image (x000000)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
@@ -209,6 +209,13 @@
 	 edit_type   => 'choice',
 	 choices     => [['5','5 (small)'],'7',['9','9 (medium)'],'10','12',['15','15 (large)']]
 	 },
+     fontface     => {
+        default     => 'sans-serif',
+        test        => sub {$_[0]=~/^(sans-serif|serif|classic)$/},
+        description => 'Type of font to use',
+        edit_type   => 'choice',
+        choices     => ['sans-serif','serif', 'classic']
+        },
      samples      => {
 	 default     => '100',
 	 test        => $int_test,
@@ -219,7 +226,7 @@
      align        => {
 	 default     => 'middle',
 	 test        => sub {$_[0]=~/^(left|right|middle|center)$/},
-	 description => 'alignment for image in html',
+	 description => 'Alignment for image in HTML',
 	 edit_type   => 'choice',
 	 choices     => ['left','right','middle']
 	 },
@@ -247,7 +254,7 @@
      pattern      => {
 	 default     => '',
 	 test        => $int_test,
-	 description => 'pattern value for boxes:',
+	 description => 'Pattern value for boxes:',
 	 edit_type   => 'choice',
          choices     => [0,1,2,3,4,5,6]
          },
@@ -310,7 +317,7 @@
      boxwidth     => {
 	 default     => '',
 	 test        => $real_test, 
-	 description => 'width of boxes default auto',
+	 description => 'Width of boxes, default is auto',
 	 edit_type   => 'entry',
          size        => '5'
          },
@@ -348,7 +355,7 @@
      pos   => { 
 	 default => 'top right', 
 	 test => $key_pos_test, 
-	 description => 'position of the key on the plot',
+	 description => 'Position of the key on the plot',
 	 edit_type   => 'choice',
 	 choices     => ['top left','top right','bottom left','bottom right',
 			 'outside','below']
@@ -360,14 +367,14 @@
      xpos    => {
 	 default => 0,
 	 test => $real_test,
-	 description => 'x position of label (graph coordinates)',
+	 description => 'X position of label (graph coordinates)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      ypos    => {
 	 default => 0, 
 	 test => $real_test,
-	 description => 'y position of label (graph coordinates)',
+	 description => 'Y position of label (graph coordinates)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
@@ -394,7 +401,7 @@
      mirror => {
 	 default => 'on', 
 	 test => $onoff_test,
-	 description => 'mirror tics on opposite axis?',
+	 description => 'Mirror tics on opposite axis?',
 	 edit_type   => 'onoff'
 	 },
      start => {
@@ -433,35 +440,35 @@
      color   => {
 	 default => 'x000000', 
 	 test => $color_test,
-	 description => 'color of grid lines (x000000)',
+	 description => 'Color of grid lines (x000000)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      xmin      => {
 	 default => '-10.0',
 	 test => $real_test,
-	 description => 'minimum x-value shown in plot',
+	 description => 'Minimum x-value shown in plot',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      xmax      => {
 	 default => ' 10.0',
 	 test => $real_test,
-	 description => 'maximum x-value shown in plot',	 
+	 description => 'Maximum x-value shown in plot',	 
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      ymin      => {
 	 default => '-10.0',
 	 test => $real_test,
-	 description => 'minimum y-value shown in plot',	 
+	 description => 'Minimum y-value shown in plot',	 
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      ymax      => {
 	 default => ' 10.0',
 	 test => $real_test,
-	 description => 'maximum y-value shown in plot',	 
+	 description => 'Maximum y-value shown in plot',	 
 	 edit_type   => 'entry',
 	 size        => '10'
 	 }
@@ -474,14 +481,14 @@
      color     => {
 	 default => 'x000000',
 	 test => $color_test,
-	 description => 'color of curve (x000000)',
+	 description => 'Color of curve (x000000)',
 	 edit_type   => 'entry',
 	 size        => '10'
 	 },
      name      => {
 	 default => '',
 	 test => $words_test,
-	 description => 'name of curve to appear in key',
+	 description => 'Name of curve to appear in key',
 	 edit_type   => 'entry',
 	 size        => '20'
 	 },
@@ -502,21 +509,21 @@
      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 line 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 line styles)',
          edit_type   => 'choice',
          choices     => [0,1,2,3,4,5,6]
          },
      limit     => {
          default     => 'closed',
 	 test        => sub {$_[0]=~/^(closed|x1|x2|y1|y2)$/},
-         description => 'point to fill -- for filledcurves',
+         description => 'Point to fill -- for filledcurves',
          edit_type   => 'choice',
          choices     => ['closed','x1','x2','y1','y2']
          },
@@ -674,9 +681,30 @@
 }
 
 ##-----------------------------------------------------------------font
+my %font_properties =
+    (
+     'classic'    => {
+	 face       => 'classic',
+	 file       => 'DejaVuSansMono-Bold',
+	 printname  => 'Helvetica',
+     },
+     'sans-serif' => {
+	 face       => 'sans-serif',
+	 file       => 'DejaVuSans',
+	 printname  => 'DejaVuSans',
+     },
+     'serif'      => {
+	 face       => 'serif',
+	 file       => 'DejaVuSerif',
+	 printname  => 'DejaVuSerif',
+     },
+     );
+
 sub get_font {
-    my ($size);
+    my ($size, $selected_font);
+
     if ( $Apache::lonplot::plot{'font'} =~ /^(small|medium|large)/) {
+	$selected_font = $font_properties{'classic'};
 	if ( $Apache::lonplot::plot{'font'} eq 'small') {
 	    $size = '5';
 	} elsif ( $Apache::lonplot::plot{'font'} eq 'medium') {
@@ -687,9 +715,9 @@
 	    $size = '9';
 	}
     } else {
-	$size = $Apache::lonplot::plot{'font'};
+	$selected_font = $font_properties{$Apache::lonplot::plot{'fontface'}};
     }
-    return ($size);
+    return ($size, $selected_font);
 }
 
 ##----------------------------------------------------------------- key
@@ -1086,6 +1114,7 @@
 ##------------------------------------------------------- write_gnuplot_file
 sub write_gnuplot_file {
     my ($tmpdir,$filename,$target)= @_;
+    my ($fontsize, $font_properties) =  &get_font();
     my $gnuplot_input = '';
     my $curve;
     my $pt = $Apache::lonplot::plot{'texfont'};
@@ -1119,16 +1148,23 @@
     }
     # set term
     if ($target eq 'web') {
-	$gnuplot_input .= 'set term '.$weboutputformat .' enhanced ';
+	$gnuplot_input .= 'set terminal png enhanced nocrop ';
 	$gnuplot_input .= 'transparent ' if ($Apache::lonplot::plot{'transparent'} eq 'on');
-	$gnuplot_input .= $Apache::lonplot::plot{'font'} . ' ';
-	$gnuplot_input .= 'size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' ';
+	$gnuplot_input .= 'font "'.$Apache::lonnet::perlvar{'lonFontsDir'}.
+	    '/'.$font_properties->{'file'}.'.ttf" ';
+	$gnuplot_input .= $fontsize;
+	$gnuplot_input .= ' size '.$Apache::lonplot::plot{'width'}.','.$Apache::lonplot::plot{'height'}.' ';
 	$gnuplot_input .= "@Colors\n";
 	# set output
 	$gnuplot_input .= "set output\n";
     } elsif ($target eq 'tex') {
-	$gnuplot_input .= "set term postscript eps enhanced $Apache::lonplot::plot{'plotcolor'} solid \"Helvetica\" $pt \n";
-	$gnuplot_input .= "set output \"/home/httpd/perl/tmp/".
+	$gnuplot_input .= "set term postscript eps enhanced $Apache::lonplot::plot{'plotcolor'} solid ";
+	$gnuplot_input .=
+	    'fontfile "'.$Apache::lonnet::perlvar{'lonFontsDir'}.
+	    '/'.$font_properties->{'file'}.'.pfb" ';
+	$gnuplot_input .= ' "'.$font_properties->{'printname'}.'" ';
+	$gnuplot_input .= $fontsize;
+	$gnuplot_input .= "\nset output \"/home/httpd/perl/tmp/".
 	    &unescape($filename).".eps\"\n";
     }
     # cartesian or polar plot?
@@ -1193,11 +1229,11 @@
     # title, xlabel, ylabel
     # titles
     if ($target eq 'tex') {
-        $gnuplot_input .= "set title  \"$title\" font \"Helvetica,".$pt."pt\"\n"  if (defined($title)) ;
-        $gnuplot_input .= "set xlabel \"$xlabel\" font \"Helvetica,".$pt."pt\" \n" if (defined($xlabel));
-        $gnuplot_input .= "set ylabel \"$ylabel\" font \"Helvetica,".$pt."pt\"\n" if (defined($ylabel));
+	$gnuplot_input .= "set title  \"$title\"  font \"".$font_properties->{'printname'}.",".$pt."pt\"\n" if (defined($title)) ;
+	$gnuplot_input .= "set xlabel \"$xlabel\" font \"".$font_properties->{'printname'}.",".$pt."pt\"\n" if (defined($xlabel));
+	$gnuplot_input .= "set ylabel \"$ylabel\" font \"".$font_properties->{'printname'}.",".$pt."pt\"\n" if (defined($ylabel));
     } else {
-        $gnuplot_input .= "set title  \"$title\"  \n"  if (defined($title)) ;
+        $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));
     }
@@ -1243,14 +1279,14 @@
 	$gnuplot_input .= 'set label "'.$label->{'text'}.'" at '.
 	    $label->{'xpos'}.','.$label->{'ypos'}.' '.$label->{'justify'};
         if ($target eq 'tex') {
-            $gnuplot_input .=' font "Helvetica,'.$pt.'pt"' ;
+	    $gnuplot_input .=' font "'.$font_properties->{'printname'}.','.$pt.'pt"' ;
         }
         $gnuplot_input .= $/;
     }
     if ($target eq 'tex') {
         $gnuplot_input .="set size 1,".$Apache::lonplot::plot{'height'}/$Apache::lonplot::plot{'width'}*1.38;
         $gnuplot_input .="\n";
-        }
+    }
     # curves
     $gnuplot_input .= 'plot ';
     for (my $i = 0;$i<=$#curves;$i++) {

--albertel1185832229--