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

sakharuk lon-capa-cvs@mail.lon-capa.org
Thu, 11 Jul 2002 14:40:14 -0000


sakharuk		Thu Jul 11 10:40:14 2002 EDT

  Modified files:              
    /loncom/xml	londefdef.pm 
  Log:
  1. Does correct scaling of any GIF picture even in the case of absence 
  of definition of the size (by author). 2) Small change in table environment
  (I missed & sign in previous version for tables without boundary). 
  
  
Index: loncom/xml/londefdef.pm
diff -u loncom/xml/londefdef.pm:1.68 loncom/xml/londefdef.pm:1.69
--- loncom/xml/londefdef.pm:1.68	Wed Jul  3 11:37:10 2002
+++ loncom/xml/londefdef.pm	Thu Jul 11 10:40:14 2002
@@ -1,8 +1,7 @@
-
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.68 2002/07/03 15:37:10 sakharuk Exp $
+# $Id: londefdef.pm,v 1.69 2002/07/11 14:40:14 sakharuk Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -1286,7 +1285,7 @@
 		    $Apache::londefdef::table[-1]{'vvinc'} = '|';
 		} else {
 		    $Apache::londefdef::table[-1]{'hinc'} = ''; 
-		    $Apache::londefdef::table[-1]{'vinc'} = ''; 
+		    $Apache::londefdef::table[-1]{'vinc'} = '&'; 
 		    $Apache::londefdef::table[-1]{'vvinc'} = '';
 		}
 	    } 
@@ -1336,7 +1335,7 @@
 		if ($alignchar ne '') {
 		    push @ {$Apache::londefdef::table[-1]{'rows'} }, $alignchar;
 		} else {
-		    push @ {$Apache::londefdef::table[-1]{'rows'} }, 'c';
+		    push @ {$Apache::londefdef::table[-1]{'rows'} }, 'l';
 		}
 		push ( @{ $Apache::londefdef::table[-1]{'rowdata'} }, $Apache::londefdef::table[-1]{'hinc'});
 		$Apache::londefdef::table[-1]{'counter_columns'} = -1;
@@ -1421,31 +1420,28 @@
                                         $token->[2]->{'src'};
             my $currentstring = '';
 	    my $width_param = '';
+	    my $height_param = '';
+	    my $scaling = .3;
 
 	    if ($target eq 'web') {
               $currentstring = $token->[4];     
 	    } elsif ($target eq 'tex') {
-	      my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); 
-              my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); 
-	      my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval);
-	      if ($TeXwidth ne '') { 
-		  $width_param = $TeXwidth; 
-	      } elsif ($TeXheight ne '') { 
-		  $width_param = $TeXheight; 
-	      } else {
-		  if ($width ne '') {
-		      $width_param = $width*.3;
-		      if ($width_param <= 900) {
-			  $width_param = '[width='.$width_param.'mm]';
-		      } else {
-			  $width_param = '[width= \textwidth]';
-		      }
-		  }
-	      }
 	      my $src = &Apache::lonxml::get_param('src',$parstack,$safeeval);
 	      $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
+              if ($src=~m/\.(gif|GIF)$/) {
+		  my $gif_file = Apache::File->new($src);
+		  binmode ($gif_file);
+                  my ($buff,$imagesize);
+		  read ($gif_file,$buff,6);
+                  read ($gif_file,$imagesize,4);
+                  my ($xlsb,$xmsb,$ylsb,$ymsb) = split(//,$imagesize);
+                  my $image_width=ord($xlsb)+ord($xmsb)*256;
+                  my $image_height=ord($ylsb)+ord($ymsb)*256;
+		  $width_param = $image_width * $scaling; #default value of the picture's width
+		  $height_param = $image_height * $scaling; #default value of the picture's height
+ 	      }
 	      my $epssrc = $src;
-	      $epssrc =~ s/(\.gif|\.jpg|\.GIF|\.JPG)$/\.eps/;
+	      $epssrc =~ s/(\.gif|\.jpg)$/\.eps/i;
 	      if (not -e $epssrc) {
 		  my $localfile = $epssrc;
 		  $localfile =~ s/.*(\/res)/$1/;	
@@ -1470,8 +1466,7 @@
 		  } else {
 		      $localfile = $src;
 		      $localfile =~ s/.*(\/res)/$1/;	
-		      my $as = &Apache::lonnet::getfile($src);
-		      
+		      my $as = &Apache::lonnet::getfile($src);		      
 		  }
 	      }
 	      my $file;
@@ -1482,17 +1477,29 @@
 	      }
 	      my $newsrc = $src;
 	      $newsrc =~ s/(\.gif|\.jpg)$/\.eps/i;
-		  $file=~s/(\.gif|\.jpg)$/\.eps/i;
+	      $file=~s/(\.gif|\.jpg)$/\.eps/i;
+              #do we have any specified size of the picture?
+	      my $TeXwidth = &Apache::lonxml::get_param('TeXwidth',$parstack,$safeeval); 
+              my $TeXheight = &Apache::lonxml::get_param('TeXheight',$parstack,$safeeval); 
+	      my $width = &Apache::lonxml::get_param('width',$parstack,$safeeval);
+	      if ($TeXwidth ne '') { 
+		  $width_param = $TeXwidth; 
+	      } elsif ($TeXheight ne '') { 
+		  $width_param = $TeXheight/$height_param*$width_param;
+	      } elsif ($width ne '') {
+		  $width_param = $width*$scaling;      
+	      }
+              #where can we find the picture?
 	      if (-e $newsrc) {
 		  if ($path) {
-		      $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics'.$width_param.'{'.$file.'}}';
+		      $currentstring .= '\noindent\graphicspath{{'.$path.'}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';
 		  }
 	      } else {
 		  my $temp_file;
 		  my $filename = "/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat";
 		  $temp_file = Apache::File->new('>>'.$filename); 
 		  print $temp_file "$src\n";
-		  $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics'.$width_param.'{'.$file.'}}';
+		  $currentstring .= '\graphicspath{{/home/httpd/prtspool/}}\fbox{\includegraphics[width='.$width_param.' mm]{'.$file.'}} ';
 	      }
 	    }
 	    return $currentstring;