[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);
}