[LON-CAPA-cvs] cvs: loncom /homework randomlabel.pm
foxr
lon-capa-cvs@mail.lon-capa.org
Mon, 18 Apr 2005 21:41:52 -0000
foxr Mon Apr 18 17:41:52 2005 EDT
Modified files:
/loncom/homework randomlabel.pm
Log:
Add correct image scaling to labels so that they don't look out of proportion
on 'tex' target.
Index: loncom/homework/randomlabel.pm
diff -u loncom/homework/randomlabel.pm:1.71 loncom/homework/randomlabel.pm:1.72
--- loncom/homework/randomlabel.pm:1.71 Tue Apr 12 17:41:28 2005
+++ loncom/homework/randomlabel.pm Mon Apr 18 17:41:51 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# random labelling tool
#
-# $Id: randomlabel.pm,v 1.71 2005/04/12 21:41:28 foxr Exp $
+# $Id: randomlabel.pm,v 1.72 2005/04/18 21:41:51 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -59,6 +59,7 @@
use Apache::edit;
use Apache::File();
use Apache::Constants qw(:common :http);
+use Image::Magick;
my %args;
my $cgi_id;
@@ -165,7 +166,7 @@
}
return $result;
}
-
+my $scale_factor; # image scale factor.
sub make_eps_image {
my ($bgimg,$parstack,$safeeval,$depth)=@_;
my ($path,$file) = &Apache::londefdef::get_eps_image($bgimg);
@@ -179,6 +180,10 @@
' mm \epsffile{'.$path.$file.
'}\setlength{\unitlength}{1mm}'."\n".' \begin{picture}('.
$width_param.','.$height_param.')(0,-'.$height_param.')'."\n";
+ my $magick = Image::Magick->new;
+ $magick->Read($bgimg);
+ my $initial_width = $magick->Get('width');
+ $scale_factor = $width_param / $initial_width;
return $result;
}
@@ -226,6 +231,24 @@
return $result;
}
+#
+# Utility sub to compute the width of a label.
+#
+sub get_label_width {
+ my $label = shift;
+ &Apache::lonxml::debug("image label = $label");
+ if (-e $label) {
+ &Apache::lonxml::debug("$label exists");
+ } else {
+ &Apache::lonxml::debug("$label does not exist");
+ }
+ my $magick = Image::Magick->new;
+ $magick->Read($label);
+ my $pixel_width = $magick->Get('width');
+ return $pixel_width * $scale_factor;
+
+
+}
sub add_vars {
my ($name,$order,$label,$labelorder,$value,$image,$safeeval) = @_;
if (!defined($name) || $name eq '') { return; }
@@ -309,7 +332,9 @@
} elsif ( $type eq 'image') {
my ($path,$file) = &Apache::londefdef::get_eps_image($label);
my $image_name = $path.$file;
- $result .= '\includegraphics{'
+ my $label_width = get_label_width($label);
+
+ $result .= '\includegraphics[width='.$label_width.'mm]{'
.$image_name."}}\n";
&add_vars($gname,$i,
$Apache::randomlabel::description[$idx_arr[$i]],