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

foxr lon-capa-cvs@mail.lon-capa.org
Mon, 14 Mar 2005 23:48:58 -0000


foxr		Mon Mar 14 18:48:58 2005 EDT

  Modified files:              
    /loncom/xml	londefdef.pm 
  Log:
  - Allow image sizing to look in construction space if the image does not exist
    in resource space.
  - Close the image conversion queue file...else the images would not be 
    reliably converted to eps.
  
  
Index: loncom/xml/londefdef.pm
diff -u loncom/xml/londefdef.pm:1.260 loncom/xml/londefdef.pm:1.261
--- loncom/xml/londefdef.pm:1.260	Wed Mar  2 17:26:36 2005
+++ loncom/xml/londefdef.pm	Mon Mar 14 18:48:57 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Tags Default Definition Module 
 #
-# $Id: londefdef.pm,v 1.260 2005/03/02 22:26:36 raeburn Exp $
+# $Id: londefdef.pm,v 1.261 2005/03/14 23:48:57 foxr Exp $
 # 
 #
 # Copyright Michigan State University Board of Trustees
@@ -2495,12 +2495,14 @@
 	if(!$latex_rendering) {
 	    $latex_rendering = "parbox";
 	}
-	&Apache::lonxml::debug("LaTeX rendering = $latex_rendering");
+	&Apache::lonxml::debug("LaTeX rendering = $latex_rendering image file: $src");
 
 	#if original gif/jpg/png file exist do following:
 	my ($path,$file) = &get_eps_image($src);
 	$src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
+	&Apache::lonxml::debug("path = $path file = $file src = $src");
 	if (-e $src) {
+	    &Apache::lonxml::debug("$src exists");
 	    my ($height_param,$width_param)=
 		&image_size($src,0.3,$parstack,$safeeval);
 	    $currentstring .= '\graphicspath{{'.$path.'}}'
@@ -2537,6 +2539,7 @@
 		# $currentstring = '\raisebox{'.$height_param.'mm}{'.$currentstring.'}';
 	    }
 	} else {
+	    &Apache::lonxml::debug("$src does not exist");
 	    #original image file doesn't exist so check the alt attribute
 	    my $alt = 
 		&Apache::lonxml::get_param('alt',$parstack,$safeeval,undef,1);
@@ -2615,6 +2618,7 @@
 	}
 	if ($ctag) {$currentstring=&Apache::edit::rebuild_tag($token);}
     }
+
     return $currentstring;
 }
 
@@ -3756,15 +3760,23 @@
 
 sub image_size {
     my ($src,$scaling,$parstack,$safeeval,$depth,$cis)=@_;
+
     #size of image from gif/jpg/jpeg/png 
-    $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
+    my $ressrc=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
+    if (-e $ressrc) {
+	$src = $ressrc;
+    }
     my $image = Image::Magick->new;
     my $current_figure = $image->Read($src);
     my $width_param = $image->Get('width') * $scaling;;
-    my $height_param = $image->Get('height') * $scaling;;
+    my $height_param = $image->Get('height') * $scaling;
+    &Apache::lonxml::debug("Image magick says: $src :  Height = $height_param width = $width_param");
     undef($image);
     #do we have any specified LaTeX size of the picture?
-    my $toget='TeXwidth'; if ($cis) { $toget=lc($toget); }
+    my $toget='TeXwidth'; 
+    if ($cis) { 
+	$toget=lc($toget); 
+    }
     my $TeXwidth = &Apache::lonxml::get_param($toget,$parstack,
 					      $safeeval,$depth,$cis);
     $toget='TeXheight'; if ($cis) { $toget=lc($toget); }
@@ -3811,29 +3823,39 @@
 
 sub get_eps_image {
     my ($src)=@_;
-    my $orig_src=$src;
+    my $orig_src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1], $src);
+    &Apache::lonxml::debug("get_eps_image: Original image: $orig_src<BR />");
     $src=~s/\.(gif|png|jpg|jpeg)$/\.eps/i;
     $src=&Apache::lonnet::filelocation($Apache::lonxml::pwd[-1],$src);
+    &Apache::lonxml::debug("Filelocation gives; $src <BR />");
     if (! -e $src) {
+	&Apache::lonxml::debug("$src does not exist");
 	if (&Apache::lonnet::repcopy($src) ne 'OK' ) {
+	    &Apache::lonxml::debug("Repcopy of $src failed (1)");
 	    #if replication failed try to find ps file
 	    $src=~s/\.eps$/\.ps/;
+	    &Apache::lonxml::debug("Now looking for $src");
 	    #if no ps file try to replicate it
 	    if (not -e $src &&
 		&Apache::lonnet::repcopy($src) ne 'OK') {
+		&Apache::lonxml::debug("Failed to find or replicate $src");
+
 		#if replication failed try to produce eps file dynamically
 		$src=~s/\.ps$/\.eps/;
 		my $temp_file;
 		open(FILE,">>/home/httpd/prtspool/$ENV{'user.name'}_$ENV{'user.domain'}_printout.dat");
 		my $newsrc=$orig_src;
 		$newsrc =~ s|(.*)/res/|/home/httpd/html/res/|;
+		&Apache::lonxml::debug("queueing $newsrc for dynamic eps production. <BR/>");
 		print FILE "$newsrc\n";
+		close FILE;
 		$src=~s|/home/httpd/html/res|/home/httpd/prtspool|;
 		$src=~s|/home/([^/]*)/public_html/|/home/httpd/prtspool/$1/|;
 	    }
 	}
     }
     my ($path,$file)=($src=~m|(.*)/([^/]*)$|);
+    &Apache::lonxml::debug("get_eps_image returning: $path / $file<BR />");
     return ($path.'/',$file);
 }